MATLAB希尔伯特滤波器.docx
《MATLAB希尔伯特滤波器.docx》由会员分享,可在线阅读,更多相关《MATLAB希尔伯特滤波器.docx(14页珍藏版)》请在冰豆网上搜索。
MATLAB希尔伯特滤波器
一、课程设计(综合实验)的目的与要求
1.纯熟掌握matlab软件的用法,以及数字信号处理的常用函数。
2.运用两种方法实现对给定信号的单边带幅度调制,包括使用自带的命令函数以及运用希尔伯特变换来实现。
3.学会设计希尔伯特变换器,并运用变换器来进展滤波。
二、设计〔实验〕正文
1、实验原理
双边带调制的缺点是,已调信号的频带宽度是调制信号频带宽度的两倍,占用频带资源过宽。
由于实调制信号的频谱都对称地存在于正负频率上,因此只需在发送端发送单边带调制信号,这就是信号的单边带〔Single-SideBand,SSB〕幅度调制。
在单边带幅度调制中,可以保存上边带,也可以保存下边带。
1.单边带〔Single-SideBand,SSB〕幅度调制和希尔伯特变换器
信号单边带调制(SSB)有上边带(USB)和下边带(LSB)两种,一般利用Hilbert变换来实现。
利用希尔伯特变换实现单边带调制的原理框图如图3,其中
为希尔伯特变换器,
为信号
的希尔伯特变换。
图3利用希尔伯特变换实现单边带调制原理框图
希尔伯特变换器的时域特性
,频域特性
,
希尔伯特变换器是一个全通系统,
,
,称为
移相器。
希尔伯特变换器的输入和输出具有如下关系:
图3中的输出:
,
单边带已调信号为:
单边带已调信号的频谱为:
输入信号即调制信号和已调信号的频谱如图4所示。
〔a〕调制信号频谱
〔b〕双边带已调信号频谱
〔c〕上边带已调信号频谱
〔d〕下边带已调信号频谱
图4利用希尔伯特变换器实现信号单边带调制的频谱
(1)Hilbert变换
利用hilbert函数可以计算实序列x(n)的Hilbert变换:
y=hilbert(x)
y的实部是原序列x,而虚部是x的Hilbert变换结果。
y称为解析信号。
(2)单边带幅度调制解调
信号单边带幅度调制的MATLAB计算表达式为
y=x.*cos(2*pi*Fc*t)+Im(Hilbert(x)).*sin(2*pi*Fc*t)
也可以使用modulate函数来实现单边带幅度调制:
y=modulate(x,Fc,Fs,'amssb')
其中,x为调制信号;Fc为载波信号的载频;Fs为信号的抽样频率;y为已调信号。
调用demod函数可实现已调信号的解调:
x=demod(y,Fc,Fs,'amssb')
2、实验内容
2.1实现信号单边带幅度调制。
调制信号为:
设
,载波信号的角频率
。
(1)分析调制信号
的频谱,绘出其时域波形和频谱。
(2)利用命令y=modulate(x,Fc,Fs,'amssb')实现信号的单边带幅度调制;使用FFT分析已调信号频谱,绘出其时域波形和频谱。
(3)利用命令x=demod(y,Fc,Fs,'amssb')实现已调信号的解调;分析解调信号的频谱,绘出其时域波形和频谱。
〔1〕x1=-5:
0.01:
-2;
x2=-2:
0.01:
2;
x3=2:
0.01:
5;
y1=0*x1;
y2=sinc(x2);
y3=0*x3;
x=[x1,x2,x3];
y=[y1,y2,y3];
plot(x,y);
x1=-5:
0.01:
-2;
x2=-2:
0.01:
2;
x3=2:
0.01:
5;
y1=0*x1;
y2=sinc(x2);
y3=0*x3;
x=[x1,x2,x3];
y=[y1,y2,y3];
plot(x,y);
x4=length(x);
y1=fftshift(fft(y2,x4));
plot(x,abs(y1));
title('函数频域图像');
〔2〕x1=-5:
0.01:
-2;
x2=-2:
0.01:
2;
x3=2:
0.01:
5;
y1=0*x1;
y2=sinc(x2);
y3=0*x3;
x=[x1,x2,x3];
y=[y1,y2,y3];
plot(x,y);
x4=length(x);
y1=fftshift(fft(y2,x4));
plot(x,abs(y1));
y=modulate(y2,100,8000,'amssb');
plot(x2,y);
x2=-2:
0.01:
2;
y2=sinc(x2);
y=modulate(y2,100,500,'amssb');
m=fftshift(fft(y,512));
fw=[-255:
256]*500/512;
plot(fw,abs(m));
xlabel('频率:
hz');
ylabel('幅度');
title('调制后函数频域图像');
〔3〕x2=-2:
0.01:
2;
y2=sinc(x2);
y=modulate(y2,100,500,'amssb');
r=demod(y,100,500,'amssb');
plot(x2,r);
xlabel('时间');
ylabel('幅度');
title('解调后函数时域图像');
x2=-2:
0.01:
2;
y2=sinc(x2);
y=modulate(y2,100,500,'amssb');
r=demod(y,100,500,'amssb');
m=fftshift(fft(r,512));
fw=[-255:
256]*500/512;
plot(fw,abs(m));
xlabel('频率hz');
ylabel('·幅度');
title('解调后函数频域图像');
2.利用希尔伯特变换实现信号单边带幅度调制
(1)分析理想希尔伯特变换器
的频率响应,绘出频谱。
(2)对1中的信号
用命令xh=Im(Hilbert(x))求得其希尔伯特变换
。
(3)利用命令y=x.*cos(2*pi*Fc*t)+xh(t).*sin(2*pi*Fc*t)实现信号的单边带幅度调制;分析已调信号频谱,绘出其时域波形和频谱。
(1):
t=-5:
0.01:
5;
h=1.\(pi*t);
y=fftshift(fft(h));
plot(t,y);
〔2〕、〔3〕:
x2=-2:
0.01:
2;
y2=sinc(x2);
xh=hilbert(y2);
y=imag(xh);
y1=y2.*cos(2*pi*100*x2)+y.*sin(2*pi*100*x2);
plot(x2,y1);
holdon;
3设计希尔伯特变换器并实现信号的单边带幅度调制。
(1)利用fir1s函数或firpm函数设计一个22阶的希尔伯特变换器。
(2)画出该希尔伯特变换器的频谱特性和单位脉冲响应。
(3)利用该希尔伯特变换器实现信号
的单边带幅度调制;分析已调信号频谱,绘出其时域波形和频谱。
〔1〕、〔2〕:
22阶希尔伯特滤波器设计:
n=22;
f=[0.050.95];m=[11];
fs=500;
b=firls(n,f,m,'h');
[h,w]=freqz(b,1,512,fs);
figure
(1);
plot(w,20*log10(abs(h)));grid;
axis([0250-4010]);
title('Hilbert变换器的幅频特性');
n=22;
f=[0.050.95];m=[11];
b=firls(n,f,m,'h');
[h,w]=freqz(b,1,512);%脉冲响应
plot(w,20*log10(abs(h)));grid;
title('Hilbert脉冲响应');
〔3〕:
n=22;
f=[0.050.95];m=[11];
b=firls(n,f,m,'h');
x2=-2:
0.01:
2;
y2=sinc(x2);
y=filter(b,1,y2);
plot(x2,y2,'*');holdon;
plot(x2,y);grid;
title('输入输出信号比照');
三、课程设计〔综合实验〕总结或结论
1、纯熟的掌握了matlab仿真软件的用法,学会运用常规函数对信号进展调制。
2、复习了数字信号处理的一些根本知识,对于单边带调制有了更深化的理解。
3、掌握了希尔伯特滤波器的设计。
四、参考文献
[1]matlab通信仿真教称
[2]matlab7.x数字信号处理人民邮电出版社