How do I find absolute max value in a vector without losing the sign when the value is negative in MatLab R2011b?
67 ビュー (過去 30 日間)
古いコメントを表示
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 件のコメント
採用された回答
Stephen23
2018 年 10 月 29 日
編集済み: Stephen23
2018 年 10 月 29 日
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 件のコメント
Stephen23
2021 年 2 月 4 日
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
2021 年 2 月 4 日
M = [2,6,-7;-5,2,1;0,-3,9].'
[~, ind] = max(abs(M), [], 1, 'linear')
M(ind)
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Operators and Elementary Operations についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!