MATLAB学习(4)——min
矩阵中最小的元素
语法:
1 M = min(A)
%返回A的最小元素。如果A是一个向量,则min(A)返回A的最小元素。如果A是矩阵,则min(A)是包含每列最小值的行向量。如果A是一个多维数组,则min(A)沿着大小不等于1的第一个数组维度进行操作,将这些元素作为向量处理。此尺寸的尺寸变为1,而所有其他尺寸的尺寸保持不变。如果A是第一维0的空数组,则min(A)返回一个与A的大小相同的空数组。
2 M = min(A,[],dim)
%返回沿dim维度的最小元素。例如,如果A是矩阵,那么min(A,[],2)是包含每行最小值的列向量。
3 [M,I] = min(___)
%找到A的最小值的索引,并使用前面语法中的任何输入参数将它们返回到输出向量I中。如果最小值出现多次,则min返回与第一次出现相对应的索引。
4 C = min(A,B)
%返回从A或B中取出最小元素的数组。
5 ___ = min(___,nanflag)
%指定是否在任何前面的语法的计算中包含或省略NaN值。对于单输入的情况,要指定nanflag而不指定dim,请使用min(A,[],nanflag)。例如,min(A,[],'includenan')包含A中的所有NaN值,而min(A,[],'omitnan')忽略它们。
Input Arguments
(1)A是输入数组,指定为标量,向量,矩阵或多维数组。
- 如果A很复杂,那么min(A)返回幅度最小的复数。 如果幅度相等,则min(A)返回幅值最小且相位角最小的值。
- 如果A是标量,那么min(A)返回A.
- 如果A是一个0乘0的空数组,那么min(A)也是。
(2)dim是要一起操作的维度,指定为正整数标量。如果未指定值,则默认值是第一个数组维度,其大小不等于1。
dim表示长度减至1的维度。除非size(A,dim)为0,否则size(M,dim)为1,而所有其他维度的维度保持不变。如果size(A,dim)为0,那么min(A,dim)返回一个与A相同大小的空数组。
考虑一个二维输入数组,A:
- 如果dim = 1,则min(A,[],1)返回包含每列中最小元素的行向量。
- 如果dim = 2,则min(A,[],2)返回包含每一行中最小元素的列向量。
如果dim大于ndims(A),则返回A
(3)B 是输入数组,指定为标量,矢量,矩阵或多维数组。数字输入A和B必须具有相同的尺寸或具有兼容的尺寸(例如,A是M乘N矩阵,B是标量或1乘N行矢量)。有关更多信息,请参阅基本操作的兼容阵列尺寸。
- 如果A和B是日期时间,持续时间或分类数组,那么它们必须是相同的大小,除非它是标量。
- A和B必须是相同的数据类型,除非是双精度型。在这种情况下,另一个数组的数据类型可以是单个,持续时间或任何整数类型。
- 如果A和B是序数分类数组,它们必须具有相同顺序的相同类别组。
(4)nanflag - NaN条件
'omitnan'(默认)| 'includenan'
NaN条件,指定为以下值之一:
- 'omitnan' - 忽略输入中的所有NaN值。
- 'includenan' - 在计算输入中包含NaN值。
对于datetime数组,您也可以使用'omitnat'或'includenat'来分别省略和包含NaT值。
Output Arguments
(1)M是最小值,作为标量,向量,矩阵或多维数组返回。大小(M,dim)为1,除非尺寸(A,dim)为0,否则所有其他尺寸的尺寸都与A中相应尺寸的尺寸相匹配。如果尺寸(A,dim)为0,则M是与A相同大小的空阵列。
(2)I是索引到A的最小值,作为标量,向量,矩阵或多维数组返回。我与M的大小相同。如果最小元素出现多次,那么我包含第一次出现的值的索引。
(3)C是来自A或B的最小元素,作为标量,向量,矩阵或多维数组返回。 C的大小由A和B的维度的隐式扩展确定。有关更多信息,请参阅基本操作的兼容阵列大小。
C的数据类型取决于A和B的数据类型:
- 如果A和B是相同的数据类型,则C匹配A和B的数据类型。
- 如果A或B是单一的,那么C是单一的。
- 如果A或B是一个整型数据类型,另一个是标量double,那么C将采用整型数据类型。
Examples
(1)Create a vector and compute its smallest element
A = [23 42 37 15 52]; %. M = min(A)
M = 15
(2)Create a complex vector and compute its smallest element, that is, the element with the smallest magnitude.
A = [-2+2i 4+i -1-3i]; % min(A)
ans = -2.0000 + 2.0000i
(3)Create a matrix and compute the smallest element in each column.
A = [2 8 4; 7 3 9]
A = 2 8 4 7 3 9
M = min(A)
M = 2 3 4
(4)Create a matrix and compute the smallest element in each row
A = [1.7 1.2 1.5; 1.3 1.6 1.99]
A = 1.7000 1.2000 1.5000 1.3000 1.6000 1.9900
M = min(A,[],2)
M = 1.2000 1.3000
(5)Create a matrix A and compute the smallest elements in each column as well as the row indices of A in which they appear.
A = [1 9 -2; 8 4 -5]
A = 1 9 -2 8 4 -5
[M,I] = min(A)
M = 1 4 -5 I = 1 2 2
(6)Create a matrix and return the smallest value between each of its elements compared to a scalar.
A = [1 7 3; 6 2 9]
A = 1 7 3 6 2 9
B = 5; C = min(A,B)
C = 1 5 3 5 2 5
(7)Create a matrixA
and use its column representation,A(:)
, to find the value and index of the smallest element.
A = [8 2 4; 7 3 9]
A = 8 2 4 7 3 9
A(:)
ans = 8 7 2 3 4 9
[M,I] = min(A(:))
M = 2
I = 3
%%%%%I
is the index ofA(:)
containing the smallest element.
(8)Now, use theind2sub
function to extract the row and column indices ofA
corresponding to the smallest element.
[I_row, I_col] = ind2sub(size(A),I)
I_row = 1 I_col = 2
(9) If you need only the minimum value of A
and not its index, call the min
function twice.
M = min(min(A))
M = 2
(10)Create a vector and compute its minimum, excludingNaN
values.
A = [1.77 -0.005 3.98 -2.95 NaN 0.34 NaN 0.19]; M = min(A,[],'omitnan')
M = -2.9500
(11)min(A)
will also produce this result since'omitnan'
is the default option.Use the'includenan'
flag to returnNaN
.
M = min(A,[],'includenan')
M = NaN