gshang
clear;close all;clc

%% 构造信号
t = 0:0.001:1;
y = 2*sin(2*pi*15*t) + 4*sin(2*pi*10*t).*sin(2*pi*t/10) + sin(2*pi*5*t);


%% findpeaks 求极值点
[~,indmax] = findpeaks(y);  % 极大值点
[~,indmin] = findpeaks(-y); % 极小值点

%% 一阶差分法求极值点
% d = diff(y);
% d1 = d(1:end-1); % 左差分
% d2 = d(2:end);   % 右差分
% indmax = find(d1>0 & d2<0) + 1; % 极大值点
% indmin= find(d1<0 & d2>0) + 1;  % 极小值点

%% 二阶差分法求极值点
% indmax = find(diff(sign(diff(y)))<0)+1; % 极大值点
% indmin = find(diff(sign(diff(y)))>0)+1; % 极小值点

%% 三次样条插值拟合(包含端点)
s_max = spline([1,indmax,length(y)], [y(1),y(indmax),y(end)], 1:length(y));
s_min = spline([1,indmin,length(y)], [y(1),y(indmin),y(end)], 1:length(y));

%% 绘图
figure;
plot(t,y,\'k\',...                    % 原信号
     t(indmax),y(indmax),\'ro\',...   % 极大值点
     t(indmin),y(indmin),\'bo\',...   % 极小值点
     t,s_max,\'r--\',...              % 上包络线
     t,s_min,\'b--\');                % 下包络线

image

分类:

技术点:

相关文章:

  • 2022-02-08
  • 2021-11-25
  • 2021-11-28
  • 2021-11-26
  • 2021-12-30
  • 2021-07-09
  • 2021-05-13
猜你喜欢
  • 2021-12-12
  • 2021-12-19
  • 2021-04-08
  • 2021-05-29
  • 2021-11-20
  • 2021-11-27
  • 2021-12-22
相关资源
相似解决方案