Determining Ties in Mode of Matrix
5 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Let's say I have a matrix
A = [1 2 3 4
2 3 4 1
1 2 3 4
2 5 5 1]
and I take the mode of A
[M, F, C] = mode(A)
How would I go about selecting only the values in M where there was a tie and then replacing only those values? I've read that
cellfun('length',C) > 1
would tell you what values in M would have a tie, but I'm not sure how to incorporate that into replacing only the certain values where ties occurred.
0 Kommentare
Antworten (1)
Image Analyst
am 13 Feb. 2016
This will do it:
A = [1 2 3 4
2 3 4 1
1 2 3 4
2 5 5 1]
% Find the mode of A. It will be 1.
modeOfA = mode(A(:))
% Find elements where the mode is
modeLocations = A == modeOfA
% Replace mode with 99
A(modeLocations) = 99
If you want it done all in one cryptic, harder to follow, but compact single line of code, you can do this:
A(A==mode(A(:))) = 99
3 Kommentare
Image Analyst
am 13 Feb. 2016
Tell us what you would like to see as an output. What do you want to replace the mode value with?
If it's 99, then try this code:
A = [1 2 3 4
2 3 4 1
1 2 3 4
2 5 5 1]
for col = 1 : size(A, 2)
thisColumn = A(:, col);
% Find the mode of A. It will be 1.
modeOfA = mode(thisColumn)
% Find elements where the mode is
modeLocations = thisColumn == modeOfA
% Replace mode with 99
A(modeLocations, col) = 99
end
Siehe auch
Kategorien
Mehr zu Pattern Recognition and Classification 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!