필터 지우기
필터 지우기

Improving a search algorithm

조회 수: 1 (최근 30일)
Natialol
Natialol 2013년 3월 26일
Hello,
I would like suggestions on how to make the search below more efficient. I concatenate in another script to obtain numeric strings eg 0120001410. I then use the search function below to search for 0110001110 in row 1 obtain the corresponding value in row 2. Can I use logical indexing for this, if so, how.
function y= binge(x)
binge= [00000001, 00000010, 00000020, 00000021, .........,90000000;
0.11111, 2.4433, ..................................,7.2];
i=1;
length=size(binge,2);
while i<=length
if abs(x-binge(1,i))<10e-5
y=binge(2,i);
break;
end
i=i+1;
end
if (i>length)
error('wrong');
end
end
Thanks MN

채택된 답변

PT
PT 2013년 3월 26일
function y = binge(x)
binge= [00000001, 00000010, 00000020, 00000021, .........,90000000;
0.11111, 2.4433, ..................................,7.2];
y = binge(2,binge(1,:) == x);
%or to use the same tolerance as you specified,
% y = binge(2,abs(x - binge(1,:)) < 1e-5);
  댓글 수: 2
Natialol
Natialol 2013년 3월 29일
Thanks PT, can I further improve the search?? The fitness function of which this search is a sub component still takes a very very long time.
Thanks
PT
PT 2013년 4월 1일
If your table is sorted, you can use a more advanced algorithm. Have you Profiled the run?

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

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

태그

Community Treasure Hunt

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

Start Hunting!

Translated by