Improving a search algorithm

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일

0 개 추천

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개)

카테고리

도움말 센터File Exchange에서 Shifting and Sorting Matrices에 대해 자세히 알아보기

태그

질문:

2013년 3월 26일

Community Treasure Hunt

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

Start Hunting!

Translated by