merging vectors together with alternating values

55 Ansichten (letzte 30 Tage)
Andrew Luce
Andrew Luce am 28 Mai 2019
Bearbeitet: Nils Odenwald am 2 Sep. 2021
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.
Star Strider
Star Strider am 28 Mai 2019
@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
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
shikhar tyagi
shikhar tyagi am 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

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

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by