woutld Chciałbym podzielić na równe kawałki tablicę tak:Podział tablicy na kawałki w MATLAB
a=[1 2 3 4 5 6 7 8 9 10]
n = 2;
b = split(a, n);
b =
1 2 3 4 5
6 7 8 9 10
Która funkcja może to zrobić?
woutld Chciałbym podzielić na równe kawałki tablicę tak:Podział tablicy na kawałki w MATLAB
a=[1 2 3 4 5 6 7 8 9 10]
n = 2;
b = split(a, n);
b =
1 2 3 4 5
6 7 8 9 10
Która funkcja może to zrobić?
Spróbuj tego:
a = [1 2 3 4 5 6]
reshape (a, 2, 3)
Jeśli a
można podzielić przez n
rzeczywiście można zapewnić tylko jeden argument do zmiany kształtu.
Aby przekształcić do 2 rzędów:
b = reshape(a,2,[])
Aby przekształcić do 2 kolumn:
b = reshape(a,[],2)
Należy pamiętać, że zmiany kształtu dzieła kolumn, to wypełnia 1st kolumnę, potem 2nd, i tak dalej . Aby uzyskać pożądane wyniki, musisz zmienić kształt na 2 kolumny, a następnie przetransponować wynik.
b = reshape(a,[],2)'
można umieścić czek zanim zmienią:
assert(mod(numel(a),n)==0,'a does not divide to n')
Czy istnieje jakaś funkcja łączenia macierzy po zmianie kształtu? – Jerky
Jakie macierze mówisz? Oczywiście, możesz przekształcić z powrotem do oryginalnego wektora: 'a2 = przekształć (b ', 1, []);' – yuk
Czy możliwe jest wykonanie przekształcenia, w którym 'a/n ~ = int', a następnie z powrotem wypełnij koniec zera lub NaN? – josh
Dziękuję bardzo. – Elijah
To faktycznie nie daje danych wyjściowych zadanych w pytaniu. Musi to być 'reshape (a, 3,2) ''. – yuk
@Ze Ji Czy istnieje jakaś funkcja łączenia macierzy po zmianie kształtu? – Jerky