-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または単一の値である必要があります。この質問のコメントで報告しているサイズは、 を に割り当てようとしていることを示唆していvectorますscalar。次のようなことをする必要がありますb(7) = r(a_single_index)

于 2012-12-12T16:13:38.293 に答える