我有两个载体
A = [...] %size 1x320
B = [...] %size 1x192
我想将两个向量合二为一,但我想要将它们组合起来的方法如下:
取向量A的前5个元素然后从向量B中添加3个元素从向量A中添加接下来的5个元素,然后从向量B中添加下一个元素,依此类推,直到两个向量合并为一个。我认为自320/5=64
和192/3=64
以来,该过程应重复64次。
有没有内置的Matlab功能呢?
答案 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
中元素的总数。因此,该解决方案也可以很容易地推广到更多数量的阵列。