How do I find absolute max value in a vector without losing the sign when the value is negative in MatLab R2011b?
65 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Ineta Nausedaite
il 29 Ott 2018
Commentato: Steven Lord
il 4 Feb 2021
I have many vectors that contain force and joint moment data and I need to find the max values without losing the sign. For example, if the values were [2 6 -7] I'd need to get -7, if the vector was [-2 5 6] I'd need to get 6. For certain reasons, I have to work with MatLab R2011b.
0 Commenti
Risposta accettata
Stephen23
il 29 Ott 2018
Modificato: Stephen23
il 29 Ott 2018
Method one: use indexing to select from the original vector:
>> V = [2,6,-7];
>> [~,X] = max(abs(V));
>> V(X)
ans = -7
>> V = [-2,5,6];
>> [~,X] = max(abs(V));
>> V(X)
ans = 6
Method two: use sign to multiply with the output value:
>> V = [2,6,-7];
>> [A,X] = max(abs(V));
>> A.*sign(V(X))
ans = -7
>> V = [-2,5,6];
>> [A,X] = max(abs(V));
>> A.*sign(V(X))
ans = 6
3 Commenti
Stephen23
il 4 Feb 2021
It would be nice if max et al would return linear indices. Your indexing is probably about the simplest, but because you hard-code the columns it is not very generalized. Here is a generalized solution:
M = [2,6,-7;-5,2,1;0,-3,9].'
[~,R] = max(abs(M),[],1);
X = sub2ind(size(M),R,1:size(M,2));
V = M(X)
Steven Lord
il 4 Feb 2021
M = [2,6,-7;-5,2,1;0,-3,9].'
[~, ind] = max(abs(M), [], 1, 'linear')
M(ind)
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Operators and Elementary Operations 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!