Tôi đang làm việc với hệ thống truy xuất hình ảnh bằng cách sử dụng giao điểm biểu đồ màu trong MATLAB. Phương pháp này cung cấp cho tôi dữ liệu sau: một số thực đại diện cho khoảng cách giao giữa biểu đồ và tên tệp hình ảnh. Vì chúng là các kiểu dữ liệu khác nhau, tôi lưu trữ chúng trong mảng cấu trúc với hai trường, và sau đó tôi lưu cấu trúc này trong một tệp .mat. Bây giờ tôi cần phải sắp xếp cấu trúc này theo khoảng cách giao giữa biểu đồ theo thứ tự giảm dần để lấy lại hình ảnh có khoảng cách giao giữa biểu đồ cao nhất. Tôi đã thử nhiều phương pháp để sắp xếp dữ liệu này nhưng không có kết quả. Bạn có thể giúp tôi giải quyết vấn đề này không?Làm thế nào để sắp xếp các mảng cấu trúc trong MATLAB?
Trả lời
Dưới đây là một ví dụ về cách bạn có thể làm điều này, sử dụng chức năng MAX thay vì phải sắp xếp:
%# First, create a sample structure array:
s = struct('value',{1 7 4},'file',{'img1.jpg' 'img2.jpg' 'img3.jpg'});
%# Next concatenate the "value" fields and find the index of the maximum value:
[maxValue,index] = max([s.value]);
%# Finally, get the file corresponding to the maximum value:
maxFile = s(index).file;
EDIT: Nếu bạn muốn để có được giá trị cao nhất N, và không chỉ là tối đa, bạn có thể sử dụng SORT thay vì MAX (as Shaka suggested). Ví dụ: (sử dụng cấu trúc trên):
>> N = 2; %# Get two highest values
>> [values,index] = sort([s.value],'descend'); %# Sort all values, largest first
>> topNFiles = {s(index(1:N)).file} %# Get N files with the largest values
topNFiles =
'img2.jpg' 'img3.jpg'
Cũng có thể sắp xếp toàn bộ cấu trúc.
Xây dựng tắt của dụ gnovice của ...
% Create a structure array
s = struct('value',{1 7 4},'file',{'img1.jpg' 'img2.jpg' 'img3.jpg'});
% Sort the structure according to values in descending order
% We are only interested in the second output from the sort command
[blah, order] = sort([s(:).value],'descend');
% Save the sorted output
sortedStruct = s(order);
Lưu ý: để sắp xếp theo tên tệp (hoặc bất kỳ chuỗi nào), bạn sẽ làm '[~, order] = sort ({s.file});', rồi 'sortStruct = s (thứ tự);'. Bạn không thể sử dụng ''descend'' trong trường hợp đó, cho đến khi điều này được thực hiện trong một số phiên bản tương lai của Matlab. –
- 1. Cách sắp xếp một mảng các cấu trúc trong ColdFusion
- 2. các cột sắp xếp trong Matlab
- 3. Xóa các mục khỏi một mảng cấu trúc trong MATLAB
- 4. Làm cách nào để tôi sắp xếp cấu trúc dưới dạng con trỏ tới cấu trúc?
- 5. Làm thế nào để lát một mảng cấu trúc?
- 6. Làm thế nào để sắp xếp mảng trong javascript?
- 7. Mảng cấu trúc Matlab: Phân bổ nhanh
- 8. Làm thế nào để sắp xếp một mảng byte/uint8 dưới dạng mảng json trong Go?
- 9. Làm thế nào để vượt qua một mảng cấu trúc đến một mảng cấu trúc?
- 10. sắp xếp một vector của các cấu trúc
- 11. Sắp xếp thuật toán với Qt/C++ - sắp xếp một QList của cấu trúc
- 12. Sắp xếp mảng MATLAB di Across nhiều cột
- 13. EXC_BAD_ACCESS liên quan đến sắp xếp cấu trúc?
- 14. Matlab: làm thế nào để chuyển đổi mảng ô của cấu trúc thành mảng cấu trúc bằng cách sử dụng toán tử đại tràng?
- 15. Làm thế nào để sắp xếp các số trong Perl?
- 16. Octave/MATLAB: Làm thế nào để so sánh các cấu trúc cho sự bình đẳng?
- 17. Làm cách nào để sắp xếp một mảng trong Scala?
- 18. Sắp xếp các mảng liên kết trong Python
- 19. Khi nào thích hợp để sử dụng mảng ô so với cấu trúc trong Matlab?
- 20. Tự động sắp xếp lại trường trong các cấu trúc C để tránh đệm
- 21. Có tên cho bộ sưu tập cấu trúc dữ liệu mảng được sắp xếp này không?
- 22. Làm thế nào để sắp xếp một mảng có kích thước biến của các cấu trúc? C# và C++ interop giúp đỡ
- 23. Làm cách nào để sắp xếp một mảng với coffeescript?
- 24. Làm thế nào để sắp xếp các phím HashMap
- 25. Làm thế nào để sắp xếp các chuỗi số nguyên?
- 26. Làm cách nào để "sắp xếp zip" các mảng có nhiều mảng song song?
- 27. mảng Sắp xếp lại
- 28. Làm thế nào để sử dụng std :: sắp xếp với một vector cấu trúc và so sánh chức năng?
- 29. Làm thế nào để bạn sắp xếp một mảng các đối tượng?
- 30. php làm thế nào để sắp xếp từng mảng các đối tượng?
bạn cũng có thể sử dụng ** mèo (1, s.value) ** để nối các giá trị – Amro
Cảm ơn bạn rất nhiều vì trả lời, tôi sẽ cố gắng để sử dụng chức năng này. Tôi có thể lấy địa chỉ email của bạn để gửi cho bạn mã số cá nhân matlab của tôi cảm ơn –
@zenab: Địa chỉ email của tôi nằm trong tiểu sử của tôi. Hãy thả cho tôi một dòng nếu bạn có bất cứ điều gì bạn muốn thảo luận trực tiếp. – gnovice