Error in 'find' function when value is out of range. How to get around?
Afficher commentaires plus anciens
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?
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
1 commentaire
Jan
le 22 Août 2012
What is the difference to the thread http://www.mathworks.com/matlabcentral/answers/46453-how-to-ignore-values-in-a-matrix-that-is-out-of-bound-when-performing-column-find-in-an-array?
Réponses (1)
Mani
le 22 Août 2012
0 votes
use imhist and set the values as thresholds
Catégories
En savoir plus sur Creating and Concatenating Matrices dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!