Max/Min of nonzero rows/cols

28 visualizaciones (últimos 30 días)
Edward Umpfenbach
Edward Umpfenbach el 12 de Abr. de 2012
Comentada: Dan el 28 de Dic. de 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 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
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
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
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

Más información sobre Logical en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by