Я пытаюсь оптимизировать свой код MATLAB. Мой код требует использования функции histcounts
над миллионом векторов для цикла. То, что я хочу сделать, - это напрямую использовать histcountsmex
вместо histcounts
. Может ли кто-нибудь предложить, как это сделать? Это моя функция:Использование histcountsmex вместо histcounts
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 тысяч выборок. –
Это не отвечает на мой вопрос ... Кроме того, почему вы уверены, что узким местом является «histcounts»? Пожалуйста, покажите нам какой-то код, включая то, что вы уже пробовали в отношении 'histcountsmex'. –