Error in 'find' function when value is out of range. How to get around?
3 vues (au cours des 30 derniers jours)
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)
Voir également
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!