2011-03-09 234 views
1

我打字一些代码为一类,但我每次运行该功能时,我得到了同样的错误:如何解决这个MATLAB“矩阵尺寸必须一致”的错误?

??? 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:5y1被定义为-5:0.1:5,但是我被分配来定义他们的。我知道exp不是一个函数,因为我在文件的其他地方使用了它。

编辑#2:

确定。因此,如果我不能使用我当前的x和y,那么无论如何我可以将它们定义为使它们保持在这些边界上,同时仍然使它们具有相同的大小?

回答

3

UPDATE:

OK,现在你已经证实了你的变量x2y1包含的元素不同的数字,你有一对夫妇的解决方案可供选择:

  1. 对于每个变量,您可以使用功能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个元素的阵列),它只会被在值的相应对中x2y1(例如x2(1)y1(1)评价,x2(50)y1(50)等)。

  2. 如果你宁愿评估f32独特的对点上的x2y1范围,你应该使用功能MESHGRID生成你的价值观。这也将允许你有超过所述范围的点的不同号码x2y1和:

    [x2,y1] = meshgrid(0:0.1:5,-5:0.1:5); 
    

    上面将创建x2y1和作为101逐51阵列,使得f32也将是一个101-在给定的值范围内的所有点上评估-51阵列。

以前的答案:

测试的第一件事情是,如果你是把代入公式的变量大小相同或标量值,他们将不得不因为你正在使用元素明智的运营商,如.^.*。对于第一个方程可知,当你这样做你会得到什么输出:

size(x2) 
size(y1) 

如果他们给了相同的结果,或任为[1 1],那么这是不是你的问题。

接下来要检查的是,是否通过创建名称为exp的变量来影响EXP函数。如果在命令窗口中将代码作为脚本运行,请键入whos并查看是否显示名为exp的变量。如果是这样,您需要删除或重命名它,以便您可以使用函数 EXP。

0

x2y1的大小不同,您如何看待-x2.^2-y1.^2x2=0:0.1:5有五十个左右,而y1=-5:0.1:5有一百个左右的条目。

相关问题