How to combine two vectors column-by-column?

4 Ansichten (letzte 30 Tage)
Jake
Jake am 14 Mär. 2023
Kommentiert: Stephen23 am 17 Mär. 2023
I have two matrices, A and B.
A = [1,3,5,7,9,11,13,15]
A = 1×8
1 3 5 7 9 11 13 15
B = [2,4,6,8,10,12,14,16]
B = 1×8
2 4 6 8 10 12 14 16
How can I combine these two to give me a third matrix C, which is as follows?
C = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]
C = 1×16
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
So, basically, C should be [A(:,1), B(:,1), A(:,2), B(:,2), ...]

Akzeptierte Antwort

Stephen23
Stephen23 am 17 Mär. 2023
A = [1,3,5,7;9,11,13,15;17,19,21,23]
A = 3×4
1 3 5 7 9 11 13 15 17 19 21 23
B = [2,4,6,8;10,12,14,16;18,20,22,24]
B = 3×4
2 4 6 8 10 12 14 16 18 20 22 24
C = reshape(permute(cat(3,A,B),[1,3,2]),size(A,1),[])
C = 3×8
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
  1 Kommentar
Stephen23
Stephen23 am 17 Mär. 2023
A = [1,3,5,7;9,11,13,15;17,19,21,23];
B = [2,4,6,8;10,12,14,16;18,20,22,24];
Another approach:
C = repelem(A,1,2);
C(:,2:2:end) = B
C = 3×8
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Sarvesh Kale
Sarvesh Kale am 14 Mär. 2023
Hi Jake,
You can see the following code snippet
A = [1,3,5,7,9,11,13,15];
B = [2,4,6,8,10,12,14,16];
C=[A;B] % row wise concatenation
C = 2×8
1 3 5 7 9 11 13 15 2 4 6 8 10 12 14 16
C=C(:)'; % traversal will be column wise as matrix elements are stored in column major format
C
C = 1×16
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
I hope this helps your query
Thank you
  1 Kommentar
Jake
Jake am 17 Mär. 2023
Thank you for the solution, @Sarvesh Kale! I'm curious to know how could one do this when the matrices are multi-dimensional. For instance, what if,
A = [1,3,5,7;9,11,13,15;17,19,21,23]
A = 3×4
1 3 5 7 9 11 13 15 17 19 21 23
B = [2,4,6,8;10,12,14,16;18,20,22,24]
B = 3×4
2 4 6 8 10 12 14 16 18 20 22 24
How could we get the matrix C by combining every-other column of A, and B, such that, (simply to demonstrate)?
C = [1,2,3,4,5,6,7,8; 9,10,11,12,13,14,15,16; 17,18,19,20,21,22,23,24]
C = 3×8
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by