Borrar filtros
Borrar filtros

HOW TO FIND THE LOCAL MAXIMA FOR EVERY ROW IN A MATRIX

1 visualización (últimos 30 días)
raj
raj el 19 de Mzo. de 2012
Hii,
Hallo suppose if i have a 3x3 matrix like [0 -1.2 -0.6; -0.9 -5 -6; 0 -1.8 -2.5] and also I have a threshold value mentioned suppose let it be threshold > -1 I obtain results as [1 0 1; 1 0 0; 1 0 0] but what i need is a matrix which distinguishes the different intensities of results obtained above the threshold for ex: my results should look like [1 0 0.5; 1 0 0; 1 0 0]

Respuestas (1)

Geoff
Geoff el 19 de Mzo. de 2012
A = [0 -1.2 -0.6; -0.9 -5 -6; 0 -1.8 -2.5];
threshold = -1;
result = max( A - threshold, 0 );
Now, you seem to be only interested in 'intensities' that are multiples of 0.5. To get that, do this:
result = round(result * 2) / 2;
  3 comentarios
Geoff
Geoff el 19 de Mzo. de 2012
So what if you divided each row of my result by its maximum value?
result = result ./ repmat( max(result,[],2), 1, size(result,2) );
Any row that is all zeros will become NaN, so:
result(isnan(result)) = 0;
Image Analyst
Image Analyst el 19 de Mzo. de 2012
raj, you're clear as mud. No one knows why only the -0.6 should give a 0.5, while all the others should give a 1. Explain it better if you can't solve it yourself and want us to solve it for you.

Iniciar sesión para comentar.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by