資源簡介
MATLAB希爾伯特Hilbert變換求包絡譜
部分源碼
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; %頻率分布

代碼片段和文件信息
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(fabs(y))??%繪制原信號的頻譜y
title(‘原信號頻譜‘)
%設計濾波器FIR濾波器
f1=128/fs;??%上截止頻率(要除以采樣頻率,歸一化)
f2=4096/fs;?%下截止頻率(要除以采樣頻率,歸一化)
b=fir1(48[f1?f2]);??%設計帶通濾波器
c=freqz(b1N);???%頻率特性
subplot(312)???
plot(fabs(c));??%繪制帶通濾波器
title(‘濾波器‘)
xlabel(‘f(Hz)‘)
%頻域濾波
y1=y.*c‘;???%對原信號頻域濾波,得到濾波之后的頻域信號y1(原頻域信號y*濾波器c)
subplot(313)?
plot(fabs(y1))??%繪制濾波之后的頻域信號y1
title(‘原信號頻域濾波之后‘)
%反變換y1,得到濾波之后的時域信號x1
x1=ifft(y1);?%反變換y1,得到濾波之后的時域信號x1
figure
subplot(211)
plot(tx)??%繪制時域原信號x
title(‘時域原信號‘)??
subplot(212)
plot(treal(x1))???%繪制濾波之后的時域信號x1
title(‘濾波之后的時域信號‘)
%hilbert變換,對x1求包絡線
x2=hilbert(real(x1));??%x1的希爾伯特變換x2
x3=abs(x2);??????%x2取模,得到x3
%對x3進行fft,求包絡譜
nfft=1024;??
p=abs(fft(x3nfft));?%將x3補齊到1024個,并fft,得到p,就是包絡線的fft---包絡譜
figure
plot((0:nfft-1)/nfft*fsp)???%繪制包絡譜
title(‘包絡譜‘)
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????1335??2018-04-21?21:05??MATLAB希爾伯特Hilbert變換求包絡譜?源程序代碼\chengxu.m
?????目錄???????????0??2018-04-21?21:05??MATLAB希爾伯特Hilbert變換求包絡譜?源程序代碼\
評論
共有 條評論