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 comentario

Dan
Dan el 28 de Dic. de 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 )

Iniciar sesión para comentar.

 Respuesta aceptada

Richard Brown
Richard Brown el 12 de Abr. de 2012

2 votos

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 comentario

Edward Umpfenbach
Edward Umpfenbach el 12 de Abr. de 2012
Thank you. I didn't think to change the zeros to NaN so that they didn't mess up the min operation.

Iniciar sesión para comentar.

Más respuestas (1)

Geoff
Geoff el 12 de Abr. de 2012

1 voto

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 comentarios

Richard Brown
Richard Brown el 12 de Abr. de 2012
Ha, mine too! Whereabouts?
Geoff
Geoff el 12 de Abr. de 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 el 12 de Abr. de 2012
I am indeed, wobbles and all :)

Iniciar sesión para comentar.

Categorías

Etiquetas

Preguntada:

el 12 de Abr. de 2012

Comentada:

Dan
el 28 de Dic. de 2015

Community Treasure Hunt

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

Start Hunting!

Translated by