how to find mode without built-in mode function?
조회 수: 6 (최근 30일)
이전 댓글 표시
any suggestions how to write a function that finds a vectors mode WITHOUT using the built-in mode function?
댓글 수: 0
답변 (3개)
the cyclist
2013년 6월 9일
You could use the hist() function, and use the value that has the highest count.
댓글 수: 5
the cyclist
2021년 1월 7일
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
2021년 1월 7일
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
2013년 6월 9일
unique(), take the third output, put it through accumarray(), find the max()
댓글 수: 0
Roger Stafford
2013년 6월 9일
편집: Roger Stafford
2013년 6월 9일
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
Rik
2021년 1월 6일
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
2021년 1월 7일
편집: Louise Wade
2021년 1월 7일
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.
참고 항목
카테고리
Help Center 및 File Exchange에서 Creating, Deleting, and Querying Graphics Objects에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!