2016-08-22 6 views
1

Я пытаюсь оптимизировать свой код 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».

+0

Сколько из этих векторов вы можете поместить в память сразу? –

+0

Длина каждого вектора составляет от 10 до 50 тысяч выборок. –

+1

Это не отвечает на мой вопрос ... Кроме того, почему вы уверены, что узким местом является «histcounts»? Пожалуйста, покажите нам какой-то код, включая то, что вы уже пробовали в отношении 'histcountsmex'. –

ответ

0

Добавить histcountsmex.p в ваш текущий рабочий путь. Он расположен в C: \ ProgramFiles \ MATLAB \ R2017b \ toolbox \ matlab \ datafun \ private \ histcountsmex.p

 Смежные вопросы

  • Нет связанных вопросов^_^