2014-12-04 22 views
7

Tôi có một ma trận 3 x 3 x 2, ví dụ:Matlab - Transpose một ma trận 3D chỉ trong chiều thứ ba

M(:,:,1) = 
    1  2  3 
    4  5  6 
    7  8  9 

M(:,:,2) = 
    10 11 12 
    13 14 15 
    16 17 18 

và tôi muốn transpose mỗi M(:,:,i), tôi có nghĩa là tôi muốn có :

M(:,:,1) = 
    1  4  7 
    2  5  8 
    3  6  9 

M(:,:,2) = 
    10 13 16 
    11 14 17 
    12 15 18 

Làm cách nào để thực hiện điều này mà không có vòng lặp? Cảm ơn bạn rất nhiều!

Trả lời

11

Đó là những gì permute làm:

result = permute(M, [2 1 3]); %// swap dimensions 1 and 2 
+1

Đây là một trong những thủ đoạn đầu tiên tôi học được từ bạn. +1. – rayryeng

+0

rất đẹp ... + 1 – Rashid

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