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个条目