About maximum value in matrix
4 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Mohamad Agung Prawira Negara
il 6 Ago 2018
Commentato: Stephen23
il 7 Ago 2018
I have a problem regarding finding a maximum value from my matrix (largest element in the row)
I have matrix A shown bellow

I know that I can use
M=max(A,[],2)
Then I will get matrix M such that

But the answer I want is not that, what I want is that . The one that I want is

The answer that I want is the maximum value of each row ignoring the negativity of each value like shown in the matrix above.
I hope my question is clear enough.
0 Commenti
Risposta accettata
Stephen23
il 6 Ago 2018
Modificato: Stephen23
il 6 Ago 2018
A = [2,4,-1,0,-1;1,3,12,-3,2;-12,2,4,0,-1;2,4,0,-5,-2;3,-4,-1,0,8]
[~,C] = max(abs(A),[],2); % C = column indices
S = size(A);
R = 1:S(1); % R = row indices
X = sub2ind(S,R(:),C(:)); % X = linear indices
Z = A(X)
Giving
Z =
4
12
-12
-5
8
It would be nice if max etc. could return the linear indices, but that is what we have to work with. Note that you can also calculate the linear indices yourself, without sub2ind:
X = S(1)*(C-1)+(1:S(2)).'
2 Commenti
Stephen23
il 7 Ago 2018
Another possibility:
>> A = [2,4,-1,0,-1;1,3,12,-3,2;-12,2,4,0,-1;2,4,0,-5,-2;3,-4,-1,0,8];
>> [C,X] = max(max(cat(9,A,-A),[],2),[],9);
>> C .* (3-2*X)
ans =
4
12
-12
-5
8
Più risposte (1)
Fangjun Jiang
il 6 Ago 2018
use abs() and note that the second return of max() gives the indices. See if you can figure it out.
Vedere anche
Categorie
Scopri di più su Logical in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!