%三次样条插值法,求信号的包络线
clear all;close all;clc
fs=30; %采样频率
t=0:1/fs:5; %采样时间
x=sin(2*pi*2*t)+sin(2*pi*4*t); %信号
%三次样条插值,求信号的包络线
d=diff(x); %对信号求导
n=length(d);
d1=d(1:n-1);
d2=d(2:n);
indmin = find(d1.*d2<0 & d1<0)+1; %找到极小值的点
indmax = find(d1.*d2<0 & d1>0)+1; %找到极大值的点
envmin=spline([t(1) t(indmin) t(end)],[x(1) x(indmin) x(end)],t); %所有极小值的点+两个断点,进行三次样条插值
envmax=spline([t(1) t(indmax) t(end)],[x(1) x(indmax) x(end)],t); %所有极大值的点+两个断点,进行三次样条插值
%绘制包络线
figure
hold on
plot(t,x) %绘制原信号
plot(t,envmin,'r--'); %绘制下包络线
plot(t,envmax,'m--'); %绘制上包络线
- 1
- 2
- 3
前往页