我正在为类输入一些代码,但每次运行该函数时都会出现同样的错误:
??? 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
,但我已将其定义为将其定义为{{1}}。而且我知道exp不是函数,因为我在我的文件中的其他地方使用过它。
编辑#2:
行。所以,如果我不能使用我当前的x和y,那么无论如何我可以定义它们以保持它们在这些边界上,同时仍然使它们具有相同的大小?
答案 0 :(得分:4)
<强>更新强>
好了,既然您已确认变量x2
和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
和y1
中的相应值对进行评估(例如x2(1)
和y1(1)
,x2(50)
和y1(50)
等。)
如果您希望在f32
和x2
范围内的每个唯一一对点评估y1
,则应使用函数MESHGRID生成您的值。这样您还可以在x2
和y1
的范围内获得不同数量的点数:
[x2,y1] = meshgrid(0:0.1:5,-5:0.1:5);
以上将创建x2
和y1
作为101 x 51阵列,这样f32
也将是在给定的所有点上评估的101 x 51阵列价值范围。
上一个回答:
要测试的第一件事是,如果要放入等式中的所有变量都具有相同的大小或标量值,那么它们必须是这样的,因为您使用的是元素方式运算符,如.^
和{{ 1}}。对于第一个等式,请查看执行此操作时得到的输出:
.*
如果他们给出相同的结果,或者size(x2)
size(y1)
,那么那不是你的问题。
接下来要检查的是,您是否通过名称[1 1]
创建变量来隐藏EXP函数。如果您在命令窗口中将代码作为脚本运行,请键入whos
并查看名为exp
的变量是否显示。如果是,则需要删除或重命名,以便您可以使用功能 EXP。
答案 1 :(得分:0)
当-x2.^2-y1.^2
和x2
大小不同时,您期望y1
如何工作? x2=0:0.1:5
有五十个左右,而y1=-5:0.1:5
有一百个左右的条目。