中国汽车工程师之家--聚集了汽车行业80%专业人士 

论坛口号:知无不言,言无不尽!QQ:542334618 

本站手机访问:直接在浏览器中输入本站域名即可 

  • 2762查看
  • 0回复

matlab计算中未定义变量问题。求助

[复制链接]


该用户从未签到

发表于 11-6-2011 10:54:48 | 显示全部楼层 |阅读模式

汽车零部件采购、销售通信录       填写你的培训需求,我们帮你找      招募汽车专业培训老师


Matlab7.0.1版本:
   ……
    for po=1:nr  % nr是变化的
        zx(po)=x+r(po)*cos(xita+sum(newfy(1:po-1)));   % 极坐标转为直角坐标
        zy(po)=y+r(po)*sin(xita+sum(newfy(1:po-1)));
    end
……
           finalzx{cum,:}=zx;     % 将zx,zy赋予finalzx,finalzy中的cum行
           finalzy{cum,:}=zy;     
……
    for j=1:cum-1
        mj=polyarea(finalzx{j,:},finalzy{j,:})   得到j=1时,finalzx,finalzy围成多边形的面积
    end
    zmj=sum(mj)
    if zmj>S(1)
        avr=D(2)/2;
    elseif zmj>(S(1)+S(2))
        avr=D(3)/2;
    elseif zmj>(S(1)+S(2)+S(3))
        break;
    else
        avr=D(1)/2;
    end


运行之后,出现这个:
??? Undefined function or variable "mj".
Error in ==> Pol_concrete2d_nopk at 113
    zmj=sum(mj)

认为是mj=polyarea(finalzx{j,:},finalzy{j,:})   公式中,finalzy{j,:} 问题。
但是:
>> a=[2 3 4 5 8 7];
>> b=[2 3 5 6];
>> c=[3 4 6 7 8 9 8 3 4];
>> final{1,:}=a;
>> final{2,:}=b;
>> final{3,:}=c;
>> final
final =
    [1x6 double]
    [1x4 double]
    [1x9 double]
>> final{2,:}
ans =
     2     3     5     6

a=polyarea([2 4 4 2],[2 2 5 5])
a =
     6
表明是正确的。

不知道是什么原因,求高手帮忙解答。。


该用户从未签到

发表于 21-4-2025 16:07:32 | 显示全部楼层
从您的代码片段来看,遇到的主要问题是关于变量定义的问题。在使用 finalzx 和 finalzy 之前,您可能需要先初始化它们作为数组,特别是如果您希望在后续的代码中循环添加值。如果这两个变量未预先定义,尝试向它们分配值时会导致错误。这里是一些可能的解决方案:

首先确保 finalzx 和 finalzy 在使用前已经定义,例如作为合适大小的矩阵。可以在循环之前添加如下语句:

  1. matlab<br>finalzx = zeros(size(nr), 1); % 预定义一个与nr大小相同的向量<br>finalzy = zeros(size(nr), 1); % 预定义一个与nr大小相同的向量
复制代码

或者,如果您的数据结构是基于行的(cum代表行数),那么您可能需要这样定义:

  1. matlab<br>finalzx = cell(1, cum); % 预定义一个基于行的cell数组,大小为cum x 1<br>finalzy = cell(1, cum); % 同上
复制代码

在循环内部,当您想将 zx 和 zy 的值添加到 finalzx 或 finalzy 时,您需要使用正确的索引(如果这些是基于cell数组的)。您当前的代码似乎试图将整个数组赋值给特定的行,这在MATLAB中并不直接支持。您需要逐个元素地添加值。例如:

  1. matlab<br>finalzx{cum}(po) = zx(po); % 将当前zx的值添加到finalzx的第cum行的相应位置<br>finalzy{cum}(po) = zy(po); % 同上操作于finalzy的第cum行
复制代码

请根据您的实际需求调整这些建议。如果这些解决方案无法解决您的问题,请提供更多的上下文信息或完整的代码片段以便更准确地诊断问题所在。
回复 支持 反对

使用道具 举报

快速发帖

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

GMT+8, 29-8-2025 00:44 , Processed in 0.355200 second(s), 32 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.