1
私はMATLABコードを最適化しようとしています。私のコードでは、forループの百万を超えるベクトルの機能をhistcounts
が使用する必要があります。私がしたいのはhistcounts
の代わりにhistcountsmex
を直接使うことです。誰もそれを行う方法を提案することはできますか? これは私の関数である:histcountsの代わりにhistcountsmexを使用する
function th = sndmode(mh)
% this function will find the threshold
% the mode of the function that is not zero
[count, centers]=histcounts(mh,sort((mh))); % find the most repeated elements
[~, indxs]=sort(count,'descend'); % sort the result
centers=centers(indxs);
if centers(1)==0 % determine the first nonzero mode
th=centers(2);
else
th=centers(1);
end
end
私はプロファイラを実行すると、それは34秒が「histcounts」関数に費やされているが、14秒が「histcountsmex」に費やされているという。
これらのベクトルのうち、どれくらいの数を一度にメモリに収めることができますか? –
各ベクトルの長さは10〜50,000サンプルです。 –
それは私の質問に答えることはできません...また、なぜボトルネックが「ヒストカウント」であると確信していますか? 'histcountsmex'について既に試したことを含め、いくつかのコードを見せてください。 –