0
我有两个向量,我希望数字相互跟随一个。我的意思是:Matlab以特定的方式重塑两个向量
a = [5 6 4 2 1];
b = [4 2 1 3];
向量b可以是一个比一个更小的,也可以是相同的长度 我想
c = [5 4 6 2 4 1 2 3 1];
我试图用重塑,但放弃了。所以我刚刚实现了循环。 但是有没有更好的方法来解决这个问题?
我有两个向量,我希望数字相互跟随一个。我的意思是:Matlab以特定的方式重塑两个向量
a = [5 6 4 2 1];
b = [4 2 1 3];
向量b可以是一个比一个更小的,也可以是相同的长度 我想
c = [5 4 6 2 4 1 2 3 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
仅用于更改单个阵列/矩阵的尺寸。
为什么不使用简单的连接和重新排序?
>> 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