MATLABHilbert变换与包络线绘制
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MATLABHilbert变换与包络线绘制相关的知识,希望对你有一定的参考价值。
参考技术A信号处理中,对于较为负复杂的信号,我们有时候需要提取包络线分析。如下图:
提取包络线,在信号处理中往往采用 Hilbert 变换。
此处注意,对变换后的变量h取范数(绝对值)。
对于较复杂的波形,包络效果可能不理想。
MATLAB希尔伯特Hilbert变换求包络谱
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编程答疑,请加QQ: 1762016542','MATLAB答疑','help')
4、参考论文
略
答1疑2咨3询4企q鹅q号:1762016542
以上是关于MATLABHilbert变换与包络线绘制的主要内容,如果未能解决你的问题,请参考以下文章