我要减去两个矩阵。我们来看下面的代码。
A=rand(5472,1);
B=rand(1,3);
C= bsxfun(@minus, A, B(:))
我收到错误说
两个输入数组的非单例维度必须相互匹配
知道这个错误的原因吗? 谢谢!
答案 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)