我有一个关于计算单个向量和向量数组之间 RMSE 的最快方法的问题。具体来说,我有一个代表一个点的向量 A,并且希望在点列表 B 中找到 A 最接近的索引。现在我正在使用:
tempmat = bsxfun(@minus,A,B);
tempmat1 = sqrt(sum(tempmat.^2,2);
index = find(tempmat1 == min(tempmat1));
计算索引大约需要 0.058 秒。 MATLAB 中有没有更快的方法来做到这一点?我确实执行了数百万次这种计算。
非常感谢您的阅读, 乔
最佳答案
tempmat = bsxfun(@minus,A,B);
tmpmat1 = sum(tempmat.^2,2);
[m,index] = min(tempmat1);
m = sqrt(m); %# optional, only if you need the actual numerical value
这可以避免在整个数组上计算sqrt
,因为平方差的最小值将具有相同的索引。它还使用 min
的第二个输出来避免 find
的第二次传递。
关于search - MATLAB:在向量和向量数组之间计算均方根误差的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8316916/