finding elements in a vector from another vector

I'd like to create a vector y with the positions of the elements of x in m.
i.e.
x=0 (first element of x) has and index of 1 in m. So y(1)=1
x=241 (second element of x) has index of 242 in x. So y(2)=242
m and x are in attached

 채택된 답변

Star Strider
Star Strider 2020년 7월 18일
Try this:
M = load('m.mat');
X = load('x.mat');
m = M.m;
x = X.x;
[~,y] = ismembertol(x, m, 1E-4)
producing:
y =
1
242
937
2001
3306
4695
6001
7065
7759
8001
I checked that separately for a few values using find, and it appears to produce the correct result.
.

댓글 수: 8

can't make it work since I think m and x are in my script, I don't need to lload them.
I needed to load them. If they are already in your workspace as ‘x’ and ’m’, just run:
[~,y] = ismembertol(x, m, 1E-4)
You should get the same result that I did.
.
Paul Rogers
Paul Rogers 2020년 7월 18일
편집: Paul Rogers 2020년 7월 18일
I did but I get this.
maybe it's because I have r2014b?
Undefined function 'ismembertol' for input arguments of type 'double'.
The ismembertol function was introduced in the next release, R2015a.
The only work-around I can offer is this loop:
for k = 1:numel(x)
y(k) = find(m <= x(k), 1, 'last');
end
It produces almost the same result. They are identical, except for ‘y(3)’ that using ismembertol is 937 and using find is 936.
EDIT — (18 Jul 2020 at 20:52)
Unfortunately, ismember only works for 4 of the members of ‘x’. However that can be remedied by multiplying them by :
[~,y] = ismember(fix(x*1E+4), fix(m*1E+4))
producing essentially the same result as ismembertol, and the same results as the find loop.
Paul Rogers
Paul Rogers 2020년 7월 18일
편집: Paul Rogers 2020년 7월 18일
this worrks better:
[~,y] = ismember(fix(x*1E+4), fix(m*1E+4))
thanks.
Great!
I did not initially pick up on your posting the Release information as R2014b (so my apologies for that oversight if you posted it originally, since I only checked later).
.
I think it's best we don't edit comment so people can read different options and figure it out based on their version
Noted.

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

추가 답변 (1개)

카테고리

도움말 센터File Exchange에서 Mathematics에 대해 자세히 알아보기

제품

릴리스

R2014b

질문:

2020년 7월 18일

댓글:

2020년 7월 18일

Community Treasure Hunt

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

Start Hunting!

Translated by