1、内容简介

2、内容说明

3、仿真分析

clear all;close all;clc

fs=10000;  %采样频率

t=0:0.005:1*pi;  %采样时间

x=4*sin(2*200*pi*t).*(sin(2*4500*pi*t))+25*(sin(2*4500*pi*t));  %原信号x

N=length(x); %计算原信号的长度

f=fs*(0:N-1)/N;  %频率分布

y=fft(x);  %对原时域信号x进行fft,得到频域信号y

subplot(311)

plot(f,abs(y))  %绘制原信号的频谱y

title('原信号频谱')

%设计滤波器FIR滤波器

f1=128/fs;  %上截止频率(要除以采样频率,归一化)

f2=4096/fs; %下截止频率(要除以采样频率,归一化)

b=fir1(48,[f1 f2]);  %设计带通滤波器

c=freqz(b,1,N);   %频率特性

subplot(312)   

plot(f,abs(c));  %绘制带通滤波器

title('滤波器')

xlabel('f(Hz)')

%频域滤波

y1=y.*c';   %对原信号频域滤波,得到滤波之后的频域信号y1(原频域信号y*滤波器c)

subplot(313) 

plot(f,abs(y1))  %绘制滤波之后的频域信号y1

title('原信号频域滤波之后')

%反变换y1,得到滤波之后的时域信号x1

x1=ifft(y1); %反变换y1,得到滤波之后的时域信号x1

figure

subplot(211)

plot(t,x)  %绘制时域原信号x

title('时域原信号')  

subplot(212)

plot(t,real(x1))   %绘制滤波之后的时域信号x1

title('滤波之后的时域信号')

%hilbert变换,对x1求包络线

x2=hilbert(real(x1));  %x1的希尔伯特变换x2

x3=abs(x2);      %x2取模,得到x3

%对x3进行fft,求包络谱

nfft=1024;  

p=abs(fft(x3,nfft)); %将x3补齐到1024个,并fft,得到p,就是包络线的fft---包络谱

figure

plot((0:nfft-1)/nfft*fs,p)   %绘制包络谱

title('包络谱')

msgbox

MATLAB希尔伯特Hilbert变换求包络谱_matlab

MATLAB希尔伯特Hilbert变换求包络谱_希尔伯特_02  

4、参考论文