数字通信原理课程设计报告书
课
名称
正弦信号的谱
及提取
姓 名
学 号
院 系
物理与电信
系
专 业
通信工程
指导教师
2010年 1 月15日
一、设计目的与要求:
设计目的
1、熟练掌握相关软件的应用;
2、进一步理解信号的各种处理方式与方法;
3、掌握使用FFT及其逆变换;
4、掌握滤波器的各种设计和应用方法;
5、理解MATLAB的工具箱的应用
设计要求
用matlab产生不同频率,不同幅度的两个正弦波信号y1和y2,并将两个信号叠加形成新的信号y3,利用matlab自带的FFT函数对信号y3进行频谱分析。选择合适的指标,设计FIR数字滤波器,从信号y3中提取信号y1与y2。
指导教师签名:
2010年 1 月 15日
二、指导教师评语:
指导教师签名:
2010年 1 月 15日
3、成绩
验收盖章
2010年 1 月 15日
正弦信号的频谱分析及提取
孟 冰
(湖南城市学院物理与电信工程系通信工程专业,益阳,413000)
1 设计目的
1、熟练掌握相关软件的应用;
2、进一步理解信号的各种处理方式与方法;
3、掌握使用FFT及其逆变换;
4、掌握滤波器的各种设计和应用方法;
5、理解MATLAB的工具箱的应用
2 设计原理
利用MATLAB产生两个正弦波信号,并将两个信号叠加形成新的信号,对叠加后的信号用FFT作谱分析。
在matlab中,可以用三种方式实现数字滤波。首先,可以利用它包含的丰富的函数来实现FIR数字滤波;此外,还提供了工具箱,其中的FDA工具可以很方便的根据指标设计出需要的滤波器。还可以通过调用simulink中的功能模块构出数字滤波器的仿真框图。
利用滤波器从合成信号的频谱中滤掉不属于本信号的频率部分,经过fftfile命令得到信号时域图,再通过快速傅里叶变换得到原始信号的频域波形。
原理框图如下所示:
图2.1 原理框图
3 设计步骤
3.1 输入原始信号并通过叠加得到混合信号,并选取合适的采样频率
开始,利用sin函数产生两个不同幅度不同频率的信号s1,s2:使用input命令,使信号的幅度和频率由用户外部输入。接着通过
s3=s1+s2,得到叠加后的信号s3.程序中用if语句根据用户输入的信号频率决定N的取值。N为信号s1和s2中频率高者的频率值的一半,而采样频率fs等于抽样点数N。从而避免输出波形显的过密或过稀,提高FFT变换的速度
3.2 对叠加后的信号s3用FFT作谱分析
利用matlab提供的傅里叶变换函数FFT,得到叠加后的信号s3的傅里叶变换。因为离散傅里叶变换,其振幅关于N/2对称,所以只选取0到N/2之间的点。3.3 利用设计的滤波器,从信号s3中提取信号s1与s2
数字滤波器是具有一定传输选择特性的数字信号处理装置,其输入、输出均为数字信号,实质上是一个由有限精度算法实现的线性时不变离散系统。它的基本工作原理是利用离散系统特性对系统输入信号进行加工和变换,改变输入序列的频谱或信号波形,让有用频率的信号分量通过,抑制无用的信号分量输出。
叠加信号s3利用fftfile函数,将原始信号从叠加信号的频谱中滤取出来,得到信号时域特性,用fftfile函数得到的结果y1,y2中包含虚部和实部两部分。再用real命令显示滤得信号的实部。此时可看出,大致波形是正弦信号,但存在很大的失真。
3.4 获取滤波后信号的频谱
最后将y1,y2分别通过FFT变换,得到原始信号的频谱,此时我们可以观察到信号的频谱几乎没有失真。
4 程序设计
clear all;
close all;
z1=input('请输入信号1的幅度: ');
f1=input('请输入信号1的频率: ');
z2=input('请输入信号2的幅度: ');
f2=input('请输入信号2的频率: '); %信号s1,s2的参数设定
f=max(f1,f2); %根据抽样定理,由输入频率取采样点数
N=3*f
t=linspace(0.1,1.1,N); %N也相当于抽样频率
s1=z1*sin(2*pi*f1*t); %输入信号s1
s2=z2*sin(2*pi*f2*t); %输入信号s2
s3=s1+s2; %叠加信号s3
figure(1)
stem(t,s1) %输入信号s1的二维直杆图
title('原始信号s1');
figure(2)
stem(t,s2) %输入信号s2的二维直杆图
title('原始信号s2');
figure(3) %叠加信号s3的二维直杆图
stem(t,s3)
title('叠加信号s3');
X3=fft(s3,N);
figure(4)
plot(abs(X3))
title('混和信号s3频谱图');
c=input('请输入滤波器1指标: ');
fc1=f1-1;
fc2=f1+1;
w1=2*pi*fc1/N;
w2=2*pi*fc2/N; % 设置滤波器1带宽
window=hamming(c+1) %使用hanmming窗函数
h=fir1(c,[w1/pi w2/pi],window); %使用标准响应的加窗设计函数fir1
figure(5)
freqz(h,1,N); %数字滤波器频率响应
title(' 滤波器1频率响应曲线')
y1=fftfilt(h,s3); %对信号进行滤波零相位输出y1
figure(6)
subplot(3,1,1)
plot(y1)
title('滤波后信号1波形(含有实、虚部)')
subplot(3,1,2)
plot(real(y1))
title('滤波后信号1波形(含有实部)')
Y1=fft(y1,N); %y2的fft变换
subplot(3,1,3)
plot(abs(Y1))
title('滤波后信号1频谱')
c=input('请输入滤波器2指标: ');
fc1=f2-1;
fc2=f2+1;
w1=2*pi*fc1/N;
w2=2*pi*fc2/N; % 设置滤波器2带宽
window=hamming(c+1) %使用hanmming窗函数
h=fir1(c,[w1/pi w2/pi],window); %使用标准响应的加窗设计函数fir1
figure(7)
freqz(h,1,N);
title(' 滤波器2频率响应曲线')
y2=fftfilt(h,s3); %对信号进行滤波零相位输出y2
figure(8)
subplot(3,1,1)
plot(y2)
title('滤波后信号2波形(含有实、虚部)')
subplot(3,1,2)
plot(real(y2))
title('滤波后信号2波形(含有实部)')
Y2=fft(y2,N); %y2的fft变换
subplot(3,1,3)
plot(abs(Y2))
title('滤波后信号2频谱')
5 设计结果及分析
程序运行后得到的信号波形如下图。因为是离散信号,当频率太高时,看起来就不像模拟正弦波那样(输入信号参数:a1=8,f1=30,a2=6,f2=60;滤波器1和滤波器2参数c=75。后面得到的结果均是在此参数之上。)
图5.1是原始信号s1=sin(60πt)的二维杆图,图5.2是原始信号s2=sin(120πt)的二维杆图,可以看到信号s1的周期为信号s2的两倍,而s3是两个信号在相同时刻的幅度叠加。
图5.1 原始信号s1=sin(60πt)的二维杆图
图5.2 原始信号s2=sin(120πt)的二维杆图
叠加后的信号s3的二维杆图和频谱图分别如图5.3和图5.4。
图5.3 叠加信号s3=s1+s2的二维杆图
图5.4 经过混叠后的信号s3的频谱图
设计的滤取两个信号的滤波器相频特性分别如图5.5和图5.6。(均为带通滤波器)
图5.5 滤取信号1的滤波器相频特性
图5.6 滤取信号2的滤波器相频特性
设定滤波器阶数都为75,对信号进行滤波零相位输出并加FFT变换处理后得到的信号y1(从s3中分离的s1信号)、y2(从s3中分离的s2信号)的时域和频域情况如图六和图七所示,时域信号是并不完整的规则的正弦信号,频率特性在原始信号频率处明显有幅值。
滤波后两个信号的时域和频域特性分别如图5.7和5.8。
图5.7 滤波后信号1的时域和频域特性
图5.8 滤波后信号2的时域和频域特性
6 设计总结
本次课程设计涉及的主要知识是数字信号处理,要求利用软件实现对数字信号的一些处理。Matlab在处理信号方面比C语言简单,软件包含了很多函数和工具箱,还能进行仿真。
设计的难点在于滤波器的设计,虽然还是有点不精通,但也有很大的进步,掌握了如何利用FDA工具箱设计滤波器。
本次设计达到了设计要求和设计目的。经过这次课程设计,把林乱的知识点都重新进行了整理,还扩展了其他相关方面的知识,更进一步掌握了如何使用matlab工具箱。
7 心得与体会
在此次课程设计中,通过老师的指导以及自己在图书馆和网上查阅资料,学习了MATLAB和数字通信方面的相关知识;经过此次课程色设计,我更加懂得理论与实践的重要性,通过实践应用,使得自己对书本知识的理解加深,受益良多。
参考文献
[1] 程佩青.数字信号处理教程[M]..清华大学出版社,2008:89-98.
[2] 刘卫国.MATLAB程序设计教程[M].中国水利水电出版社,2006:135-136.
[3] 李建新.现代通信系统与仿真-matlab工具箱[M].西安电子科技大学出版社,2000:54-
68.
[4] 孙屹.MATLAB通信仿真开发手册[M].国防工业出版社,2005:39-54.
[5] 阮沈青.MATLAB程序设计[M].北京电子工业出版社,2004:147-168.