Przekształcenie jest oczywiście standardowym rozwiązaniem do przekształcania tablicy. (Jak inaczej mogliby to nazwać?) Jest jeszcze kilka sztuczek do odkrycia.
Po pierwsze, najprostszy sposób przekształcenia tablicy wielkości [n, m, p] w tablicę o rozmiarze [n * m, p]?
B = reshape(A,n*m,p);
Ale lepiej jest to:
B = reshape(A,[],p);
Jeśli zostawisz jeden z argumentów do przekształcenia pusty, a następnie przekształcenia oblicza rozmiar dla Ciebie! Bądź ostrożny, jeśli spróbujesz tego, a rozmiar A nie będzie zgodny, wtedy dostaniesz błąd. Tak więc:
reshape(magic(3),[],2)
??? Error using ==> reshape
Product of known dimensions, 2, not divisible into total number of elements, 9.
Logicznie, nie możemy utworzyć tablicy z dwiema kolumnami z elementu zawierającego 9 elementów. Zrobiłem funkcję o nazwie wreshape na centralnej centrali MATLAB, która w razie potrzeby wykona tę operację, bez generowania błędu.
Oczywiście, zawsze można użyć sztuczki jak
B = A(:);
stworzyć wektor bezpośrednio z matrycy. Jest to równoważne postaci
B=reshape(A,[],1);