将列表中的每个n个元素放在另一个列表中

时间:2013-12-11 10:04:44

标签: matlab

我有一个包含10个元素的列表。我想将每个2个元素放在一个列表中。我该如何编写代码?

P = [1 2 3 4 5 6 7 8 9 10]

我想要的结果如下:

[[1 2] [3 4] [5 6] [7 8] [9 10]]

2 个答案:

答案 0 :(得分:3)

......太多可能性......必须......抵抗......痒......手指......

>> P = [1 2 3 4 5 6 7 8 9 10];
>> P1 = reshape(P, 2,[])
>> P2 = P([1:2:end; 2:2:end])
>> P3 = mat2cell(P, 1, 2*ones(numel(P)/2,1))
>> P4 = zeros(2, numel(P)/2, class(P));  P4(:) = P
>> P5 = [P(1:2:end); P(2:2:end)]
>> P6 = accumarray([round(0.5:0.5:numel(P)/2)' repmat([1;2],numel(P)/2,1)], P)
>> P7 = cat(1 , P(1:2:end), P(2:2:end)) 

...宕。

答案 1 :(得分:1)

因为今天我很亲切,所以这里是如何通过重塑来实现的。

out = reshape(P,2,[])';

重新整形调用创建一个2×n的数组,其中元素分布(1,1),(2,1),(1,2)等。转置然后翻转行和列以产生所需的结果。