28 views (last 30 days)

Show older comments

Let's say I have 2 arrays, one longer t1 (1x15 double) and a shorter one t2(1x8 double) and I tried to find the indices of t1 in the t2 as follows:

t1=[1,2,3,3,3,4,5,6];

t2=[1,1.5,2,3,4,5,6,7,8,9,9.5,19,25,31,42];

IDt1_int2=ismember(t2,t1)

>> ismember(t2,1)

ans =

1×15 logical array

1 0 1 1 1 1 1 0 0 0 0 0 0 0 0

but what I acutally wanted is something like this

IDt1_int2=find(ismember(t2,t1));

find(ismember(t2,t1))

ans =

1 3 4 5 6 7

but what i want it to give as an ouput is an array of IDs which considers the numbeer 3 in my t1 three times like this

[1 3 4 4 4 5 6 7];

Could you help here? Thank you

Simon Chan
on 17 Sep 2021 at 9:39

You may use a for loop as follows:

idx = zeros(1,length(t1));

for k = 1:length(t1)

idx(k) = find(ismember(t2,t1(k)));

end

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

Start Hunting!