-7

我有一个大小为 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
4

2 回答 2

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
于 2012-12-12T16:22:34.160 回答
0

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

当您键入a(1) = X;X 时,必须是一个scalar或单个值。您在有关此问题的评论中报告的大小表明您正在尝试将 a 分配vector给 a scalar。你需要做类似的事情b(7) = r(a_single_index)

于 2012-12-12T16:13:38.293 回答