Matlab 我如何解决这个问题;矩阵尺寸必须一致”;错误?
我正在为一个类键入一些代码,但每次运行该函数时都会出现相同的错误:Matlab 我如何解决这个问题;矩阵尺寸必须一致”;错误?,matlab,matrix,dimensions,Matlab,Matrix,Dimensions,我正在为一个类键入一些代码,但每次运行该函数时都会出现相同的错误: ??? Error using ==> plus Matrix dimensions must agree. Error in ==> Test at 6 f32=3.*exp((-x2.^2-y1.^2)./3); 我知道问题是一个简单的索引错误,但我似乎在任何地方都找不到它。有人能帮我吗 此外,我对以下代码行也有同样的问题: f34=(exp(-0.3./x2))./(log(y2).*sqrt(x2));
??? Error using ==> plus
Matrix dimensions must agree.
Error in ==> Test at 6
f32=3.*exp((-x2.^2-y1.^2)./3);
我知道问题是一个简单的索引错误,但我似乎在任何地方都找不到它。有人能帮我吗
此外,我对以下代码行也有同样的问题:
f34=(exp(-0.3./x2))./(log(y2).*sqrt(x2));
编辑#1:
x2
被定义为0:0.1:5
,y1
被定义为-5:0.1:5
,但这就是我分配给他们的定义。我知道exp不是一个函数,因为我在文件的其他地方使用过它
编辑#2:
嗯。因此,如果我不能使用当前的x和y,我是否可以定义它们,使它们保持在这些边界上,同时保持相同的大小?更新: 好的,既然您已经确认变量
x2
和y1
包含不同数量的元素,那么您可以从以下几种解决方案中进行选择:
x2 = linspace(0,5,101); %# 101 values spanning the range 0 to 5
y1 = linspace(-5,5,101); %# 101 values spanning the range -5 to 5
但是,当您计算结果时,f32
(也将是一个101元素数组),它将仅在x2
和y1
中的相应值对进行计算(例如x2(1)
和y1(1)
,x2(50)
和y1(50)
等)x2
和y1
范围内的每个唯一点对上计算f32
,则应使用函数生成值。这也将允许您在x2
和y1
的范围内拥有不同的点数:
[x2,y1] = meshgrid(0:0.1:5,-5:0.1:5);
上面将创建x2
和y1
作为101-by-51数组,这样f32
也将是在给定值范围内的所有点上评估的101-by-51数组^
和*
之类的元素运算符。对于第一个等式,请参见执行此操作时得到的输出:
size(x2)
size(y1)
如果它们给出相同的结果,或者是[11]
,那么这不是您的问题
接下来要检查的是您是否通过创建名为
exp
的变量来隐藏函数。如果在命令窗口中以脚本形式运行代码,请键入并查看是否显示名为exp
的变量。如果是,您需要删除或重命名它,以便使用函数EXP.当x2
和y1
的大小不同时,您希望-x2.^2-y1.^2
如何工作x2=0:0.1:5
有大约50个实体,而y1=-5:0.1:5
有大约100个条目