2013-04-02 86 views
0

我有两个向量,我希望数字相互跟随一个。我的意思是:Matlab以特定的方式重塑两个向量

a = [5 6 4 2 1]; 
b = [4 2 1 3]; 

向量b可以是一个比一个更小的,也可以是相同的长度 我想

c = [5 4 6 2 4 1 2 3 1]; 

我试图用重塑,但放弃了。所以我刚刚实现了循环。 但是有没有更好的方法来解决这个问题?

回答

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; 

注意:此方法不验证如果任ab太短。太长ab会给出一个错误。

AFAIK reshape仅用于更改单个阵列/矩阵的尺寸。

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