在MATLAB中我们经常需要对于向量或者矩阵求解最值。本篇文章主要讲解的是在MATLAB中求解向量或者是矩阵的最值问题。
1.求解向量的最大值和最小值
在MATLAB中想要对于求解数据的最大值和最小值的函数是max和min函数,这两个函数在用法上基本相同。
如何求解一个向量的最值的函数有两种形式:
(1)Y=max(X)和Y=max(X)
这种调用方式是求解向量X中的最大值和最小值,并且将该值赋值给向量Y。如果X中有复数的话,那么该复数元素会取其模长进行比较。
例如我们举下面这个例子:
X=[23,34,15,36,34,19,32,97,8,41];
Y1=max(X)
Y2=min(X)
结果显示为:
Y1 =
97
Y2 =
8
通过上面公式的结果可以看出,使用该方式可以直接将最值赋值给想要的变量上面。
(2)[Y,N]=max(X)和[Y,N]=min(X)
这种调用方式是将向量中的X的最值赋值该y,并且将该最值所在的序号赋值给N。
我们使用这种方式对于上述向量进行求最值:
X=[23,34,15,36,34,19,32,97,8,41];
[Y1,N1]=max(X)
[Y2,N2]=min(X)
结果如下所示:
Y1 =
97
N1 =
8
Y2 =
8
N2 =
9
2.求解矩阵的最大值和最小值
(1)max(A)和min(A)
这种矩阵调用方式所得到的结果是一个行向量,该行向量中第i个元素所代表的是矩阵中第i列最大的值。
例如:
X=[2,3,5,8;4,9,12,5;7,8,11,14;6,7,9,2];
Y=max(X)
结果如下所示:
Y =
7 9 12 14
如果矩阵中含有复数的话,那么会取其模长进行比较,如果该列中最大值为该复数的模长的话,那么整个矩阵返回的行向量的所有元素均会以复数的形式显示。例如:
X=[2,3+7i,5,8;4,9,12+4i,5;7,8+9i,11+10i,14;6,7,9,2];
Y=max(X)
运行结果如下所示:
Y =
7.0000 + 0.0000i 8.0000 + 9.0000i 11.0000 +10.0000i 14.0000 + 0.0000i
(2)[Y,N]=max(X)或者[Y,N]=min(X)
返回行向量Y和N,Y向量记录X的每列的最值,N向量表示的是每列最大值的行数。
X=[2,3,5,8;4,9,12,5;7,8,11,14;6,7,9,2];
[Y,N]=max(X)
运行结果如下所示:
Y =
7 9 12 14
N =
3 2 2 3
(3)max(X,[],dim)和min(X,[],dim)
上式中dim的值可以取1或者2,如果dim为1的时候,该函数和max(A)是相同的;当dim为2的时候,那么结果返回的是一个列向量,其中第i个元素是矩阵的最大值。
例如当dim的值取1的时候:
X=[2,3,5,8;4,9,12,5;7,8,11,14;6,7,9,2];
[Y,N]=max(X,[],1)
运行结果如下所示:
Y =
7 9 12 14
N =
3 2 2 3
当dim的值为2时:
X=[2,3,5,8;4,9,12,5;7,8,11,14;6,7,9,2];
[Y,N]=max(X,[],2)
结果如下所示:
Y =
8
12
14
9
N =
4
3
4
3
3.示例
下面举一个简单的例子,例如计算班级考生成绩的最高分和最低分。例如:
例如,我们计算所有成绩的最大值的代码如下所示:
X=xlsread('成绩.xlsx','sheet1','B2:B35');
Y=max(X)
结果如下所示:
Y =
98
通过结果我们可以看到,使用max()函数可以比较轻松地直接求解最大值。