Ich versuche, meinen MATLAB-Code zu optimieren. Mein Code erfordert die Verwendung von histcounts
Funktion über eine Million Vektoren in einer For-Schleife. Was ich tun möchte, ist direkt histcountsmex
anstelle von histcounts
zu verwenden. Kann jemand vorschlagen, wie man das macht? Dies ist meine Funktion:Verwenden von histcountsmex anstelle von 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
Nun, wenn ich Profiler laufen, sagt es, dass 34 Sekunden auf der ‚histcounts‘ Funktion ausgegeben wird, aber 14 Sekunden ausgegeben wird auf ‚histcountsmex‘.
Wie viele dieser Vektoren können Sie in Arbeitsspeicher auf einmal? –
Die Länge jedes Vektors beträgt zwischen 10 und 50.000 Abtastungen. –
Das beantwortet meine Frage nicht ... Auch warum sind Sie überzeugt, dass der Flaschenhals "Histogramme" ist? Bitte zeigen Sie uns einen Code, einschließlich was Sie bereits in Bezug auf 'histcountsmex' versucht haben. –