how to find mode without built-in mode function?
7 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
any suggestions how to write a function that finds a vectors mode WITHOUT using the built-in mode function?
0 Kommentare
Antworten (3)
the cyclist
am 9 Jun. 2013
You could use the hist() function, and use the value that has the highest count.
5 Kommentare
the cyclist
am 7 Jan. 2021
I think this is because by default, hist() chooses the bin centers by an algorithm that does not guarantee they are in the original vector. Try this instead:
[counts, centers] = histcounts(YourVector,[unique(YourVector) Inf]);
[~, maxidx] = max(counts);
mode_value = centers(maxidx);
the cyclist
am 7 Jan. 2021
I realized that that code will not find all the modes, if there are multiple. This code should:
[counts, centers] = histcounts(YourVector,[unique(YourVector) Inf]);
max_value = max(counts);
max_idx = (counts==max_value);
mode_values = centers(max_idx)
Walter Roberson
am 9 Jun. 2013
unique(), take the third output, put it through accumarray(), find the max()
0 Kommentare
Roger Stafford
am 9 Jun. 2013
Bearbeitet: Roger Stafford
am 9 Jun. 2013
If you are not allowed to use the 'mode' function, it sounds as though you must use only more primitive functions. Are you allowed to do the following with v as the given column vector?
u = sort(v);
f = find([true;diff(u)~=0;true]);
[~,ix] = max(diff(f));
m = u(f(ix)); % m is most frequent value occurring in v
(Corrected)
5 Kommentare
Rik
am 6 Jan. 2021
That depends on the dimensions of v. If it is a column vector this runs without error.
v = [9;4;2;4;9;2;4];
u = sort(v);
[true;diff(u)~=0;true]
v = [9;4;2;4;9;2;4];
v = v.';
u = sort(v);
[true;diff(u)~=0;true]
Louise Wade
am 7 Jan. 2021
Bearbeitet: Louise Wade
am 7 Jan. 2021
I'll try and transpose my row vector into a column vector and try again. If there are multiple values as the mode, would this cause an issue?
EDIT: It seems to be working for me. Thank you so much for helping. All I needed to do was transpose the array.
Siehe auch
Kategorien
Mehr zu Creating, Deleting, and Querying Graphics Objects finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!