我正在为一个类输入一些代码,但每次运行该函数时都会遇到相同的错误:
??? 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));
EDIT #1:
x2
定义为0:0.1:5
and y1
定义为-5:0.1:5
,但这就是我被指派来定义它们的。我知道 exp 不是一个函数,因为我在文件的其他地方使用了它。
EDIT #2:
好的。因此,如果我不能使用当前的 x 和 y,我是否可以定义它们以将它们保持在这些边界内,同时仍然使它们具有相同的大小?
UPDATE:
好的,现在您已经确认了您的变量x2
and y1
包含不同数量的元素,您有几种解决方案可供选择:
-
对于每个变量,您可以使用该函数在各自的范围内创建一组值LINSPACE。例如:
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
and y1
(e.g. x2(1)
and y1(1)
, x2(50)
and y1(50)
, etc.).
-
如果你更愿意评价f32
at every范围内的唯一一对点x2
and y1
,你应该使用该函数MESHGRID产生你的价值观。这也将允许您在范围内拥有不同数量的点数x2
and y1
:
[x2,y1] = meshgrid(0:0.1:5,-5:0.1:5);
以上将创建x2
and y1
作为 101×51 数组,这样f32
也将是一个 101×51 数组,在给定值范围内的所有点处进行评估。
之前的回答:
首先要测试的是,您放入方程中的所有变量是否具有相同的大小或标量值,因为您使用的是逐元素运算符,所以它们必须是相同的.^
and .*
。对于第一个方程,看看执行此操作时会得到什么输出:
size(x2)
size(y1)
如果他们给出相同的结果,或者其中一个是[1 1]
,那么这不是你的问题。
接下来要检查的是您是否已经对EXP通过名称创建变量来实现函数exp
。如果您在命令窗口中将代码作为脚本运行,请键入whos看看是否有一个名为exp
出现。如果存在,您需要将其删除或重命名,以便可以使用function EXP.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)