Borrar filtros
Borrar filtros

How to ignore values in a matrix that is out of bound when performing column 'find' in an array?

5 visualizaciones (últimos 30 días)
Z is a 1024X1024 matrix containing negative value in some pixels.
For each pixel in Z, I need to find the column from an array 0,5,10,15,20,25,30,35,40; Because of out of bound values existing in Z matrix, I get this error 'Subscript indices must either be real positive integers or logicals.' How do I set all the negative values in matrix Z to '0' or is there a way to get around this problem? Below is the code.
m=1024;
n=1024;
Th = (0,5,10,15,20,25,30,35,40);
i=1:length(Th)
ratioAB(:,:,i)=A./B % A and B are matrices for each Th
RF=ones(m,n);
for i=1:m
for j=1:n
Z2=Z(i,round(j));
col = find(Th > Z2,1,'first')-[1 0]
RF(i,j)= diff(cat(3,ratioAB(i,j,col)),[],3)/diff(Th(col))*(Z2 Th(col(1)))+ratioAB(i,j,col(1));
end
end
  2 comentarios
Image Analyst
Image Analyst el 21 de Ag. de 2012
Editada: Image Analyst el 21 de Ag. de 2012
Lots of syntax errors, like in the definition of Th and RF. Plus what's with the definition of col? You're defining it as a scalar minus a 1 by 2 array. That's not a column number like you said you want.
Yun Inn
Yun Inn el 22 de Ag. de 2012
I have eight thicknesses, Th=0,5,10,15,20,25,30,35,40. For each of the Th, I have matrix, ratioAB.
Then, I have Z that is a 2D matrix consisting of pixels with different thicknesses. For each of the pixel, I need to find the correct ratioAB depending on the thickness. The result, RF, should be a matrix of ratioAB.
Because the Th range from 0 to 40, when I have negative value or value more than 40 in the Z matrix, I get the error 'Subscript indices must either be real positive integers or logicals.'
How do I fix the code?

Iniciar sesión para comentar.

Respuesta aceptada

Matt Fig
Matt Fig el 21 de Ag. de 2012
Z = max(Z,0)

Más respuestas (1)

Azzi Abdelmalek
Azzi Abdelmalek el 21 de Ag. de 2012
Editada: Azzi Abdelmalek el 21 de Ag. de 2012
Z(find(Z<0))=0

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