我有2个数组(向量?在m
白话?)我想要一致排序它们。我怎样才能在Matlab中实现这一目标?
例如;我从直方图中找到了峰值,它们存储在2个数组中; peakXVals
,peakYVals
。它们将始终以x轴上升指数排列。所以他们总是看起来像:
peakXVals = [0, 3, 20, 77, 240];
peakYVals = [10, 999, 30, 40, 20];
我希望根据peakYVals
中的值按降序对两个数组进行排序。即从最大峰值到最小峰值。所以期望的结果是:
peakXVals = [3, 77, 20, 240, 0];
peakYVals = [999, 40, 30, 20, 10];
我可以用什么函数在Matlab中实现这个功能?
答案 0 :(得分:2)
使用sort
:
peakXVals = [0, 3, 20, 77, 240];
peakYVals = [10, 999, 30, 40, 20];
>> [B,I] = sort(peakYVals, 'descend')
B =
999 40 30 20 10
I =
2 4 3 5 1
然后:
>> peakXVals_sorted = peakXVals(I)
peakXVals_sorted =
3 77 20 240 0
>> peakYVals_sorted = B
peakYVals_sorted =
999 40 30 20 10
答案 1 :(得分:1)
您可以将两个向量排列为矩阵的列,并按字典顺序将该矩阵的行排序为原子。然后结果是排序矩阵的列:
tmp = sortrows([peakYVals(:) peakXVals(:)], 'descend');
peakYVals = tmp(:,1).';
peakXVals = tmp(:,2).';