MATLAB中islocalmax函数用法

目录

语法

说明

示例

向量中的局部最大值

矩阵行中的最大值

相隔最大值

最大值平台区

突出最大值


        islocalmax函数的功能是计算局部最大值。

语法

TF = islocalmax(A)
TF = islocalmax(A,dim)
TF = islocalmax(___,Name,Value)
[TF,P] = islocalmax(___)

说明

        ​当在 A 的对应元素中检测到局部最大值时,TF = islocalmax(A) 将返回元素为 1 (true) 的逻辑数组。​

        ​TF = islocalmax(A,dim) 指定要沿其进行运算的 A 的维度。例如,islocalmax(A,2) 计算矩阵 A 的每一行的局部最大值。

        TF = islocalmax(___,Name,Value) 支持上述语法中的任何输入参数组合,且可使用一个或多个名称-值参数指定其他用于求局部最大值的参数。例如,islocalmax(A,'SamplePoints',t) 根据时间向量 t 中包含的时间戳计算 A 的局部最大值。

        ​[TF,P] = islocalmax(___) 还返回与 A 的每个元素对应的相对高差。​

示例

向量中的局部最大值

计算并绘制数据向量的局部最大值。

x = 1:100;
A = (1-cos(2*pi*0.01*x)).*sin(2*pi*0.15*x);
TF = islocalmax(A);
plot(x,A,x(TF),A(TF),'r*')

如图所示:

矩阵行中的最大值

        创建一个数据矩阵,然后计算每一行的局部最大值。

A = 25*diag(ones(5,1)) + rand(5,5);
TF = islocalmax(A,2)
TF = 5x5 logical array

   0   0   1   0   0
   0   1   0   0   0
   0   0   1   0   0
   0   1   0   1   0
   0   1   0   0   0

相隔最大值

        计算数据向量相对于向量 t 中的时间戳的局部最大值。使用 MinSeparation 参数计算相隔至少 45 分钟的最大值。

t = hours(linspace(0,3,15));
A = [2 4 6 4 3 7 5 6 5 10 4 -1 -3 -2 0];
TF = islocalmax(A,'MinSeparation',minutes(45),'SamplePoints',t);
plot(t,A,t(TF),A(TF),'r*')

如图所示:

最大值平台区

指定用于指示连续最大值的方法。

计算包含连续最大值的数据的局部最大值。指示每个平台区的第一个最大值。

x = 0:0.1:5;
A = min(0.75, sin(pi*x));
TF1 = islocalmax(A,'FlatSelection','first');
plot(x,A,x(TF1),A(TF1),'r*')

如图所示:

指示每个平台区的所有最大值。

TF2 = islocalmax(A,'FlatSelection','all');
plot(x,A,x(TF2),A(TF2),'r*')

如图所示:

突出最大值

根据相对高差选择最大值。

计算数据向量的局部最大值和相对高差,然后用数据绘图。

x = 1:100;
A = peaks(100);
A = A(50,:);
[TF1,P] = islocalmax(A);
P(TF1)
ans = 1×2

    1.7703    3.5548

plot(x,A,x(TF1),A(TF1),'r*')
axis tight

如图所示:

通过指定最小相对高差要求,仅计算数据中最突出的最大值。

TF2 = islocalmax(A,'MinProminence',2);
plot(x,A,x(TF2),A(TF2),'r*')
axis tight

如图所示:

参数说明

A--输入数据,指定为向量、矩阵、多维数组、表或时间表。

dim--运算维度

运算维度,指定为正整数标量。如果未指定值,则默认值是大小不等于 1 的第一个数组维度。

以一个 m×n 输入矩阵 A 为例:

  • islocalmax(A,1) 根据 A 的每列中的数据计算局部最大值,并返回一个 m×n 矩阵。

    islocalmax(A,1) column-wise operation

  • islocalmax(A,2) 根据 A 的每行中的数据计算局部最大值,并返回一个 m×n 矩阵。

    islocalmax(A,2) row-wise operation

对于表或时间表输入数据,不支持 dim,并且分别对每个表或时间表变量进行运算。

  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值