2011-01-10 6 views
8

Tôi có dữ liệu có dạng sau:Sắp xếp mảng MATLAB di Across nhiều cột

'of' 45001 23366 21859591 52876216 0 45001 
'on' 40649 23226 17940625 44201973 0 40649 
'my' 37976 18338 11277975 47042676 0 37976 
'me' 28707 18134 6546887 36222235 0 28707 

tôi tự hỏi như thế nào trong MATLAB tôi đi về sắp xếp nói cột 2 từ lớn nhất đến nhỏ nhất nhưng giữ tất cả các hàng khác liên kết với một thứ đang được sắp xếp - điều này cũng được lưu trữ trong một mảng ô.

Mọi trợ giúp sẽ được đánh giá cao.

+1

Liên quan/gần trùng lặp: [Làm cách nào để sắp xếp mảng 2-D trong MATLAB đối với một cột?] (Http://stackoverflow.com/questions/134712/how-can-i-sort-a- 2-d-array-in-matlab-với-tôn trọng-một-cột), [Làm thế nào tôi sẽ làm một loại lồng nhau trong MATLAB?] (Http://stackoverflow.com/questions/1262803/how-would- i-do-a-lồng nhau-sắp xếp-trong-matlab), [Làm thế nào để duy trì các hàng khi sắp xếp một ma trận trong MATLAB?] (http://stackoverflow.com/questions/2923118/how-do-i-maintain- hàng-khi-phân loại-một-ma trận-trong-matlab) – gnovice

Trả lời

14

Mặc dù bạn đang làm việc với một cell array, câu trả lời thực sự kết thúc lên được giống như liệt kê cho numeric arrays trong những câu hỏi chặt chẽ liên quan đến tôi liên kết với trong bình luận trên của tôi: chỉ cần sử dụng chức năng SORTROWS. Đây là cách bạn có thể sắp xếp các hàng của mảng di động của bạn theo các giá trị trong cột thứ hai (theo thứ tự giảm dần):

sortedCellArray = sortrows(cellArray,-2); 


LƯU Ý: Cần lưu ý rằng các tài liệu cho SORTROWS không xuất hiện để rõ ràng nói rằng chức năng sẽ hoạt động với các đầu vào mảng ô, nhưng nó có một ví dụ cho thấy rằng nó hoạt động cho họ giống như nó cho bất kỳ mảng nào khác.

+1

Duh. Tôi đã kiểm tra sự giúp đỡ để sắp xếp và có vẻ như nó không chấp nhận các mảng tế bào. – Jonas

+0

@Jonas: Đó là điều khiến tôi dừng lại khi gọi đây là một bản sao * chính xác *. Không có câu hỏi nào khác giải quyết dứt khoát với các mảng ô, và thậm chí cả * tài liệu * dường như không nói gì về nó! – gnovice

+0

Đó là lý do tại sao tôi cũng đã thực hiện một câu trả lời mới. Tôi đồng ý với bạn rằng đó là một bản sao thực sự gần. 1 cho câu trả lời tốt hơn, mặc dù. – Jonas