Find the last position of maximum value in a Matrix
39 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
NoNo
le 27 Nov 2013
Réponse apportée : Bradley Stiritz
le 31 Jan 2021
Hello, I try to find the position and the value of a maximum in a Matrix (or in a vektor). There are several positions for the maximas and the function [C,I] = max(...) just return the first, but I need the last position. exists a method to find the last maximum?
0 commentaires
Réponse acceptée
Wayne King
le 27 Nov 2013
Modifié(e) : Wayne King
le 27 Nov 2013
You can use find() with the 'last' argument:
x = randi([1 10],100,1);
maxval = max(x);
I = find(x==maxval,1,'last');
Or for a matrix:
X = randi([1 10],20,20);
maxval = max(X(:));
[I,J] = find(X==maxval,1,'last');
0 commentaires
Plus de réponses (2)
Azzi Abdelmalek
le 27 Nov 2013
x=[1 2 3 0 3];
[ii,jj]=max(fliplr(x));
idx=numel(x)-jj+1
0 commentaires
Bradley Stiritz
le 31 Jan 2021
@Wayne, is your solution vulnerable to rounding error, with floating-point input? In general, might it not be safer to use something like the following--?
epsilon = 0.0001;
I = find(abs(x-maxval)<epsilon,1,'last');
@Azzi, very clever solution but is it not hard-coded for row vectors? In order to handle column vectors as well, shouldn't the 2nd line be something like the following--?
[ii,jj]=max(fliplr(x(:)'));
0 commentaires
Voir également
Catégories
En savoir plus sur Characters and Strings dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!