Find maximum among the elements in the matrix lower than 80% of max element of entire matrix
4 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Ivan
am 14 Okt. 2020
Kommentiert: Fangjun Jiang
am 14 Okt. 2020
Hi!
I have a matrix A(n,n). I determine the maximum element like S=max(A(:)).
Now, I would like to find the maximum element only among the elements of the matrix A which are lower than 0.8*S.
Could you suggest some solutions of that problem?
Thank you in advacne!
0 Kommentare
Akzeptierte Antwort
Sudhakar Shinde
am 14 Okt. 2020
Bearbeitet: Sudhakar Shinde
am 14 Okt. 2020
%Try this:
Result = A(A<(0.8*S))
2 Kommentare
Weitere Antworten (1)
Ameer Hamza
am 14 Okt. 2020
Bearbeitet: Ameer Hamza
am 14 Okt. 2020
A; % your matrix
S = max(A, [], 'all'); % same as: S=max(A(:))
S2 = max(A.*(A<0.8*S), [], 'all');
3 Kommentare
Ameer Hamza
am 14 Okt. 2020
No, both will be equivalent, even if matrix have negative values. Infact, using multiplication is much faster
A = randn(10000); % both positive and negative values
S = max(A, [], 'all');
tic
S21 = max(A.*(A<0.8*S), [], 'all');
t1 = toc;
tic
S22 = max(A(A<0.8*S), [], 'all');
t2 = toc;
tf = isequal(S21, S22);
Result
>> t1
t1 =
0.3251
>> t2
t2 =
1.2465
>> tf
tf =
logical
1
Fangjun Jiang
am 14 Okt. 2020
An easy counterexample:
%%
A=[1 -1]; % your matrix
S = max(A, [], 'all'); % same as: S=max(A(:))
S2 = max(A.*(A<0.8*S), [], 'all');
S1=max(A(A<0.8*S), [], 'all');
isequal(S1,S2)
Siehe auch
Kategorien
Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!