search - MATLAB:在向量和向量数组之间计算均方根误差的最快方法

标签 search matlab vector find

我有一个关于计算单个向量和向量数组之间 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/

相关文章:

matlab - 创建平衡的双向脉冲对(也称为 Lilly Wave)并以倍频程/matlab 更改其样本量

javascript - 如何让 Leaflet Search 实际搜索

java - 在文本文件中搜索字符串?

search - 在Elasticsearch中提升具有特定标签的匹配文档

matlab - 如何在matlab中进行曲线平滑?

c++ - Regionprops 与 findContours

c++ - 调整 std::vector 的大小是否可能会降低其容量?

c++ - 使用多个条件对 C++ 字符串进行排序

python - Python 中的高效矢量/点类

python3如何找到一个字节串的最大前缀是另一个字节的子串