Sort array based on struct fields' values
Show older comments
Hi all,
I'm having trubles with a specific operation: I'm trying to sort an array that contains four different numbers using a specific struct that associates to each of these number a specific value. For example I have that:
- emitters = [12, 24, 48, 84];
- Frequency.(strcat('Em_',num2str(emitters(idx_em)))) = frequency values associated to that specific emitter
I would like to sort the emitters array (row vector) in an increasing order based on the values indicated in the corresponding struct. So ordering the values in the struct in an increasing order will give an indication of how the array should be organized, and then order the latter as well.
How it can be done?
Thank you for the precious help!
1 Comment
"How it can be done?"
SORT the vales from the structure, getting the 2nd output (the sort indices). Use the sort indices to rearrange the vector.
What have you tried so far?
Note that hiding meta-data in fieldnames is complicated and likely makes this task harder. Using e.g. a non-scalar structure instead would likely make this task easier and more efficient.
Accepted Answer
More Answers (1)
The following is a sample code to sort the array arr1 and rearrange the elements at corresponding indices of arr2:
arr1=[7 8 5 6];
arr2=[1 2 3 4];
[~,sort_idx] = sort(arr1);
arr2=arr2(sort_idx)
1 Comment
slow_hand
on 30 Mar 2024
Categories
Find more on Shifting and Sorting Matrices in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!