2009-02-01 35 views

Trả lời

30

UPDATE: Trong các phiên bản mới hơn của MATLAB (R2013b và sau) nó được ưa thích sử dụng chức năng flip thay vì flipdim, trong đó có sự kêu gọi tương tự cú pháp:

a = flip(a, 1); % Reverses elements in each column 
a = flip(a, 2); % Reverses elements in each row 



Tomas có câu trả lời đúng. Để thêm một chút, bạn cũng có thể sử dụng tổng quát hơn flipdim:

a = flipdim(a, 1); % Flips the rows of a 
a = flipdim(a, 2); % Flips the columns of a 

Một chút lừa thêm ... nếu vì lý do gì bạn phải lật cả hai kích thước của một mảng 2-D, bạn có thể gọi flipdim hai lần:

a = flipdim(flipdim(a, 1), 2); 

hoặc gọi rot90:

a = rot90(a, 2); % Rotates matrix by 180 degrees 
+0

Chỉnh sửa của bạn, bạn cũng có thể chỉ sử dụng 'b = a (kết thúc: -1: 1);' để lật TẤT CẢ kích thước của ma trận. –

+2

Một báo trước cho tùy chọn đó là ma trận xuất hiện để được định dạng lại thành một vectơ 1 độ dài (a), vì vậy bạn sẽ phải gọi lại sau đó. Đây có thể là phiên bản cụ thể (tôi đang chạy MATLAB ver. 7.1). – gnovice

+1

Ah, đúng vậy. Bạn sẽ phải sử dụng định hình lại. –

14

bạn có thể sử dụng

rowreverse = fliplr(row) % for a row vector (or each row of a 2D array) 
colreverse = flipud(col) % for a column vector (or each column of a 2D array) 

genreverse = x(end:-1:1) % for the general case of a 1D vector (either row or column) 

http://www.eng-tips.com/viewthread.cfm?qid=149926&page=5

18

Một giải pháp đơn giản là

b = a(end:-1:1); 

Bạn cũng có thể sử dụng thứ nguyên này trên một thứ nguyên cụ thể.

b = a(:,end:-1:1); % Flip the columns of a 
+0

Điểm tốt. END làm cho mọi thứ sạch hơn và dễ đọc hơn bằng cách loại bỏ các đối số như "length (a)". – gnovice

Các vấn đề liên quan