Hi,
I have two column vectors A=(3, 4, 6, 9, 12, 34, 56, 99, 105, 190)' and B=(4, 12, 34, 56)' both are sorted in increasing order. And a bbig matrix D of size mxn, where m is no. of rows in A.
Purpose: is to divide the matrix D into two segments ,
a) matrix E which has 4 rows (=number of rows in B) which are the 2nd, 5th, 6th.. rows of matrix D
and
b) matrix F which has 6 rows (= numbers of rows in A minus number of rows in B) which are 1st, 3rd, 4th, 6th, ...etc rows of D,
So basically the row numbers given bby A has to divided into B and notB.
Here's what I am doing:
I need to find out the placement of each element of B in A. So I am using :
for i=size(B,1)
C(i,1) = find(B(i,1)==A)
end
Question 1: Is there a way to vectorise this process and avoid the LOOP
After that I want to locate the row indexed by B and not B in a mXn matrix D, so I am using
rowEindex=1
rowFindex=1
for j=1:size(B,1)
if A(j,1)==B
E(rowEindex,:) = D(j,:)
rowEindex = rowEindex+1
else
E(rowFindex,:) = D(j,:)
rowFindex = rowFindex+1
end
Question 2: Is there a way to speed up this process, again without using the LOOP
many thanks for your response.

 Akzeptierte Antwort

Stephen23
Stephen23 am 8 Jan. 2019
Bearbeitet: Stephen23 am 8 Jan. 2019

1 Stimme

Simpler:
A = [3;4;6;9;12;34;56;99;105;190];
B = [4;12;34;56];
D = randi(999,200,7); % fake data
E = D(B,:);
F = D(setdiff(A,B),:);

3 Kommentare

You might wanna edit line-4 by ,
E=D(B,:);
Cheers.
Stephen23
Stephen23 am 8 Jan. 2019
@SHUBHAM GUPTA: you are right, I fixed that now.
J Yadav
J Yadav am 8 Jan. 2019
I have changed the question slightly, bbut your answer to use setdiff is helpful. Thanks,

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Shubham Gupta
Shubham Gupta am 8 Jan. 2019

1 Stimme

Try this :
A=[3, 4, 6, 9, 12, 34, 56, 99, 105, 190]';
B=[4, 12, 34, 56]' ;
D=[1:200;1:200;1:200;1:200]';
[val,ind]=intersect(A,B);
E=D(val,:);
A(ind)=[];
F=D(A,:);
I hope this helps.

1 Kommentar

J Yadav
J Yadav am 8 Jan. 2019
I have changed the question slightly, bbut your answer to use intersect is helpful. Thanks,

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Matrices and Arrays finden Sie in Hilfe-Center und File Exchange

Gefragt:

am 7 Jan. 2019

Kommentiert:

am 8 Jan. 2019

Community Treasure Hunt

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

Start Hunting!

Translated by