我有一个数据集,X
即m x 2
,三个向量存储在一个矩阵C = [c1'; c2'; c3']
中,即3 x 2
。我正在尝试对我的代码进行矢量化,该代码为 中的每个数据点找到最接近X
的向量C
(平方距离)。我想从 inC
的每个向量(行)中减去每个向量(行)X
,从而得到的元素和 的元素之间的差异m x 6
或矩阵。我当前的实现一次只做一行:3m x 2
X
C
X
for i = 1:size(X, 1)
diffs = bsxfun(@minus, X(i,:), C); % gives a 3 x 2 matrix result
[~, idx(i)] = min(sumsq(diffs), 2); % returns the index of the closest vector
% in C to the ith vector in X
end
我想摆脱这个for
循环,只是矢量化整个事情,但是bsxfun(@minus, X, C)
在 Octave 中给了我一个错误:
错误:bsxfun:尺寸不一致:300x2 和 3x2
有什么想法可以“超级广播”这两个矩阵之间的减法运算吗?