0

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

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

作为对包含上述代码的函数的调用,我two传递c. 假设传递的值分别是(3,5)forc1c2

正如你在for-loop上面看到的,我将有两个值c,nanelyc(1)c(2)

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

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

c(1)=center1;
c(2)=center2;

其中center1center2表示传递给函数的值,我收到以下错误:

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

Error in functionName (line 32)
    c(1)=center1;
4

1 回答 1

2

它看起来center1不是一个标量。打印出该值或用于isscalar检查它。这有效:

c(1) = 1;

但这不会:

c(1) = [1 2];

此外,您的双for循环没有任何意义,因为您m在每次迭代时都覆盖了 的值。大概你里面有更多的东西。但是,您可以使用以下方法创建一个m没有任何for循环的矩阵bsxfun

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

这导致m成为一个 5×2 矩阵。bsxfun(@minus,x(:).',c(:))如果您喜欢 2×5 矩阵,则可以使用。

于 2013-10-30T19:44:56.557 回答