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

조회 수: 3(최근 30일)
raktim banerjee 2011년 1월 25일
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표시숨기기 이전 댓글 수: 1
raktim banerjee 2011년 1월 25일
Sorry sir! Yes, those are array.

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

### 채택된 답변

Ashish Uthama 2011년 1월 25일
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표시숨기기 없음
raktim banerjee 2011년 1월 25일
Thanks a lot. It works.

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

### 추가 답변(1개)

Todd Flanagan 2011년 1월 25일
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표시숨기기 이전 댓글 수: 2
Ashish Uthama 2011년 1월 25일
yup, its better this way.

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

### Community Treasure Hunt

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

Start Hunting!

Translated by