Find the last position of maximum value in a Matrix

39 vues (au cours des 30 derniers jours)
NoNo
NoNo le 27 Nov 2013
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?

Réponse acceptée

Wayne King
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');

Plus de réponses (2)

Azzi Abdelmalek
Azzi Abdelmalek le 27 Nov 2013
x=[1 2 3 0 3];
[ii,jj]=max(fliplr(x));
idx=numel(x)-jj+1

Bradley Stiritz
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(:)'));

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!

Translated by