merging vectors together with alternating values

133 views (last 30 days)
Hello,
I want to merge two vectors like this:
A=[ 1; 2; 3; 4;] B=[5; 6; 7; 8;]
resulting vector
C=[1; 5; 2; 6; 3; 7; 4; 8;]
Thank you

Answers (4)

KALYAN ACHARJYA
KALYAN ACHARJYA on 28 May 2019
Edited: KALYAN ACHARJYA on 28 May 2019
vec=[A B]';
C=vec(:)
>> A=[ 1; 2; 3; 4]
Example:
>> A=[ 1; 2; 3; 4]
A =
1
2
3
4
>> B=[5; 6; 7; 8]
B =
5
6
7
8
>> vec=[A B]'
vec =
1 2 3 4
5 6 7 8
>> C=vec(:)
C =
1
5
2
6
3
7
4
8
>>

Star Strider
Star Strider on 28 May 2019
Try this:
A=[1; 2; 3; 4];
B=[5; 6; 7; 8];
C = [A(:) B(:)]';
C = C(:)
producing:
C =
1
5
2
6
3
7
4
8
  2 Comments
Stephen23
Stephen23 on 28 May 2019
Edited: Stephen23 on 28 May 2019
+1 nice use of colon to ensure the orientation.
Star Strider
Star Strider on 28 May 2019
@Stephen — Thank you! I want it to be as robust as possible.

Sign in to comment.


Indrasish Chakraborty
Indrasish Chakraborty on 19 Aug 2021
What if the two vectors are of unequal length ?
For example -
A=[2 4 5 7 8]
B=[3 8 0 1]
Then how to get C=[2 3 4 8 5 0 7 1 8] ?
  2 Comments
shikhar tyagi
shikhar tyagi on 19 Aug 2021
A=[1; 0; 3; 4 ;6 ;0];
B=[5; 6; 7 ;0 ;4];
C=cat(1,A,B);
C([1:2:end,2:2:end])=C
I hope this helps

Sign in to comment.


Nils Odenwald
Nils Odenwald on 2 Sep 2021
Edited: Nils Odenwald on 2 Sep 2021
I recommend the MATLAB function "reshape", which allows you to change the order of arrays. You can also manipulate different data types such as strings.
Example:
A = [1; 2; 3; 4; 5];
B = [0; 0; 0; 0; 0];
result = reshape([A B]',[],1)
result = 10×1
1 0 2 0 3 0 4 0 5 0

Categories

Find more on Linear Algebra in Help Center and File Exchange

Products

Community Treasure Hunt

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

Start Hunting!