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
Paulo Silva
2011년 1월 25일
"There is 2 strings 'dls' & 'look'"
I disagree, they look like arrays not strings
raktim banerjee
2011년 1월 25일
채택된 답변
추가 답변 (1개)
Todd Flanagan
2011년 1월 25일
This:
dls(i)>=look(j)
Should be:
dls(i)>look(j)
Note that because the array is sorted, you can find 1 bound and infer both.
댓글 수: 3
Todd Flanagan
2011년 1월 25일
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.
raktim banerjee
2011년 1월 25일
Ashish Uthama
2011년 1월 25일
yup, its better this way.
카테고리
도움말 센터 및 File Exchange에서 Shifting and Sorting Matrices에 대해 자세히 알아보기
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!