Định hình lại tất nhiên là giải pháp chuẩn để định hình lại mảng. (Họ sẽ gọi nó là gì nữa?) Vẫn còn một vài thủ thuật để khám phá.
Trước hết, cách đơn giản nhất để biến mảng có kích thước [n, m, p] thành một mảng có kích thước [n * m, p]?
B = reshape(A,n*m,p);
Nhưng tốt hơn là thế này:
B = reshape(A,[],p);
Nếu bạn để một trong những lập luận để định hình lại trống rỗng, sau đó định hình lại tính kích thước dành cho bạn! Hãy cẩn thận, nếu bạn thử điều này và kích thước của A không phù hợp, sau đó bạn sẽ nhận được một lỗi. Do đó:
reshape(magic(3),[],2)
??? Error using ==> reshape
Product of known dimensions, 2, not divisible into total number of elements, 9.
Về mặt logic, chúng tôi không thể tạo một mảng gồm hai cột từ thứ gì đó có 9 phần tử trong đó. Tôi đã đặt một chức năng gọi là wreshape trên trao đổi trung tâm MATLAB mà sẽ pad khi cần thiết để làm điều này hoạt động mà không có lỗi tạo ra.
Tất nhiên, bạn luôn có thể sử dụng thủ đoạn như
B = A(:);
để tạo ra một vector trực tiếp từ một ma trận. Điều này tương đương với biểu mẫu
B=reshape(A,[],1);
Nguồn
2010-02-13 13:33:10