필터 지우기
필터 지우기

Strange problem with function 'find'

조회 수: 2 (최근 30일)
Jonasz
Jonasz 2013년 11월 9일
댓글: Jonasz 2013년 11월 9일
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?

채택된 답변

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

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Logical에 대해 자세히 알아보기

제품

Community Treasure Hunt

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

Start Hunting!

Translated by