元素索引

时间:2013-10-30 19:35:07

标签: matlab

我有一个函数的以下for-loop部分:

for i=1:5
for j=1:2
m=x(i)-c(j);
end
end

作为对包含上述代码的函数的调用,我为two传递了c个值。假设传递的值分别为(3,5)c1的{​​{1}}。

正如您在上面c2中看到的那样,for-loop,nanely,cc(1)都有两个值。

对于我上面的c(2)3值,如何将它们分别分配给5c(1)

例如,当我执行以下操作时:

c(2)

其中c(1)=center1; c(2)=center2; center1表示函数的传递值,我收到以下错误:

center2

1 个答案:

答案 0 :(得分:2)

看起来center1不是标量。打印出值或使用isscalar进行检查。这有效:

c(1) = 1;

但这不会:

c(1) = [1 2];

此外,您的双for循环毫无意义,因为您在每次迭代时都会覆盖m的值。想必你里面有更多的东西。但是,您可以使用bsxfun创建一个矩阵m而不使用任何for循环:

x = rand(1,5);
c = rand(1,2);
m = bsxfun(@minus,x(:),c(:).')

这导致m是5乘2的矩阵。如果您更喜欢2乘5矩阵,则可以使用bsxfun(@minus,x(:).',c(:))