【重新定义matlab强大系列八】利用matlab求局部值(函数islocalmax求局部最大值+函数islocalmin求局部最小值)

 运行环境:Matlab

 撰写作者:左手の明天

 精选专栏:《python》

  推荐专栏:《算法研究》

#### 防伪水印——左手の明天 ####

大家好,我是左手の明天!好久不见

今天开启新的系列——重新定义matlab强大系列

  最近更新:2023 年 05 月 21 日,左手の明天的第 284 篇原创博客

 更新于专栏:matlab

#### 防伪水印——左手の明天 ####


 matlab交互式任务 

求局部极值任务以交互方式求数据的局部最大值和局部最小值。该任务会自动为实时脚本生成 MATLAB代码。

使用此任务,可以:

  • 对工作区变量所包含的数据求局部最大值、局部最小值或两者。

  • 调整参数以找到更少或更多的极值。

  • 可视化检测到的极值。

【重新定义matlab强大系列八】利用matlab求局部值(函数islocalmax求局部最大值+函数islocalmin求局部最小值)_第1张图片

要在 MATLAB 编辑器中将求局部极值任务添加到实时脚本中,请执行以下操作:

  • 实时编辑器选项卡中,选择任务 > 求局部极值

  • 在脚本的代码块中,键入相关关键字,例如 extrema 或 find。从建议的命令自动填充项中选择求局部极值。 

islocalmin-计算局部最小值

(1)语法

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

TF = islocalmin(A,dim) 指定要沿其进行运算的 A 的维度。例如,islocalmin(A,2) 求矩阵 A 中每行的局部最小值。

TF = islocalmin(___,Name,Value) 可在前面语法中的任意输入参数组合外使用一个或多个名称-值参数来指定其他用于求局部最小值的参数。例如,islocalmin(A,'SamplePoints',t) 计算 A 相对于时间向量 t 中包含的时间戳的局部最小值。

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

局部最小值的相对高差

局部最小值(或波谷)的相对高差根据该波谷相对其他波谷的深度和位置衡量其突出程度。

要测量一个波谷的相对高差,首先从该波谷延伸一条水平线。找出这条直线与左右两侧数据的交点,交点应为另一波谷或数据的端点。将这些位置标记为左右区间的外部端点。然后找出左右区间内的最高波峰。取这两个波峰的较小值,测量从该波峰到波谷的垂直距离。此距离就是相对高差。

对于向量 x,最大相对高差不超过 max(x)-min(x)

(2)示例

向量中的局部最小值

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

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*')

【重新定义matlab强大系列八】利用matlab求局部值(函数islocalmax求局部最大值+函数islocalmin求局部最小值)_第2张图片

矩阵行中的最小值

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

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*')

【重新定义matlab强大系列八】利用matlab求局部值(函数islocalmax求局部最大值+函数islocalmin求局部最小值)_第3张图片

最小值平台区

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

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

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*')

【重新定义matlab强大系列八】利用matlab求局部值(函数islocalmax求局部最大值+函数islocalmin求局部最小值)_第4张图片

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

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

【重新定义matlab强大系列八】利用matlab求局部值(函数islocalmax求局部最大值+函数islocalmin求局部最小值)_第5张图片

突出最小值

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

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

【重新定义matlab强大系列八】利用matlab求局部值(函数islocalmax求局部最大值+函数islocalmin求局部最小值)_第6张图片

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

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

【重新定义matlab强大系列八】利用matlab求局部值(函数islocalmax求局部最大值+函数islocalmin求局部最小值)_第7张图片

islocalmax-计算局部最大值

(1)语法

当在 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 的每个元素对应的相对高差。

(2)示例

向量中的局部最大值

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

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*')

【重新定义matlab强大系列八】利用matlab求局部值(函数islocalmax求局部最大值+函数islocalmin求局部最小值)_第8张图片

矩阵行中的最大值

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

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*')

【重新定义matlab强大系列八】利用matlab求局部值(函数islocalmax求局部最大值+函数islocalmin求局部最小值)_第9张图片

最大值平台区

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

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

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*')

【重新定义matlab强大系列八】利用matlab求局部值(函数islocalmax求局部最大值+函数islocalmin求局部最小值)_第10张图片

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

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

【重新定义matlab强大系列八】利用matlab求局部值(函数islocalmax求局部最大值+函数islocalmin求局部最小值)_第11张图片

突出最大值

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

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

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

【重新定义matlab强大系列八】利用matlab求局部值(函数islocalmax求局部最大值+函数islocalmin求局部最小值)_第12张图片

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

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

【重新定义matlab强大系列八】利用matlab求局部值(函数islocalmax求局部最大值+函数islocalmin求局部最小值)_第13张图片


 #### 防伪水印——左手の明天 ####

大家好,我是左手の明天!好久不见

今天开启新的系列——重新定义matlab强大系列

  最近更新:2023 年 05 月 21 日,左手の明天的第 284 篇原创博客

 更新于专栏:matlab

#### 防伪水印——左手の明天 ####

 

你可能感兴趣的:(Matlab,matlab,开发语言,数据分析,局部值)