Mam listę z 10 elementami. Chcę umieścić każde 2 elementy na liście. Jak napisać kod?
P = [1 2 3 4 5 6 7 8 9 10]
Chcę wynik jak poniżej:
[[1 2] [3 4] [5 6] [7 8] [9 10]]
Odpowiedzi:
3 dla odpowiedzi № 1... zbyt wiele możliwości ... musi ... opierać się ... swędzeniu ... palcom ...
>> 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))
... dang.
1 dla odpowiedzi nr 2
Ponieważ czuję się dziś dobrze, oto jak to zrobić poprzez zmianę kształtu.
out = reshape(P,2,[])";
Wywołanie reshape tworzy tablicę 2-na-n, w której elementy są rozmieszczone (1,1), (2,1), (1,2) itd. Transpozycja odwraca następnie wiersze i kolumny, aby uzyskać pożądany wynik.