How to locate and extract elements from a matrix?

Hi, I need to locate specific elements in each column of a matrix and print them in a new column matrix. For example if I have a 6x4 matrix
A = [a1 b1 c1 d1;
a2 b2 c2 d2;
a3 b3 c3 d3;
a4 b4 c4 d4;
a5 b5 c5 d5;
a6 b6 c6 d6]
I should locate some elements from the first column of matrix A, and print them into two new column matrices B and C. The first column of matrix A is a1, a2, a3, a4, a5, a6
My new matrix B should take these elements: a1, a2, a3, a4, so
B = [a1; a2; a3; a4]
After that I should define new matrix C, which will take elements a3, a4, a5, a6, so
C = [a3; a4; a5; a6]
This process I need to repeat for every column of matrix A. Does anyone have tips how to do this? Thanks!

4 commentaires

the cyclist
the cyclist le 17 Déc 2015
I don't understand the rule for defining B and C, or how to generalize this to another matrix.
I agree with the cyclist. Since you haven't given general rules, the best answer is the simplest and what you have already given:
B = [a1; a2; a3; a4]
C = [a3; a4; a5; a6]
Assuming all the a's have been defined in advance, that will give you what you want. If they haven't, you can simply do
B = [A(1); A(2); A(3); A(4)]
C = [A(3); A(4); A(5); A(6)]
Otherwise give rules, because no one knows what they could be.
EB
EB le 18 Déc 2015
The rules are that every new matrix, e.g. B and C are column matrices built from first column of A, they need to have four elements, and two first elements of matrix C are the last two elements of B. So, for this example, first column of A gives my column matrices B and C, the 2nd column gives me column matrices D and E, 3rd column gives me F and G, the 4th column gives me H and I. The elements I need to locate for B are A(1), A(2), A(3), A(4), for C are A(3), A(4), A(5), A(6), for D are A(7), A(8), A(9), A(10), for E are A(9), A(10), A(11), A(12), for F are A(13), A(14), A(15), A(16), for G are A(15), A(16), A(17), A(18), for H are A(19), A(20), A(21), A(22) and for I are A(21), A(22), A(23), A(24) etc. All the elements of A are defined in advance. I know that I can define these new matrices by just assigning manually a's to B's, C's, D's, E's etc. Is there a shortcut to write this extraction for every column of A? Because, what if I have a larger matrix A, e.g. 22x22, then I have 22 elements in one column.
You've accepted harjeet's answer so we'll assume that his code does the rules you gave above and the problem is now solved.

Connectez-vous pour commenter.

 Réponse acceptée

try this
clear all
close all
clc
A=randint(6,4,[1 100])
for i=1:size(A,2)
o=A(:,i);
B=o(1:4)'
C=o(3:6)'
end

Plus de réponses (0)

Catégories

Community Treasure Hunt

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

Start Hunting!

Translated by