Extract columns from matrix based on a vectors values

4 views (last 30 days)
I want to extract the columns of a matrix A (mxn), based on a vector B's values into a new matrix C, meaning:
Which also should be dependent on B's dimensions (1xm):
For example:
A=[1,1,1,0;
2,1,0,1];
B=[3,4];
Then C should be:
C=[1,0;
0,1].
I want this to work for any dimensions of n and m.
I have tried:
C=A(:,B(1,1):1:B(1,size(B,2)))
but it doesn't work for B=[3,1] since it takes column by column.
Thanks!

Accepted Answer

Jon
Jon on 6 Nov 2020
Edited: Jon on 6 Nov 2020
I think this should do it for you:
C = A(:,B)
  2 Comments
Jon
Jon on 6 Nov 2020
Glad this works for you. Please accept this answer so others with a similar issue will know an answer is available.

Sign in to comment.

More Answers (1)

dpb
dpb on 6 Nov 2020
Edited: dpb on 6 Nov 2020
>> A=[1,1,1,0;
2,1,0,1];
B=[3,4];
>> A(:,B)
ans =
1 0
0 1
>> B=[3,1];
>> A(:,B)
ans =
1 1
0 2
>>
meets the description of the vector B.
If you mean for B to be all columns from B(1):B(2) inclusive, then you have to be more explicit in how you write the expression:
>> A(:,B(1):sign(diff(B)):B(2))
ans =
1 1 1
0 1 2
>>
This will require that B always be a 2-vector and B(1)~=B(2).

Categories

Find more on Creating and Concatenating Matrices in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!