2017-04-04 115 views
0

我有两个矩阵要被减去。我们来看下面的代码。执行'@minus'时出现bsxfun错误

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

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

我得到的错误,说两个输入数组的

非单维度必须相互

任何想法,为什么匹配这个错误? 谢谢!

回答

4

您试图对两列向量应用bsxfun,而您应将其应用于一行和一列向量。

bsxfun输入应具有不同 singelton尺寸(size(arr,dim) == 1)。在你的例子size(A) = [5472,1]size(B) = [1,3]这是适当的输入(A的singelton维度是2和B的singelton维度是1),但是当你做B(:) - B的singelton维度变成2,如A's,它抛出一个错误。

做:

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

C= bsxfun(@minus, A, B) 
+0

无法相信我做出这样的错误!谢谢! –