通过举例彻底搞懂Matlab中max函数和min函数的用法(求最大值和最小值)

今天做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即可。

转载请注明出处。

猜你喜欢

转载自blog.csdn.net/BaoITcore/article/details/123645614