islocalmin
计算局部最小值
说明
支持上述语法中的任何输入参量组合,且可使用一个或多个名称-值参量指定其他用于求局部最小值的参数。例如,TF
= islocalmin(___,Name,Value
)islocalmin(A,'SamplePoints',t)
计算 A
相对于时间向量 t
中包含的时间戳的局部最小值。
示例
向量中的局部最小值
计算并绘制数据向量的局部最小值。
x = 1:100;
A = (1-cos(2*pi*0.01*x)).*sin(2*pi*0.15*x);
TF = islocalmin(A);
plot(x,A,x(TF),A(TF),'r*')
矩阵行中的最小值
创建一个数据矩阵,然后计算每一行的局部最小值。
A = -25*diag(ones(5,1)) + rand(5,5); TF = islocalmin(A,2)
TF = 5x5 logical array
0 0 0 1 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 1 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 = islocalmin(A,'MinSeparation',minutes(45),'SamplePoints',t); plot(t,A,t(TF),A(TF),'r*')
最小值平台区
指定用于指示连续最小值的方法。
计算包含连续最小值的数据的局部最小值。指示每个平台区的第一个最小值。
x = 0:0.1:5; A = max(-0.75, sin(pi*x)); TF1 = islocalmin(A,'FlatSelection','first'); plot(x,A,x(TF1),A(TF1),'r*')
指示每个平台区的所有最小值。
TF2 = islocalmin(A,'FlatSelection','all'); plot(x,A,x(TF2),A(TF2),'r*')
突出最小值
计算数据向量的局部最小值和相对高差,然后用数据绘图。
x = 1:100; A = peaks(100); A = A(50,:); [TF1,P] = islocalmin(A); P(TF1)
ans = 1×2
2.7585 1.7703
plot(x,A,x(TF1),A(TF1),'r*') axis tight
通过指定最小相对高差要求,计算数据中最突出的最小值。
TF2 = islocalmin(A,'MinProminence',2); plot(x,A,x(TF2),A(TF2),'r*') axis tight
输入参数
A
— 输入数据
向量 | 矩阵 | 多维数组 | 表 | 时间表
输入数据,指定为向量、矩阵、多维数组、表或时间表。
dim
— 运算维度
正整数标量
运算维度,指定为正整数标量。如果未指定值,则默认值是大小不等于 1 的第一个数组维度。
以一个 m
×n
输入矩阵 A
为例:
islocalmin(A,1)
根据A
的每列中的数据计算局部最小值,并返回一个m
×n
矩阵。islocalmin(A,2)
根据A
的每行中的数据计算局部最小值,并返回一个m
×n
矩阵。
对于表或时间表输入数据,不支持 dim
,并且分别对每个表或时间表变量进行运算。
名称-值参数
将可选的参量对组指定为 Name1=Value1,...,NameN=ValueN
,其中 Name
是参量名称,Value
是对应的值。名称-值参量必须出现在其他参量之后,但参量对组的顺序无关紧要。
在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name
引起来。
示例: TF = islocalmin(A,'MinProminence',2)
SamplePoints
— 样本点
向量 | 表变量名称 | 标量 | 函数句柄 | 表 vartype
下标
采样点,指定为由采样点值组成的向量或下表中的选项之一(当输入数据为表时)。样本点代表数据的 x 轴位置,必须为有序且包含唯一的元素。样本点不需要均匀采样。向量 [1 2 3 ...]
是默认值。
当输入数据是表时,可以使用以下选项之一将采样点指定为表变量。
索引方案 | 示例 |
---|---|
变量名称:
|
|
变量索引:
|
|
函数句柄:
|
|
变量类型:
|
|
注意
当输入数据为 timetable
时,不支持此名称-值参量。时间表使用行时间向量作为采样点。要使用不同采样点,您必须编辑时间表,以便行时间包含所需的采样点。
示例: islocalmin(A,'SamplePoints',0:0.1:10)
示例: islocalmin(T,'SamplePoints',"Var1")
DataVariables
— 要对其进行操作的表变量
表变量名称 | 标量 | 向量 | 元胞数组 | 模式 | 函数句柄 | 表 vartype
下标
要对其执行操作的表变量,指定为逗号分隔的对组,其中包含 DataVariables
和下表中的选项之一。DataVariables
值指示输入表中哪些变量要检查局部最小值的存在。与指示的变量关联的数据类型必须为数值或 logical
。
对于 DataVariables
未指定的变量,第一个输出 TF
包含 false
,除非 OutputFormat
的值为 'tabular'
。
索引方案 | 示例 |
---|---|
变量名称:
|
|
变量索引:
|
|
函数句柄:
|
|
变量类型:
|
|
示例: islocalmin(T,'DataVariables',["Var1" "Var2" "Var4"])
OutputFormat
— 输出数据类型
'logical'
(默认) | 'tabular'
输出数据类型,指定为下列值之一:
'logical'
- 对于表或时间表输入数据,以逻辑数组形式返回输出TF
。'tabular'
- 对于表输入数据,以表形式返回输出TF
。对于时间表输入数据,以时间表形式返回输出TF
。
对于向量、矩阵或多维数组输入数据,不支持 OutputFormat
。
示例: islocalmin(T,'OutputFormat','tabular')
MinProminence
— 最小相对高差
0 (默认) | 非负标量
最小相对高差,指定为非负标量。islocalmin
仅返回相对高差至少等于指定值的局部最小值。
ProminenceWindow
— 相对高差窗口
正整数标量 | 由正整数组成的二元素向量 | 正持续时间标量 | 由正持续时间组成的二元素向量
相对高差窗口,指定为正整数标量、由正整数组成的二元素向量、正持续时间标量或由正持续时间组成的二元素向量。该值定义一个包含若干邻点的窗口,这些邻点用于计算每个局部最小值的相对高差。
如果窗口值是一个正整数标量 k,则窗口以每个局部最小值为中心并且包含 k-1
个相邻元素。如果 k 是偶数,则窗口以当前元素和上一个元素为中心。如果局部最小值在平台区内,则 islocalmin
将整个平台区视为窗口的中心点。
如果该值是由正整数组成的二元素向量 [b f]
,则窗口包含局部最小值、其之前的 b
个元素和之后的 f
个元素。如果某局部最小值在平台区内,则窗口从平台区的第一个点之前的 b
个元素开始,在平台区的最后一个点之后的 f
个元素结束。
当输入数据是时间表或 SamplePoints
指定为 datetime
或 duration
向量时,窗口值的类型必须为 duration
,并相对于样本点计算窗口。
FlatSelection
— 平台区指示符
'center'
(默认) | 'first'
| 'last'
| 'all'
局部最小值连续重复时的平台区指示符,指定为以下值之一:
'center'
- 仅指示最小值平台区的中心元素。与平台区中心元素对应的TF
元素为 1,其余元素为 0。'first'
- 仅指示最小值平台区的第一个元素。与平台区第一个元素对应的TF
元素为 1,其余元素为 0。'last'
- 仅指示最小值平台区的最后一个元素。与平台区最后一个元素对应的TF
元素为 1,其余元素为 0。'all'
- 指示最小值平台区的所有元素。平台区所有元素对应的TF
元素均为 1。
当使用 MinSeparation
或 MaxNumExtrema
名称-值参量时,平台区上的各点会被视为一个最小值点。
MinSeparation
— 最小间隔
0 (默认) | 非负标量
局部最小值之间的最小间隔,指定为非负标量。间隔值按照与样本点向量相同的单位定义,默认情况下为 [1 2 3 ...]
。当间隔值大于 0 时,islocalmin
选择指定间隔内最小的局部最小值,并忽略其他所有局部最小值。此过程会重复执行,直到再也检测不到局部最小值为止。
当样本点向量的类型为 datetime
时,间隔值的类型必须为 duration
。
MaxNumExtrema
— 最小值的最大数目
正整数标量
要检测的最小值的最大数目,指定为正整数标量。islocalmin
找到的数目不超过指定的最突出最小值数,此值默认情况下等于运算维度的长度。
输出参量
TF
— 局部最小值指示符
向量 | 矩阵 | 多维数组 | 表 | 时间表
局部最小值指示符,以向量、矩阵、多维数组、表或时间表形式返回。
除非 OutputFormat
的值为 'tabular'
,否则 TF
与 A
的大小相同。如果 OutputFormat
的值为 'tabular'
,则 TF
只具有对应于指定的 DataVariables
的变量。
数据类型: logical
P
— 相对高差
向量 | 矩阵 | 多维数组 | 表 | 时间表
相对高差,以向量、矩阵、多维数组、表或时间表形式返回。
如果
P
是向量、矩阵或多维数组,则P
的大小与A
相同。如果
P
是表或时间表,则P
与A
的高度相同,并且只具有与指定的DataVariables
对应的变量。
如果输入数据的类型是有符号或无符号整数,则 P
是无符号整数。
详细信息
局部最小值的相对高差
局部最小值(或波谷)的相对高差根据该波谷相对其他波谷的深度和位置衡量其突出程度。
要测量一个波谷的相对高差,首先从该波谷延伸一条水平线。找出这条直线与左右两侧数据的交点,交点应为另一波谷或数据的端点。将这些位置标记为左右区间的外部端点。然后找出左右区间内的最高波峰。取这两个波峰的较小值,测量从该波峰到波谷的垂直距离。此距离就是相对高差。
对于向量 x
,最大相对高差不超过 max(x)-min(x)
。
替代功能
扩展功能
tall 数组
对行数太多而无法放入内存的数组进行计算。
用法说明和限制:
不支持 tall 时间表。
您必须为
ProminenceWindow
名称-值参量指定值。不支持
MaxNumExtrema
、MinSeparation
和SamplePoints
名称-值参量。DataVariables
的值不能是函数句柄。
有关详细信息,请参阅 tall 数组。
C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。
用法说明和限制:
必须启用对可变大小数组的支持。
不支持
ProminenceWindow
名称-值参量。
基于线程的环境
使用 MATLAB® backgroundPool
在后台运行代码或使用 Parallel Computing Toolbox™ ThreadPool
加快代码运行速度。
此函数完全支持基于线程的环境。有关详细信息,请参阅在基于线程的环境中运行 MATLAB 函数。
GPU 数组
通过使用 Parallel Computing Toolbox™ 在图形处理单元 (GPU) 上运行来加快代码执行。
此函数完全支持 GPU 数组。有关详细信息,请参阅在 GPU 上运行 MATLAB 函数 (Parallel Computing Toolbox)。
版本历史记录
在 R2017b 中推出R2022a: 返回包含逻辑输出的表或时间表
对于表或时间表输入数据,通过将 OutputFormat
名称-值参量设置为 'tabular'
,可以返回表输出 TF
而不是逻辑数组。
R2021b: 将采样点指定为表变量
对于表输入数据,可以使用 SamplePoints
名称-值参量将采样点指定为表变量。
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)