所以,我試圖優化程序我做了,和兩個明顯的低效我與分析器的幫助下發現的有這些:更有效的替代品,以最大值和最小值
if (min(image_arr(j,i,:)) > 0.1)
image_arr(j,i,:) = image_arr(j,i,:) - min(image_arr(j,i,:));
end
%"Grounds" the data, making sure the points start close to 0
叫4990464次,共計58.126秒,佔編譯時間的21.8%。
[max_mag , max_index] = max(image_arr(j, i, :));
%finds the maximum value and its index in the set
被稱爲4990464次,總共需要50.900s,佔編譯時間的19.1%。
是否有任何替代最大和最小,我可以在這裏使用,這將更有效?
沒有辦法減少這些行被調用的次數。
充分涵蓋這正是我所需要的!但是,使用第一個時出現錯誤(尚未實現第二個)。 image_arr是[X,Y,N]矩陣,而min(image_arr,[],3)返回[X,Y]矩陣,所以相減會導致錯誤: 使用 - 時出現錯誤矩陣尺寸必須一致。 我們如何改變語法來解決這個問題? – NGXII 2014-09-18 01:02:46
@ user3817992:嘗試'bsxfun(@minus,image_arr,min(image_arr,[],3))' – 2014-09-18 01:09:22
完美地工作!我會在少數情況下最大限度地實施您的建議,並且可能會或可能不會遇到問題,但這絕對是最佳答案。 – NGXII 2014-09-18 02:02:49