我分析了我的代码,发现这个特定的功能花费了太多时间。关于如何改进此代码的任何建议?
function s = compute_distance_hist(h1,h2)
s = sum(sum(sum(sqrt(h1).*sqrt(h2))));
此函数计算直方图距离。
我分析了我的代码,发现这个特定的功能花费了太多时间。关于如何改进此代码的任何建议?
function s = compute_distance_hist(h1,h2)
s = sum(sum(sum(sqrt(h1).*sqrt(h2))));
此函数计算直方图距离。
sqrt(h1.*h2)
您可以通过在最内括号中执行来节省一个平方根 。
更优雅的方式是
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