今天做Matlab作业要求让找出最大值和最小值,查了一些资料,进行总结一下,话不多说,直接进入主题。max和min函数主要有以下几种用法。
max(A):
如果A是一个行向量,即1 x M维的向量,返回的是这一行的最大值。
例如:
在matlab的命令行窗口定义一个行向量:
A = [4 3 2 5 6 8]; 1 x 6
然后使用max(A),结果为:8 。
如果A是一个列向量,即 M x 1维的向量,返回的是这一列的最大值。
例如:
在matlab的命令行窗口定义一个列向量:
A = [4;3;2;5;6;8] 6 x 1
然后使用max(A),结果为:8 。
如果A是一个矩阵,即 M x N维的矩阵,max(A)函数则将该矩阵的每一列进行比较,即将N列的数据分别找出最大值,返回的是1 x N维的行向量,因为1列求一个最大值,所以N列就要求N个最大值。
例如:
在matlab的命令行窗口定义一个矩阵:
A = [4 6 2 3 5;6 8 2 9 1;12 23 18 2 7] --->3 x 5(三行五列,M=3,N=5)
然后使用max(A),结果为:12 23 18 9 7
如图所示:
总结:可以记住一个规律,即:max(A)返回的是一个行向量(返回一个值那就是1 x 1的行向量),向量的第i个元素就是A(A可以是行向量列向量和矩阵)的第i列上的最大值。
max(A,[],dim):
这个函数主要在A是一个矩阵的时候被使用。dim的全称是dimension,意思是维数。dim可以取1或2。
当取1的时候,意思和上面的max(A)所得到的结果是一样的,取得是A矩阵每一列的最大值,返回的是一个1 x N维的行向量,这个行向量的第i个值,代表的是这个矩阵A第i列的最大值。
例如:
在matlab的命令行窗口定义一个矩阵:
A = [4 6 2 3 5;6 8 2 9 1;12 23 18 2 7] --->3 x 5(三行五列,M=3,N=5)
然后使用max(A,[],1),结果为:12 23 18 9 7
如图所示:
当dim取2的时候,得到的是A矩阵每一行的最大值,返回的是一个Mx 1维的列向量,这个列向量的第i个值,代表的是这个矩阵A第i行的最大值。注意和dim等于1时的区别,可以这样理解:dim等于1时是找每一列的最大值,N列就会有N个值;dim等于2时是找该矩阵每一行的最大值,M行就会有M个值。
例如:
在matlab的命令行窗口定义一个矩阵:
A = [4 6 2 3 5;6 8 2 9 1;12 23 18 2 7] --->3 x 5(三行五列,M=3,N=5)
然后使用max(A,[],2),结果为:6;9;3
如图所示:
如果我们不仅想要得到最大值或者是最小值,我们还想得到最大值或者是最小值的位置呢?
[Y, Z] = max(A, [], dim);
这个函数不仅使得我们能得到最大值或者是最小值,我们还能得到所在的列或者是行。
Y:在这里得到的是返回的最大值或者是最小值的集合,例如上面的max(A,[],dim):dim等于1时,则返回结果赋值给了Y,dim等于2时,则返回结果赋值给了Y,即Y用于接收得到的最大或者是最小值。
Z:若dim=1,这里得到的是Y结果中每一个值在矩阵A中的行数,即Y中的值出现在矩阵A的第几行。
例如:
在matlab的命令行窗口定义一个矩阵:
A = [4 6 2 3 5;6 8 2 9 1;12 23 18 2 7] --->3 x 5(三行五列,M=3,N=5)
如图所示:
然后使用[Y,Z] = max(A,[],1)
结果为:Y = 12 23 18 9 7
Z = 3 3 3 2 3
即Y中的每一个最大值,它所在矩阵中的行数被保存在了Z中。
Z:若dim=2,这里得到的是Y结果中每一个值在矩阵A中的列数,即Y中的值出现在矩阵A的第几列。
例如:
在matlab的命令行窗口定义一个矩阵:
A = [4 6 2 3 5;6 8 2 9 1;12 23 18 2 7] --->3 x 5(三行五列,M=3,N=5)
如图所示:
然后使用[Y,Z] = max(A,[],2)
结果为:Y = 6
9
23
Z = 2
4
2
如图所示:
即Y中的每一个最大值,它所在矩阵中的列数被保存在了Z中。
总结:dim等于1时,Y中的值是矩阵A按照列求最大值的集合,Z中保存了最大值在矩阵中的行号;dim等于2时,Y中的值是矩阵A按照行求最大值的集合,Z中保存了最大值在矩阵中的列号。
min的用法和上面一样,只需要把max这个关键字换做min即可。
转载请注明出处。