三次样条插值拟合离散振动信号包络线

假设信号数据为:

三次样条插值拟合离散振动信号包络线_第1张图片

 每列代表一种信号类型,则代码如下:

clear;close all;clc
%% 输入测得离散振动信号
fault_data=xlsread('D:\fault_data.xlsx');
t= (1:500);
y=fault_data(:,1);%其中可对数字1更换来处理不同信号类型
y=y(1:500,:)';
 
%% findpeaks 求极值点
[~,indmax] = findpeaks(y);  % 极大值点
[~,indmin] = findpeaks(-y); % 极小值点

%% 三次样条插值拟合(包含端点)
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),'r.',...   % 极大值点
     t(indmin),y(indmin),'b.',...   % 极小值点
     t,s_max,'r-',...              % 上包络线
     t,s_min,'b-');                % 下包络线

效果如下所示

三次样条插值拟合离散振动信号包络线_第2张图片

 

你可能感兴趣的:(matlab,信号处理)