我描述了我的代码并发现这个特定的功能花费了太多时间。关于如何改进此代码的任何建议?
function s = compute_distance_hist(h1,h2)
s = sum(sum(sum(sqrt(h1).*sqrt(h2))));
此函数计算直方图距离。
答案 0 :(得分:5)
您可以通过在最内部括号中执行sqrt(h1.*h2)
来保存一个平方根。
答案 1 :(得分:2)
更优雅的方式是
sum( sqrt( h1(:).*h2(:) ) )
我不确定它是否更快......
还有一件事,如果麻烦的来源是compute_distance_hist
被调用多次,你可能想尝试将其转换为函数句柄而不是显式调用它。
例如,而不是
while someCondition
% computations...
s = compute_distance_hist( a, b );
% more computations
end
怎么样
compute_distance_hist = @( h1, h2 ) sum( sqrt( h1(:).*h2(:) ) );
while someCondition
% computation
s = compute_distance_hist( a, b );
% more computations
end