2013-12-10 18 views
6

Cho phép nói rằng tôi có ma trận sao cho A(:,:,1)=[1,2,3;2,3,4], A(:,:,2)=[3,4,5;4,5,6].Xóa thứ nguyên thứ ba của ma trận

Cách dễ nhất để truy cập và vẽ đồ thị các vectơ (1,2,3), (2,3,4), (3,4,5), (4,5,6). Tôi đã thử tạo B=[A(:,:,1);A(:,:,2)], nhưng tôi cần một thủ tục tùy ý số A.

Hy vọng đây không phải là tầm thường và tôi đã xây dựng bản thân mình thỏa đáng.

Trả lời

4

Giả sử thứ tự không quan trọng, đây là cách bạn có thể làm điều đó cho vectơ có độ dài 3:

B = reshape(shiftdim(A,2), [], 3) 
plot(B') 

Đối với vectơ kích thước tùy ý, thay thế 3 bởi size(A,2)

5

Bạn nên suy nghĩ 'theo chiều dọc '. Điều này sẽ cho phép bạn sử dụng lập chỉ mục thư đại tràng:

>> A(:,:,1) = [1,2,3;2,3,4].'; %'// NOTE: transpose of your original 
>> A(:,:,2) = [3,4,5;4,5,6].'; %'// NOTE: transpose of your original 
>> A(:,:) 
ans = 
    1  2  3  4 
    2  3  4  5 
    3  4  5  6 

Các chỉ mục thư đại tràng với hai dấu hai chấm công cho bất kỳ kích thước A:

>> A(:,:,:,:,1,1) = [1 2 3; 2 3 4].'; %' 
>> A(:,:,:,:,2,1) = [3 4 5; 4 5 6].'; %' 
>> A(:,:,:,:,1,2) = [5 6 7; 6 7 8].'; %' 
>> A(:,:,:,:,2,2) = [7 8 9; 8 9 0].'; %' 
>> A(:,:) 
ans = 
    1  2  3  4  5  6  7  8 
    2  3  4  5  6  7  8  9 
    3  4  5  6  7  8  9  0 

Colon lập chỉ mục trong MATLAB là khá thú vị và thực sự hữu dụng khi bạn làm chủ nó. Ví dụ, nếu bạn sử dụng ít dấu hai chấm hơn là có kích thước trong mảng (như trên), MATLAB sẽ tự động nối phần còn lại của dữ liệu dọc theo kích thước bằng số lượng dấu hai chấm. Vì vậy, nếu A có 48 kích thước, nhưng chỉ số của bạn chỉ với 2 dấu hai chấm: bạn sẽ nhận được một mảng 2D, đó là kết nối của 46 thứ nguyên còn lại dọc theo thứ nguyên 2 thứ.

Nói chung: nếu AN kích thước, nhưng bạn chỉ số chỉ với M ≤ N dấu hai chấm: bạn sẽ nhận được một mảng -D M, đó là nối của N-M kích thước còn lại dọc theo Mthứ kích thước.

Vì vậy, miễn là bạn có thể tự do định nghĩa A của bạn để chứa vectơ trên cột chứ không phải là hàng (bạn nên tư vấn cho tất cả mọi người để làm điều này, vì hầu như tất cả mọi thứ trong MATLAB là một chút nhanh hơn theo cách đó) , Tôi nghĩ đây là cách nhanh nhất và thanh lịch nhất để làm những gì bạn muốn.

Nếu không, tốt, sau đó chỉ reshape như Dan :)

+1

+1 để sử dụng chi tiết toán tử:! – bla

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