执行'@minus'时出现bsxfun错误

时间:2017-04-04 08:53:04

标签: matlab bsxfun

我要减去两个矩阵。我们来看下面的代码。

A=rand(5472,1);
B=rand(1,3);

C= bsxfun(@minus, A, B(:))

我收到错误说

  

两个输入数组的非单例维度必须相互匹配

知道这个错误的原因吗? 谢谢!

1 个答案:

答案 0 :(得分:4)

你试图在两个列向量上应用bsxfun,而你应该将它应用于一行和一列向量。

bsxfun输入应具有不同的 singelton维度(size(arr,dim) == 1)。在您的示例size(A) = [5472,1]size(B) = [1,3]中,这是适当的输入(A的singelton维度为2而B的singelton维度为1),但是当你做B(:)时1}} - B的singelton维度变为2,就像A一样,会抛出错误。

做的:

A=rand(5472,1);
B=rand(1,3);

C= bsxfun(@minus, A, B)