MATLAB Answers

Find position of the values of an array in a second array

There is 2 strings 'dls' & 'look'. I want to find exact lower and exact higher value of every elements of 'dls' in the sorted string 'look'. I wrote this:
dls = [5 2 1 7 4];
look = [-0.6 1 2.6 4.2 5.8 7.4];
s = length(dls);
l = length(look);
dlstr = 0;
dhstr = 0;
for i = 1:s,
for j =1:l,
if dls(i)>=look(j)
continue; %j=j+1;
else
dh = look(j);
dl = look(j-1);
dlstr = [dlstr dl];
dhstr = [dhstr dh];
break;
end
end
end
dhstr(1)=[];
dlstr(1) = [];
dlstr
dhstr
The expected result is:
dlstr =
4.2000 1.0000 -0.6000 5.8000 2.6000
>> dhstr
dhstr =
5.8000 2.6000 1.0000 7.4000 4.2000
but the output is:
dlstr =
4.2000 1.0000 1.0000 5.8000 2.6000
dhstr =
5.8000 2.6000 2.6000 7.4000 4.2000
The problem occurred if any value in both strings match. '1' exists in both string. dlstr(3) should be -0.6000 & dhstr(3) should be 1.000. Please tell me how to overcome this problem?

  댓글 수: 2

"There is 2 strings 'dls' & 'look'"
I disagree, they look like arrays not strings
Sorry sir! Yes, those are array.

로그인 to comment.

제품

답변 수: 2

Ashish Uthama 님의 답변 25 Jan 2011
 채택된 답변

With the above code, this correction should yield you your required output:
dls(i)>look(j)
You might be able to write this functionality more compactly by using the function find. Also: If you find the lower bound first, and the 'look' array is expected to be sorted, then wont the higher bound be the next element?

  댓글 수: 1

Thanks a lot. It works.

로그인 to comment.


Todd Flanagan 님의 답변 25 Jan 2011

This:
dls(i)>=look(j)
Should be:
dls(i)>look(j)
You might be able to write this functionality more compactly by using the function find.
Note that because the array is sorted, you can find 1 bound and infer both.

  댓글 수: 3

This answer is taken pretty directly from Ashish's with a couple of modifications and a link. It's totally fair game to start with someone's answer and improve in some way and let the voters decide if they like your edits.
Thanks a lot. It works.
yup, its better this way.

로그인 to comment.



Translated by