Matlab之max()函数 :
max函数意思是返回数组中最大元素。
为了做清晰对比,展示一行多列及多行多列两个一维数组的例子:
1、一行多列(即:向量,向量就是只有一行或者一列的特殊矩阵):
>> A=[1 2 3 4 5 6 7 9]
>> maxa = max(A)
A = 1 2 3 4 5 6 7 9
maxa = 9
一目了然,在一行多列(行向量)中,返回向量最大值就一个
2、多行多列:
>> A=[1 2 3 4 ;5 6 7 8; 9 10 11 12]
>> maxa = max(A)
A =
1 2 3 4
5 6 7 8
9 10 11 12
maxa =
9 10 11 12
可以看到返回每一列的最大值,最大值个数和列数相当
更多Matlab max用法:
M = max(A,[],dim) 返回维度 dim 上的最大元素。例如,如果 A 为矩阵,则 max(A,[],2) 是包含每一行的最大值的列向量。
示例
M = max(A,[],nanflag) 指定在计算中包括还是忽略 NaN 值。例如,max(A,[],'includenan') 包括 A 中的所有 NaN 值,而 max(A,[],'omitnan') 忽略这些值。M = max(A,[],dim,nanflag) 还指定使用 nanflag 选项时的运算维度。
示例
[M,I] = max(___) 在上述语法基础上,还返回 A 中最大值在运算维度上的对应索引。示例
M = max(A,[],'all') 查找 A 的所有元素的最大值。此语法适用于 MATLAB® R2018b 及更高版本。示例
M = max(A,[],vecdim) 计算向量 vecdim 所指定的维度上的最大值。例如,如果 A 是矩阵,则 max(A,[],[1 2]) 计算 A 中所有元素的最大值,因为矩阵的每个元素都包含在由维度 1 和 2 定义的数组切片中。M = max(A,[],'all',nanflag) 计算在使用 nanflag 选项时 A 的所有元素的最大值。
M = max(A,[],vecdim,nanflag) 指定在使用 nanflag 选项时要运算的多个维度。
[M,I] = max(A,[],'all',___) 返回在指定 'all' 时 A 中最大值在 A 中的对应线性索引。
示例
[M,I] = max(A,[],___,'linear') 返回 A 中最大值在 A 中的对应线性索引。示例
C = max(A,B) 返回从 A 或 B 中提取的最大元素的数组。C = max(A,B,nanflag) 还指定如何处理 NaN 值。
___ = max(___,'ComparisonMethod',method) 为上述任何语法指定如何比较元素,此项为可选项。例如,对于向量 A = [-1 2 -9],语法 max(A,[],'ComparisonMethod','abs') 根据绝对值比较 A 的元素并返回 -9。
Matlab之find()函数 :
1、find用法先看一个有代表性的多维数组中的例子:
>> B=[1 0;3 6;0 7]
>> x=find(B)
B =
1 0
3 6
0 7
x =
1
2
5
6
可以看到find返回的是索引,而且是元素不为0的索引。那么返回的顺序是什么样的,从我们这个矩阵中可以看出;索引的方向是按列方向来的。
2、再看一个向量的例子
>> C=[1 0 3 6 0 7] %行向量
>> x=find(C)
C =
1 0 3 6 0 7
x =
1 3 4 6
向量不管是行向量还是列向量,方向是和向量方向一致的。
k = find(X) 返回一个包含数组 X 中每个非零元素的线性索引的向量。
如果 X 为向量,则 find 返回方向与 X 相同的向量。
如果 X 为多维数组,则 find 返回由结果的线性索引组成的列向量。
示例
k = find(X,n) 返回与 X 中的非零元素对应的前 n 个索引。示例
k = find(X,n,direction)(其中 direction 为 'last')查找与 X 中的非零元素对应的最后 n 个索引。direction 的默认值为 'first',即查找与非零元素对应的前 n 个索引。示例
[row,col] = find(___) 使用前面语法中的任何输入参数返回数组 X 中每个非零元素的行和列下标。示例
[row,col,v] = find(___) 还返回包含 X 的非零元素的向量 v。
Matlab之max()函数 和 find()函数组合使用:
比如有个场景,需要获取向量中某些符合条件的元素;比如这里我们就想获取比大值一半还要大的元素
>> A=[1 2 3 4 5 6 7 8 9 10 11 12]
>> mx = find(A>(max(A)/2))
A =
1 2 3 4 5 6 7 8 9 10 11 12
mx =
7 8 9 10 11 12
这样就得到我们想要的结果了。