Matlab以特定方式重塑两个向量

时间:2013-04-02 23:17:21

标签: matlab

我有两个向量,我希望数字相互跟随。我的意思是:

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

矢量b可以小于1或者可以是相同的长度 我想得到

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

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

2 个答案:

答案 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;

注意:此解决方案不会验证ab是否太短。太长ab会出错。

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