MATLAB中子矩阵最小值索引转原矩阵索引的实现方法
子矩阵索引转原矩阵索引的方法
首先明确子矩阵mA在原矩阵A中的行、列选取范围——比如你的代码里mA = A(3:5,5:7),对应的行范围是3到5,列范围是5到7。
已知子矩阵内的索引z = [rows(col), col],转换为原矩阵索引的逻辑很简单:
- 原矩阵行索引 = 子矩阵起始行 + z(1) - 1
- 原矩阵列索引 = 子矩阵起始列 + z(2) - 1
针对你的代码示例的具体实现
直接补充代码即可得到原矩阵的对应索引:
A = magic(11) mA = A(3:5,5:7) [~,rows] = min(mA) [~,col] = min(min(mA)) z = [rows(col),col] % 转换为原矩阵索引 row_A = 3 + z(1) - 1; % 子矩阵起始行是3 col_A = 5 + z(2) - 1; % 子矩阵起始列是5 idx_A = [row_A, col_A]
通用化写法(避免硬编码)
如果不想固定写死起始行和列,可以先把选取范围存为变量,适配任意子矩阵的情况:
A = magic(11); row_range = 3:5; % 子矩阵的行范围 col_range = 5:7; % 子矩阵的列范围 mA = A(row_range, col_range); [~,rows] = min(mA); [~,col] = min(min(mA)); z = [rows(col), col]; % 通用转换逻辑 row_A = row_range(1) + z(1) - 1; col_A = col_range(1) + z(2) - 1; idx_A = [row_A, col_A];
内容的提问来源于stack exchange,提问作者cswah
相关产品推荐
相关产品推荐

