一、Max
在 MATLAB 中,max 函数用于计算数组或矩阵中的最大值。它可以返回最大值本身,也可以返回最大值的位置索引。max 函数非常灵活,可以处理不同类型的输入,包括向量、矩阵和多维数组。
基本语法
max(A)
[C,idx] = max(A)
[C,rowIdx,colIdx] = max(A)
max(A,[],dim)
max(A,B)
[C,idx] = max(A,B,[],dim)
A和B是输入数组或矩阵。C是返回的最大值。idx是返回的最大值的位置索引。rowIdx和colIdx分别返回最大值所在的行和列索引(当A是矩阵时)。dim指定了要计算最大值的维度(例如,1 表示沿列方向,2 表示沿行方向)。
示例
- 计算向量中的最大值
A = [1, 3, 2, 5, 4]; maxValue = max(A);这里
maxValue将是 5。 - 计算矩阵每列的最大值
A = [1, 3, 2; 4, 1, 5; 7, 8, 0]; [maxValuePerCol, colIdx] = max(A);这里
maxValuePerCol将是每列的最大值[7, 8, 5],colIdx将是这些最大值在各自列中的行索引[3, 3, 2]。 - 计算矩阵每行的最大值
[maxValuePerRow, rowIdx] = max(A, [], 2);这里
maxValuePerRow将是每行的最大值[4, 8, 7],rowIdx将是这些最大值在各自行中的列索引[2, 2, 1]。注意,这里使用了第二个参数[]和第三个参数2来指定沿行方向计算最大值。 - 计算两个数组中对应元素的最大值
A = [1, 3, 2]; B = [4, 1, 5]; maxValue = max(A, B);这里
maxValue将是[4, 3, 5],即 A 和 B 中对应元素的最大值。 - 计算多维数组中的最大值
对于多维数组,你可以使用 dim 参数来指定要计算最大值的维度。例如,对于一个 3x3x3 的三维数组,你可以计算每个平面(2D 切片)上的最大值,或者计算整个数组中的全局最大值。
注意事项
- 当使用
max函数计算矩阵的最大值时,如果不指定维度(dim),则默认计算每列的最大值。 - 当输入是两个数组时,
max函数会计算它们对应元素的最大值,并返回一个与输入数组相同大小的数组。 - 对于多维数组,使用
dim参数可以灵活地计算沿任意维度的最大值。
二、Min
在 MATLAB 中,min 函数用于查找数组或矩阵中的最小值。这个函数可以应用于向量、矩阵以及多维数组,并且可以返回最小值本身以及该最小值在数组中的位置索引(如果请求的话)。
基本用法
对于向量,min 函数返回一个标量,即该向量中的最小值。
% 创建一个向量
v = [3, 1, 4, 1, 5, 9, 2];
% 查找向量中的最小值
minValue = min(v);
disp('向量中的最小值:');
disp(minValue);
对于矩阵,min 函数默认会返回每列中的最小值,返回一个行向量。如果想要返回每行中的最小值,可以指定第二个参数为维度。
% 创建一个矩阵
A = [1, 3, 2; 4, 1, 5; 2, 6, 4];
% 查找矩阵中每列的最小值
minValueCol = min(A);
disp('每列的最小值:');
disp(minValueCol);
% 查找矩阵中每行的最小值
minValueRow = min(A, [], 2);
disp('每行的最小值:');
disp(minValueRow);
返回索引
如果想要知道最小值在数组中的位置,可以请求第二个输出参数,它将是包含最小值索引的数组。
% 查找向量中的最小值及其索引
[minValue, minIndex] = min(v);
disp('向量中的最小值:');
disp(minValue);
disp('向量中最小值的索引:');
disp(minIndex);
% 查找矩阵中每列的最小值及其索引
[minValueCol, minIndexCol] = min(A);
disp('每列的最小值:');
disp(minValueCol);
disp('每列最小值的索引:');
disp(minIndexCol);
注意,当应用于矩阵并请求索引时,返回的索引将对应于矩阵被展平为列向量后的位置。如果你想要得到在原始矩阵中的行和列索引,你需要进行一些额外的计算。
多维数组
min 函数也可以应用于多维数组。对于多维数组,你可以指定要沿其查找最小值的维度。
% 创建一个三维数组
B = rand(3, 4, 5); % 随机生成一个3x4x5的数组
% 查找第三维上的最小值(即每个2D切片的最小值)
minValue3D = min(B, [], 3);
disp('第三维上的最小值:');
disp(minValue3D);
在这个例子中,minValue3D 将是一个3x4的矩阵,包含原始三维数组B在每个2D切片(即每个5x5的子矩阵)上的最小值。
2万+

被折叠的 条评论
为什么被折叠?



