最小值矩阵A第2~3行2列的索引行和索引列
Index row and index column of the minimum value matrix A in 2nd until 3rd row and 2nd column
我有如下MATLAB代码:
clear all;
clc;
A=[1 0 3;4 3 0;5 10 3]
[rows,columns]=find(A(:,2)==min(A(2:3,2)))
我想在第2到第3行和第2列中找到最小值矩阵A的索引行和索引列。手动,我们可以找到最小值为 3,索引行=2,索引列=2(见下图)
但是我的问题是如果我使用上面的代码,结果是不一样的。谁能帮帮我?
由于您输入的是列索引,因此无需再次查找。更好的方法是只做:
col_ind = 2;
[minimum, row_ind] = min(A(2:3,col_ind));
row_ind = row_ind+1; %1 is added since first row is skipped in above line
在您的代码中,
A(2:3, 2)
只有 1 列。所以 columns
将永远是 1
.
- 如果
A(1,2)
也与最小值相同,您的代码将 return 第一个值的行索引。
- 在计算中跳过第一行和第一列的事实未包含在输出中。
解决以上问题:
[rows,columns]=find(A(2:3,2)==min(A(2:3,2)));
rows=rows+1; columns=columns+1;
我有如下MATLAB代码:
clear all;
clc;
A=[1 0 3;4 3 0;5 10 3]
[rows,columns]=find(A(:,2)==min(A(2:3,2)))
我想在第2到第3行和第2列中找到最小值矩阵A的索引行和索引列。手动,我们可以找到最小值为 3,索引行=2,索引列=2(见下图)
但是我的问题是如果我使用上面的代码,结果是不一样的。谁能帮帮我?
由于您输入的是列索引,因此无需再次查找。更好的方法是只做:
col_ind = 2;
[minimum, row_ind] = min(A(2:3,col_ind));
row_ind = row_ind+1; %1 is added since first row is skipped in above line
在您的代码中,
A(2:3, 2)
只有 1 列。所以columns
将永远是1
.- 如果
A(1,2)
也与最小值相同,您的代码将 return 第一个值的行索引。 - 在计算中跳过第一行和第一列的事实未包含在输出中。
解决以上问题:
[rows,columns]=find(A(2:3,2)==min(A(2:3,2)));
rows=rows+1; columns=columns+1;