Engee 文档

发现,发现

找到局部最大值。

库::`工程师`

语法

函数调用

  • [参数:pks]=findpeaks([参数:y]) — 返回具有输入信号矢量的局部最大值(峰值)的矢量 [参数:y]. 局部峰值是大于两个相邻样本或等于 资讯. 峰按它们出现的顺序显示。 信号的端点以外 资讯,被排除在外。 如果峰值是平坦的,那么函数只返回索引最低的点。

  • =findpeaks(,Name=Value) — 也使用参数 名称=值 除了前面语法中提供的任何输入参数。

  • findpeaks(_) — 在没有输出参数的情况下绘制信号并施加峰值。

争论

输入参数

# y — 输入数据

+ 向量资料

Details

输入数据集作为具有实数元素的向量。 向量中的元素数 y 必须至少有三个。

数据类型

漂浮物32, 漂浮64</无翻译>

# x — 地点

+ 向量资料

Details

指定为长度与 [参数:y]. 向量中的值 x 它们应该单调增加。 如果论点是 x 如果未指定,则索引将用作位置。 [参数:y].

数据类型

漂浮物32, 漂浮64</无翻译>

# 财政司司长 — 最大相关窗口大小

+ 标量,标量

Details

的采样率,设置为正标量。 采样率是单位时间内的样本数。 如果时间单位是秒,那么采样频率以Hz为单位测量。

数据类型

漂浮物32, 漂浮64</无翻译>

名称-值输入参数

指定格式中的可选参数对 名称=值,在哪里 姓名 -参数的名称,以及 价值 -适当的值。 类型参数 名称=值 它们应该放在其他参数之后,但对的顺序无关紧要。

# Npeaks — 最大峰数

+ 标量,标量

Details

返回的最大峰数,设为正整数。 功能 findpeaks 它从输入数据的第一个元素开始,并在峰值数达到该值时关闭 NPeaks.

数据类型

漂浮物32, 漂浮64</无翻译>

# SortStr — 排序峰

+ "没有" (默认情况下)| "提升" | "下降"

Details

峰的排序,设置为以下值之一:

  • "没有" -按输入数据中出现的顺序返回峰值;

  • "提升" -按升序返回峰值,从最低值到最高值;

  • "下降" -按降序返回峰值,从最高值到最低值。

# MinPeakHeight — 最小峰值高度

+ -inf (默认情况下)| 标量,标量

Details

最小峰高,设为实标量。 使用此参数使函数 findpeaks 只返回峰值超过 MinPeakHeight. 指定最小峰值高度可以减少处理时间。

数据类型

漂浮物32, 漂浮64</无翻译>

# MinPeakProminence — 最低峰值海拔

+ 0 (默认情况下)| 标量,标量

Details

峰值的最小高程,作为非负实标量给出。 使用此参数 findpeaks 只返回那些相对海拔至少为 MinPeakProminence缧. 有关详细信息,请参阅[突出]

数据类型

漂浮物32, 漂浮64</无翻译>

# 门槛 — 最小高度差

+ 0 (默认情况下)| 标量,标量

Details

峰值与其邻居之间的最小高度差,作为非负实标量给出。 使用此参数 findpeaks 仅返回值超过最近相邻峰值值至少一个值的峰值 门槛.

数据类型

漂浮物32, 漂浮64</无翻译>

# MinPeakDistance — 峰值之间的最小距离

+ 0 (默认情况下)| 标量,标量

Details

峰之间的最小距离,设为正实标量。 指定值时 [医]阻力 该算法选择信号的最高峰,并忽略该距离内的所有峰。 [医]阻力 从他那里。 然后,该函数对剩余的最高峰重复该过程并迭代,直到没有更多的峰要考虑。

  • 如果指定了位置向量 [参数:x] 然后 [医]阻力 必须以 [参数:x].

  • 如果指定了采样率 [参数:Fs] 然后 [医]阻力 它必须以时间为单位表示。

  • 如果两者都没有指定 [参数:x],既不 [参数:Fs] 然后 [医]阻力 它必须以计数为单位表示。

使用此参数 findpeaks 我忽略了较大峰附近出现的小峰。

数据类型

漂浮物32, 漂浮64</无翻译>

# WidthReference — 宽度测量的参考高度

+ "半程" (默认情况下)| "半高"

Details

宽度测量的参考高度,设置为 "半程""半高". 功能 findpeaks 将峰值宽度评估为下降信号与水平参考线相交点之间的距离。 使用参数中指定的条件选择行高 宽线程:

  • "半程" —将参考线置于峰下,垂直距离等于峰高度的一半。 有关更多信息,请参阅[突出];

  • "半高" -将参考线放置在峰值高度的一半处。 如果线的任何交点超出参数所选峰的边界,则该线将被截断 [参数:MinPeakHeight], [参数:MinPeakProminence][参数:阈值]. 峰之间的边界由它们之间的最低凹陷的水平位置确定。 高度小于零的峰被丢弃。

通过线性插值计算交点的位置。

# MinPeakWidth — 最大峰值宽度

+ 0 (默认情况下)| 标量,标量

Details

最小峰值宽度,设为正实标量。 使用此参数仅选择宽度至少为1的峰 MinPeakWidth.

  • 如果指定了位置向量 [参数:x] 然后 MinPeakWidth 必须以 [参数:x].

  • 如果指定了采样率 [参数:Fs] 然后 MinPeakWidth 它必须以时间为单位表示。

  • 如果两者都没有指定 [参数:x],既不 [参数:Fs] 然后 MinPeakWidth 它必须以计数为单位表示。

数据类型

漂浮物32, 漂浮64</无翻译>

# MaxPeakWidth — 最大峰值宽度

+ 资讯 (默认情况下)| 标量,标量

Details

最大峰值宽度,设为正实标量。 使用此参数只选择宽度不超过的峰 最大宽度.

  • 如果指定了位置向量 [参数:x] 然后 最大宽度 必须以 [参数:x].

  • 如果指定了采样率 [参数:Fs] 然后 最大宽度 它必须以时间单位表示。

  • 如果两者都没有指定 [参数:x],既不 [参数:Fs] 然后 最大宽度 它必须以计数为单位表示。

数据类型

漂浮物32, 漂浮64</无翻译>

# 注释 — 图表样式

+ "山峰" (默认情况下)| "范围"

Details

图形样式,设置为:

  • "山峰" -绘制信号并注释每个峰值的位置和值;

  • "范围" -绘制信号并注释每个峰值的位置,值,宽度和严重程度。

调用时忽略此参数 findpeaks 带输出参数。

# — 输出数据的类型

+ :剧情 (默认情况下)| :数据

Details

输出数据的类型:

  • :剧情 -函数返回一个图形;

  • :数据 -函数返回数据。

输出参数

# pks — 本地千里马

+ 向量资料

Details

局部极大值作为信号值的向量返回。 如果没有局部最大值,则 pks的 空的。

# locs — 山顶位置

+ 向量资料

Details

峰值位置作为向量返回。

  • 如果指定了位置向量 [参数:x] 然后 locs 包含值 [参数:x] 在峰值索引中。

  • 如果指定了采样率 [参数:Fs] 然后 locs 是具有时间差的时间点的数值向量。 1/[参数:Fs] 连续计数之间。

  • 如果两者都没有指定 [参数:x],既不 [参数:Fs] 然后 locs 它是整数索引的向量。

# *w*是 峰的宽度

+ 向量资料

Details

峰值位置作为实数向量返回。 每个峰值的宽度被计算为信号与参考线相交的峰值的左侧和右侧的点之间的距离,其高度由自变量设置 [参数:WidthReference]. 点本身是通过线性插值找到的。

# p — 山峰海拔高度

+ 向量资料

Details

峰的海拔作为实数向量返回。 峰值高程是信号在再次上升到峰值以上的水平或到达终点之前必须在峰值两侧下降的最小垂直距离。 有关详细信息,请参阅[突出]

例子:

在值向量中查找峰值

Details

让我们创建一个值的向量并找到其中的峰值,构建一个图形并指示其上的峰值。

import EngeeDSP.Functions: findpeaks

data = [25, 8, 15, 5, 6, 10, 10, 3, 1, 20, 7]

findpeaks(data)

findpeaks 2

让我们将每个峰值的位置,值,宽度和严重程度添加到图形中。

import EngeeDSP.Functions: findpeaks

data = [25, 8, 15, 5, 6, 10, 10, 3, 1, 20, 7]

findpeaks(data, Annotate="extents")

findpeaks 3

我们将只考虑具有最小宽度的峰值。 1.5.

import EngeeDSP.Functions: findpeaks

data = [25, 8, 15, 5, 6, 10, 10, 3, 1, 20, 7]

findpeaks(data, Annotate="extents", MinPeakWidth=1.5)

findpeaks 4

此外

海拔高度

Details

一个山峰的海拔测量了它相对于其他山峰的高度和位置的突出程度。 一个低的孤立峰可能比上面的更明显,但否则在高峰的范围内不会以任何方式突出。

测量山顶的海拔高度:

  1. 将标记放在峰上。

  2. 从峰值向左和向右绘制一条水平线,直到该线满足以下条件之一:

    • 信号会交叉,因为有更高的峰值。;

    • 它将到达信号的左端或右端。

  3. 在步骤2中定义的两个区间中的每一个中找到信号的最小值。 该点是信号的波谷或端点之一。

  4. 间隔的两个最小值中的较高者确定参考电平。 这一水平以上的山峰的高度就是它的海拔高度.

功能 findpeaks 它对信号超出端点的行为不做任何假设,无论它们的高度如何。 结果,步骤2和4没有考虑到超出端点的信号的行为,这往往会影响参考电平的值。 例如,考虑这个信号的峰值:

findpeaks 1

峰值数 左侧间隔位于峰值和之间。.. 右间隔位于峰值和之间。.. 左边区间的最低点 右侧区间的最低点 起点水平(最大最小值)

1

左端

由于峰值_2而产生的交叉点_

左端点

a

a

2

左端

右端

左端点

h

左端点

3

由于峰值_2而产生的交叉点_

由于峰值_4而产生的交叉点_

b

c

c

4

由于峰值_2而产生的交叉点_

由于峰值_6而产生的交叉点_

b

d

b

5

由于峰值_4而产生的交叉点_

由于峰值_6而产生的交叉点_

d

e

e

6

由于峰值_2而产生的交叉点_

右端

d

h

d

7

由于峰值_6而产生的交叉点_

由于峰值_8而产生的交叉点_

f

g

g

8

由于峰值_6而产生的交叉点_

右端

f

h

f

9

由于峰值_6而产生的交叉点_

由于右端点而产生的交集

h

i

i