0

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

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

矢量 b 可以比 a 小一或可以是我想要得到的相同长度

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

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

4

2 回答 2

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会报错。

AFAIKreshape仅可用于更改单个数组/矩阵的尺寸。

于 2013-04-02T23:38:15.713 回答
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
于 2013-04-03T05:42:52.220 回答