具体的求最值方法就转载了:http://www.zdh1909.com/html/matlab/17837.html
matlab中的的最大值和最小值
MATLAB提供的求数据序列的最大值和最小值的函数分别为max和min,两个函数的调用格式和操作过程类似。
1.求向量的最大值和最小值
求一个向量X的最大值的函数有两种调用格式,分别是:
(1) y=max(X):返回向量X的最大值存入y,如果X中包含复数元素,则按模取最大值。
(2) [y,I]=max(X):返回向量X的最大值存入y,最大值的序号存入I,如果X中包含复数元素,则按模取最大值。
求向量X的最小值的函数是min(X),用法和max(X)完全相同。
例3-1 求向量x的最大值。
命令如下:
x=[-43,72,9,16,23,47];
y=max(x) %求向量x中的最大值
[y,l]=max(x) %求向量x中的最大值及其该元素的位置
2.求矩阵的最大值和最小值
求矩阵A的最大值的函数有3种调用格式,分别是:
(1) max(A):返回一个行向量,向量的第i个元素是矩阵A的第i列上的最大值。
(2) [Y,U]=max(A):返回行向量Y和U,Y向量记录A的每列的最大值,U向量记录每列最大值的行号。
(3) max(A,[],dim):dim取1或2。dim取1时,该函数和max(A)完全相同;dim取2时,该函数返回一个列向量,其第i个元素是A矩阵的第i行上的最大值。
求最小值的函数是min,其用法和max完全相同。
例3-2 分别求3×4矩阵x中各列和各行元素中的最大值,并求整个矩阵的最大值和最小值。
3.两个向量或矩阵对应元素的比较
函数max和min还能对两个同型的向量或矩阵进行比较,调用格式为:
(1) U=max(A,B):A,B是两个同型的向量或矩阵,结果U是与A,B同型的向量或矩阵,U的每个元素等于A,B对应元素的较大者。
(2) U=max(A,n):n是一个标量,结果U是与A同型的向量或矩阵,U的每个元素等于A对应元素和n中的较大者。
min函数的用法和max完全相同。
例3-3 求两个2×3矩阵x, y所有同一位置上的较大元素构成的新矩阵p。
想说的是在求解中,以求最小值为例。
通过min查找返回的是第一个最小值得大小与位置,上例子:
clc;
clear all;
B=[ 2 1 3 2 5 6 1];
[K,L] = min(B)
结果:
K =
1
L =
2
可以看出只返回了第一个最小值,为1,在index为2,。
在看看用find后:
clc;
clear all;
B=[ 2 1 3 2 5 6 1];
[K,L] = find(B == min(B))
结果:
K =
1 1
L =
2 7
可以看出find是返回了所有的最小值,以及相应的索引号。
通过比较可以很好的看出相关的区别,本人感觉用find函数比较保险,直接用min等简单,也可胜任。