MATLAB中sort线索引转换为行列索引

 MATLAB中sort函数可以对数据进行排序,本代码在此基础上,将sort返回的数据的线索引转换为原始矩阵的行列索引,以矩阵matrix = [8 4; 7 1; 3 6]为例,运行代码可得到如下结果:

具体代码如下: 

% matrix是需要排序的矩阵
matrix = [8 4; 7 1; 3 6];

% 获取矩阵的大小
[rows, cols] = size(matrix);
rows_cols = rows*cols;
index_matrix = zeros(2,rows_cols);

% 初始化一个与矩阵元素数量相同的索引数组
indices = 1:rows*cols;

% 将矩阵转换为列向量
matrix_vector = matrix(:);

% 降序排序矩阵的列向量
[sorted_matrix_vector, sorted_indices] = sort(matrix_vector, 'descend');

% 根据排序后的索引获取原始索引
original_indices = indices(sorted_indices);   % 矩阵是按列进行计数的。

% 将排序后的列向量转换回矩阵形式
sorted_matrix = reshape(sorted_matrix_vector, [rows, cols]);
IX_fac = sorted_matrix(:);

% 将原始线索引转换为行和列索引
for i_rows_cols = 1:rows_cols
    original = original_indices(i_rows_cols);
    % 获取行索引
    if mod(original,rows) == 0
        original_row_final = rows;
    else
        original_row_final = mod(original,rows);
    end
    % 获取列索引
    original_col_final = floor((original-1)/rows)+1;
    % 存储行列索引
    index_matrix(:,i_rows_cols) = [original_row_final;original_col_final];
end

% % 显示结果
disp('原始矩阵');
disp(matrix);
disp('从大到小的线索引:');
disp(original_indices);
disp('从大到小的行列索引:');
disp(index_matrix);

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿呆汪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值