matlab求矩阵最值

前言

最近应该算是比较忙的时候,好几天没有更新了,我的博客也尽量由浅入深,时常总结。

矩阵最值

往往矩阵的最值(极值)在不同的维度上有最大值、最小值,因此对于矩阵进行最值索引该如何操作,是一个大的问题,这里直接利用Matlab的自带的函数来解决问题,并举例进行简单的应用。

案例实践

1基于max与min求不同维度最值

M = max(A) 返回数组的最大元素。
如果 A 是向量,则 max(A) 返回 A 的最大值。
如果 A 为矩阵,则 max(A) 是包含每一列的最大值的行向量。
如果 A 是多维数组,则 max(A) 沿大小不等于 1 的第一个数组维度计算,并将这些元素视为向量。此维度的大小将变为 1,而所有其他维度的大小保持不变。如果 A 是第一个维度长度为零的空数组,则 max(A) 返回与 A 大小相同的空数组。
一般来说matlab的函数操作都是对列进行操作的,例如基于[b,index]=max(a),函数直接默认对每列求最大值,并返回其中每列最大元素所对应的行索引,min函数同理。
在这里插入图片描述
如果想要变为对行操作就要改变语句函数输入形式,
M = max(A,[],dim) 返回维度 dim 上的最大元素。例如,如果 A 为矩阵,则 max(A,[],2) 是包含每一行的最大值的列向量。

在这里插入图片描述
可能大家会奇怪为什么中间会放一个[]空矩阵进去,这里尤其特定的用途,C = max(A,B) 返回从 A 或 B 中提取的最大元素的数组。再次测试实例如下:
在这里插入图片描述
可以发现,如果输入一个矩阵在第二个位置时,会将起进行比较,如果放一个与行数相同列向量,会将其一列一列进行比较较大者放在A矩阵相同的位置,如果输入一个与列相同的行向量,同理。

2 基于mink与maxk函数索引

由于前期mink函数与maxk函数我已经放在我的一篇博客里,这里提供链接,不再讲解
https://blog.csdn.net/qq_44589327/article/details/105311882

3基于最值范围索引

由于有时需要同时返回一个矩阵的最大值与最小值,这是如果用max(max(a))就相对来说比较麻烦这里用minmax函数可以快速返回最值,
minmax()函数用于获取数组中每一行的最小值和最大值,实例如下
在这里插入图片描述
但是这里返回到的时矩阵的每一行最值,如果想要每一列范围,直接将矩阵转置即可。

总结

求矩阵,数组最值往往有大量的库函数来满足需求,一般较为简单的矩阵运算基本上可以通过条件判断与最值函数调用即可对目标元素进行提取并找到位置,这也是matlab在矩阵运算的便捷之处。

附录

a=[5,4,3,2;7,5,6,9;1,2,5,4];
[b,i]=max(a)
max(a,[],1)
max(a,[],2)
c=[1,2,3];
c=[1;2;3];
c=[1,2,3,4];
minmax(minmax(a))

猜你喜欢

转载自blog.csdn.net/qq_44589327/article/details/105429272
今日推荐