Matlab在算法中进行数字比较常用Max函数及Find函数的组合用法

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

这样就得到我们想要的结果了。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值