Matlab:如何将两个向量合二为一

时间:2017-03-25 20:58:18

标签: arrays matlab matrix vector concatenation

我有两个载体

A = [...] %size 1x320
B = [...] %size 1x192

我想将两个向量合二为一,但我想要将它们组合起来的方法如下:

取向量A的前5个元素然后从向量B中添加3个元素从向量A中添加接下来的5个元素,然后从向量B中添加下一个元素,依此类推,直到两个向量合并为一个。我认为自320/5=64192/3=64以来,该过程应重复64次。

有没有内置的Matlab功能呢?

1 个答案:

答案 0 :(得分:1)

我不认为有一个内置功能正是如此,但以下内容可以满足您的需求:

A=randi(10,1,320);
B=randi(10,1,192);
C=zeros(1,length(A)+length(B));
for i=1:5
    C(i:8:end)=A(i:5:end);
end
for i=6:8
    C(i:8:end)=B(i-5:3:end);
end

然后数组C是组合数组。

编辑:另一种方法,没有for循环:

A=randi(10,1,320);
B=randi(10,1,192);
A_new=reshape(A,5,[]);
B_new=reshape(B,3,[]);
C=[A_new;B_new];
C=reshape(C,[1,numel(C)]);

在此解决方案中,通过将reshape(A,5,[])中的第三个参数指定为[],我们允许它根据A的长度调整列数,前提是该行中的行数reshaped数组为5.此外,numel(C)是数组C中元素的总数。因此,该解决方案也可以很容易地推广到更多数量的阵列。