如何在Matlab中根据指定函数计算结果对矩阵行进行排序
Matlab 按指定向量对矩阵行排序的实现方法
核心逻辑:Matlab 内置的sort函数支持返回第二个输出参数,即排序后元素对应原数组的位置索引,利用该索引即可同步调整原矩阵的行顺序,实现与fx排序结果的完全匹配。
基础实现(按fx升序调整a的行顺序)
不要直接对fx赋值排序后的结果,改为获取排序索引后再提取矩阵:% 原有代码 a = rand(4,4); fx = sum(a,2); % 新增排序逻辑 [~, idx] = sort(fx); % ~为占位符,忽略第一个返回的排序后fx值,仅保留索引 sorted_a = a(idx, :); % 按索引顺序提取a的所有行,得到排序后的矩阵扩展场景
- 若需要同时保留排序后的fx值,将占位符
~替换为自定义变量即可:[sorted_fx, idx] = sort(fx); sorted_a = a(idx, :); - 若需要按fx降序排序,给
sort添加'descend'参数:[~, idx] = sort(fx, 'descend'); sorted_a = a(idx, :);
- 若需要同时保留排序后的fx值,将占位符
内容的提问来源于stack exchange,提问作者dan
相关产品推荐
相关产品推荐

