Matlab错误:在赋值A(I)= B中,B和I中的元素数必须相同

时间:2012-12-12 15:48:00

标签: matlab matlab-guide

我有一个大小为9 b的数组,我正在尝试为其分配值。

r=a(7)+u*(b(8))+v*(b(9))
b(7)=r

我知道r确实是1X1值,但对于b(7)=r我还是得到了:

Error in ==> myFunction at 37
    b(7)=r

In an assignment  A(I) = B, the number of elements in B and
I must be the same.

以下是myFunction的代码(带有%的for循环是我喜欢的工作方式)

function b=myFunction(u,v,a)
    b(8)=0;
    b(9)=0
    r=a(7)+u*(b(8))+v*(b(9));
    size(a)
    size(b)
    size(r)
    b(7)=r
    r=a(6)+u*b(6+1)+v*b(6+2);
    b(6)=r;
    b(5)=a(5)+u*b(5+1)+v*b(5+2);
    b(4)=a(4)+u*b(4+1)+v*b(4+2);
    b(3)=a(3)+u*b(3+1)+v*b(3+2);
    b(2)=a(2)+u*b(2+1)+v*b(2+2);
    b(1)=a(1)+u*b(1+1)+v*b(1+2);
    %for i=7:-1:1
    %    b(i)=a(i)+u*b(i+1)+v*b(i+2);
    %end
end

2 个答案:

答案 0 :(得分:1)

我无法重现你的问题。下面的代码适合我。您是使用标量myFunction()u来调用v吗?

function myTestFunction()

a = 1:7;
u = 3;
v = 4;
b = myFunction(u,v,a)

end

function b=myFunction(u,v,a)
    b(8)=0;
    b(9)=0
%     r=a(7)+u*(b(8))+v*(b(9));
%     size(a)
%     size(b)
%     size(r)
%     b(7)=r
%     r=a(6)+u*b(6+1)+v*b(6+2);
%     b(6)=r;
%     b(5)=a(5)+u*b(5+1)+v*b(5+2);
%     b(4)=a(4)+u*b(4+1)+v*b(4+2);
%     b(3)=a(3)+u*b(3+1)+v*b(3+2);
%     b(2)=a(2)+u*b(2+1)+v*b(2+2);
%     b(1)=a(1)+u*b(1+1)+v*b(1+2);
    for i=7:-1:1
       b(i)=a(i)+u*b(i+1)+v*b(i+2);
    end
end

使用以下输出

b =

     0     0     0     0     0     0     0     0     0


b =

  Columns 1 through 8

       29128        7281        1821         454         114          27           7           0

  Column 9

           0

答案 1 :(得分:0)

该错误意味着您正在尝试将矢量或矩阵保存到不正确大小的空间中。

键入a(1) = X;时,X必须是scalar或单个值。您在此问题的评论中报告的尺寸表明您尝试将vector分配给scalar。您需要执行b(7) = r(a_single_index)

之类的操作