在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.示例

下面举一个简单的例子,例如计算班级考生成绩的最高分和最低分。例如:

求向量的最大值和标准差 python 向量最大值怎么求_matlab

 例如,我们计算所有成绩的最大值的代码如下所示:

X=xlsread('成绩.xlsx','sheet1','B2:B35');
Y=max(X)

结果如下所示:

Y =
    98

通过结果我们可以看到,使用max()函数可以比较轻松地直接求解最大值。