merging vectors together with alternating values

127 次查看(过去 30 天)
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

回答(4 个)

KALYAN ACHARJYA
KALYAN ACHARJYA 2019-5-28
编辑:KALYAN ACHARJYA 2019-5-28
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 2019-5-28
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 个评论
Stephen23
Stephen23 2019-5-28
编辑:Stephen23 2019-5-28
+1 nice use of colon to ensure the orientation.
Star Strider
Star Strider 2019-5-28
@Stephen — Thank you! I want it to be as robust as possible.

请先登录,再进行评论。


Indrasish Chakraborty
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] ?

Nils Odenwald
Nils Odenwald 2021-9-2
编辑:Nils Odenwald 2021-9-2
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

类别

Help CenterFile Exchange 中查找有关 Linear Algebra 的更多信息

产品

Community Treasure Hunt

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

Start Hunting!

Translated by