/ / Umieszczenie każdego z elementów listy na innej liście - matlab

Umieszczenie każdego n elementów z listy na innej liście - matlab

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.