我有一个数据集,X即m x 2,三个向量存储在一个矩阵C = [c1'; c2'; c3']中,即3 x 2。我正在尝试对我的代码进行矢量化,该代码为 中的每个数据点找到最接近X的向量C(平方距离)。我想从 inC的每个向量(行)中减去每个向量(行)X,从而得到的元素和 的元素之间的差异m x 6或矩阵。我当前的实现一次只做一行:3m x 2XCX
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
有什么想法可以“超级广播”这两个矩阵之间的减法运算吗?