Strange problem with function 'find'

1 visualizzazione (ultimi 30 giorni)
Jonasz
Jonasz il 9 Nov 2013
Commentato: Jonasz il 9 Nov 2013
Hello. I have a strange problem with function find. I have this function in for loop and I use it eg. 50 times. This function not always find what I am looking for although if I run this outside the loop it will find my value.
Code:
for i=1:n,
fid=fopen(names(i,1).name);
spec=cell2mat(textscan(fid,'%f %f'))';
fclose(fid);
X=spec(1,:);
Y=spec(2,:);
for j=1:size(setX,1),
x=setX(j,1);
[M,N]=find(X==x); - problem sometimes in this place
if(isempty(M))
DataX(j,i)=0;
else
DataX(j,i)=Y(M,N);
end
end
end
Also I will show you the Data X file (in this place Data Y but it's the same problem - same data).
You can see that in 30 ,33 and 37 loop it didn't find the X value but this value exist and the pattern is the same as others. What it the problem?

Risposta accettata

Matt J
Matt J il 9 Nov 2013
Modificato: Matt J il 9 Nov 2013
Use a tolerance to allow for floating point errors,
[M,N]=find(abs(X-x)<=somethingsmall)
where "somethingsmall" is small but >0

Più risposte (0)

Categorie

Scopri di più su Characters and Strings in Help Center e File Exchange

Prodotti

Community Treasure Hunt

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

Start Hunting!

Translated by