Strange problem with function 'find'

1 view (last 30 days)
Jonasz
Jonasz on 9 Nov 2013
Commented: Jonasz on 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?

Accepted Answer

Matt J
Matt J on 9 Nov 2013
Edited: Matt J on 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

More Answers (0)

Products

Community Treasure Hunt

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

Start Hunting!