执行“@minus”时出现 bsxfun 错误

bsxfun error when perform '@minus'

我有两个矩阵要相减。让我们看看下面的代码。

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

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

我得到的错误是

Non-singleton dimensions of the two input arrays must match each other

知道为什么会出现这个错误吗? 谢谢!

您正在尝试将 bsxfun 应用于两个列向量,而您应该将其应用于一行和一列向量。

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

做:

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

C= bsxfun(@minus, A, B)