Find position of the values of an array in a second array
Ältere Kommentare anzeigen
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 Kommentare
Paulo Silva
am 25 Jan. 2011
"There is 2 strings 'dls' & 'look'"
I disagree, they look like arrays not strings
raktim banerjee
am 25 Jan. 2011
Akzeptierte Antwort
Weitere Antworten (1)
Todd Flanagan
am 25 Jan. 2011
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 Kommentare
Todd Flanagan
am 25 Jan. 2011
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
am 25 Jan. 2011
Ashish Uthama
am 25 Jan. 2011
yup, its better this way.
Kategorien
Mehr zu Shifting and Sorting Matrices finden Sie in Hilfe-Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!