实际上,我认为您在这里错误地反转了列和行。无论如何,让我们举一个例子,为了简单起见,使用矩阵。
让我们从行开始:
A = [
1 2 1 3;
8 3 1 6;
3 2 1 3;
7 9 1 8;
4 6 1 6
];
rows_sum = sum(A,2); % row-wise summation
[rows_sum_min,rows_sum_min_idx] = min(rows_sum);
变量rows_sum_min 将包含最小值(在本例中为7),而变量rows_sum_min_idx 将包含对应于最小值的行索引(1 在本例中为第一行) .
现在是列:
A = [
1 2 1 3;
8 3 1 6;
3 2 1 3;
7 9 1 8;
4 6 1 6
];
cols_sum = sum(A,1); % column-wise summation
[cols_sum_min,cols_sum_min_idx] = min(cols_sum);
变量cols_sum_min 将包含最小值(在本例中为3),而变量cols_sum_min_idx 将包含对应于最小值的行索引(3 在本例中为第三列) .
我不知道您为什么要使用 for 循环,因为使用 Matlab 编码时的主要目标是尝试尽可能多地对计算进行矢量化以获得卓越的性能。无论如何,如果你真的想要一个 for 循环......这里是列的例子:
A = [
1 2 1 3;
8 3 1 6;
3 2 1 3;
7 9 1 8;
4 6 1 6
];
[n,m] = size(A);
cols_sum = zeros(1,m);
for i = 1:n
cols_sum = cols_sum + A(i,:);
end
[cols_sum_min,cols_sum_min_idx] = min(cols_sum);
结果是一样的,只是你消耗了更多的时间和周期。