我有一个大小为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
答案 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)