merging vectors together with alternating values

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

Antworten (4)

KALYAN ACHARJYA
KALYAN ACHARJYA am 28 Mai 2019
Bearbeitet: KALYAN ACHARJYA am 28 Mai 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 am 28 Mai 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 Kommentare

Stephen23
Stephen23 am 28 Mai 2019
Bearbeitet: Stephen23 am 28 Mai 2019
+1 nice use of colon to ensure the orientation.
@Stephen — Thank you! I want it to be as robust as possible.

Melden Sie sich an, um zu kommentieren.

Indrasish Chakraborty
Indrasish Chakraborty am 19 Aug. 2021

1 Stimme

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 Kommentare

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
:v It helped

Melden Sie sich an, um zu kommentieren.

Nils Odenwald
Nils Odenwald am 2 Sep. 2021
Bearbeitet: Nils Odenwald am 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

Kategorien

Mehr zu Get Started with MATLAB finden Sie in Hilfe-Center und File Exchange

Produkte

Gefragt:

am 28 Mai 2019

Bearbeitet:

am 2 Sep. 2021

Community Treasure Hunt

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

Start Hunting!

Translated by