我有两个向量,我希望数字相互跟随。我的意思是:
a = [5 6 4 2 1];
b = [4 2 1 3];
矢量b可以小于1或者可以是相同的长度 我想得到
c = [5 4 6 2 4 1 2 3 1];
我尝试使用重塑但放弃了。所以我只是实现了循环。 但有没有更好的方法来解决这个问题?
答案 0 :(得分:1)
您可以使用切片分配:
% prepare c
c = zeros(1, length(a) + length(b));
% assign a
c(1:2:length(a)*2) = a;
% assign b
c((1:2:length(b)*2)+1) = b;
注意:此解决方案不会验证a
或b
是否太短。太长a
或b
会出错。
AFAIK reshape
仅可用于更改单个数组/矩阵的尺寸。
答案 1 :(得分:0)
为什么不使用简单的连接和重新排序?
>> a = [5 6 4 2 1];
>> b = [4 2 1 3];
>> c = [a b]; % initialize by concatenation
>> c([1:2:end 2:2:end]) = c % reorder by sliced re-assignment
c =
5 4 6 2 4 1 2 3 1