Effacer les filtres
Effacer les filtres

Max/Min of nonzero rows/cols

11 vues (au cours des 30 derniers jours)
Edward Umpfenbach
Edward Umpfenbach le 12 Avr 2012
Commenté : Dan le 28 Déc 2015
I have a Matrix, A.
I want to find the max and min for every row and column in A, excluding the zero entries.
I have coded it using For loops, but it is too slow. I need it to be all vectorized. Any help is greatly appreciated.
  1 commentaire
Dan
Dan le 28 Déc 2015
A = matrix with some zero entries . Indzero = find( A== 0); B=A; B(Indzero) = max(max(A))+1; Min(B,[],1) B(Indzero) = min(min(A))-1; Max(B,[],1)
U can use this sort of logic maybe . u can also go at it by gpu processing or mexing for faster results ( this is exactly the type of probelms where u get the best rests with gpus Nd mexing )

Connectez-vous pour commenter.

Réponse acceptée

Richard Brown
Richard Brown le 12 Avr 2012
B = A;
B(B == 0) = NaN;
colMax = max(B);
colMin = min(B);
rowMax = max(B, [], 2);
rowMin = min(B, [], 2);
edit: missed the bit about the zero entries
  1 commentaire
Edward Umpfenbach
Edward Umpfenbach le 12 Avr 2012
Thank you. I didn't think to change the zeros to NaN so that they didn't mess up the min operation.

Connectez-vous pour commenter.

Plus de réponses (1)

Geoff
Geoff le 12 Avr 2012
When you say 'for every row and column', do you mean a single max and min for the entire matrix? This would do it:
nzmin = min(A(A ~= 0));
nzmax = max(A(A ~= 0));
[edit]
Note that if you have float data, you might want to consider values 'near' zero:
ztol = eps(max(A(:)));
nz = A < -ztol | A > ztol; % select non-zeros
nzmin = min(A(nz));
nzmax = max(A(nz));
It's refreshing to use a proliferation of 'nz', since it's my nationality =)
  3 commentaires
Geoff
Geoff le 12 Avr 2012
My heart's in Dunedin. But I moved up to Auckland to get away from Animation Research Ltd ;-) You're a Canterbury lad, right?
Richard Brown
Richard Brown le 12 Avr 2012
I am indeed, wobbles and all :)

Connectez-vous pour commenter.

Catégories

En savoir plus sur Parallel Computing dans Help Center et File Exchange

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by