正弦信号的谱分析及提取

更新时间:2024-04-07 12:56:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

西南科技大学

课 程 设 计 报

课程名称: 通信系统课程设计 设计名称: 正弦信号的谱分析及提取 姓 名: 学 号: 20095972 班 级: 通信0902 指导教师: 起止日期: 2012.6.4-2011.6.18

西南科技大学信息工程学院制

课 程 设 计 任 务 书

学生班级:通信0902 学生姓名: 学号: 20095972

设计名称: 正弦信号的谱分析及提取 起止日期:2012.6.4—2012.6.18 指导教师:

设计要求: 基本要求: ? 采用matlab或者其他软件工具产生不同频率,不同幅度的两种正弦波信号sin1(n)与sin2(n),并将这两个信号叠加为一个信号sin3(n),观察sin1(n),sin2(n),sin3(n)信号的波形。 ? 对叠加后的信号sin3(n)用FFT作谱分析。 ? 选择合适的指标,设计FIR数字滤波器,从sin3(n)信号中提取信号sin1(n)与sin2(n)。 扩展要求: 在基本要求的基础上,增加用户设定功能: ? 用户可以设定两个正弦波信号的频率与幅度 ? 用户可以设定FIR数字滤波器指标 说明: ? 设计FIR数字滤波器可以采用matlab函数或者工具箱中FDA工具。 课 程 设 计 学 生 日 志

6.4—6.6 6.7 6.8 6.9—6.10 6.11 6.12 查阅设计所用相关资料 总体构思并确定方案 设计内容 产生信号sin3(n),并用FFT作谱分析 设定两个正弦波信号的频率与幅度学习调制与解调原理及方法 查阅FIR数字滤波器相关资料 设计FIR数字滤波器 6.13—6.14 6.19 完成设计报告 答辩 课 程 设 计 评 语 表

指导教师评语: 成绩: 指导教师: 年 月 日 正弦信号的谱分析及提取

一.设计目的和意义

1、 熟悉掌握matlab软件的使用; 2、理解信号的叠加和FFT频谱分析; 3、学习设计FIR数字滤波器;

4、 学习信号的调制与解调的相关知识;

二、设计原理

1.总体设计思路:

首先要产生两个正弦信号,可以通过用户自己输入信号的幅度和频率,然后利用matlab中的sin函数就可以直接生成两个正弦信号。将这两个正弦信号进行叠加就可以得到信号x3,再用MATLAB自带的fft函数做FFT变换进行频谱分析,可以得到各信号的频谱图。最后,为了从x3信号中恢复出原始x1和x2信号,需要设计一个低通(滤波器1),一个带通滤波器(滤波器2)。

2.设计原理图:

3. 采样定理:

在进行模拟/数字信号的转换过程中,当采样频率fs.max大于信号中,最高频率fmax的2倍时,即:fs.max>=2fmax,则采样之后的数字信号完整地保留了原始信号中的信息,一般实际应用中保证采样频率为信号最高频率的5至10倍;采样定理又称奈奎斯特定理。

4、窗函数滤波器:

数字信号处理的主要数学工具是博里叶变换.而傅里叶变换是研究整个时间域和频率域的关系。不过,当运用计算机实现工程测试信号处理时,不可能对无限长的信号进行测量和运算,而是取其有限的时间片段进行分析。做法是从信号中截取一个时间片段,然后用观察的信号时间片段进行周期延拓处理,得到虚拟的无限长的信号,然后就可以对信号进行傅里叶变换、相关分析等数学处理。无线长的信号被截断以后,其频谱发生了畸变,原来集中在f(0)处的能量被分散到两个较宽的频带中去了(这种现象称之为频谱能量泄漏)。

为了减少频谱能量泄漏,可采用不同的截取函数对信号进行截短,截短函数称为窗函数,简称为窗。

泄漏与窗函数频谱的两侧旁瓣有关,如果两侧瓣的高度趋于零,而使能量相对集中在主瓣,就可以较为接近于真实的频谱,为此,在时间域中可采用不同的窗函数来截短信号。

5、几种常用窗函数的性质和特点: 矩形窗

矩形窗属于时间变量的零次幂窗。矩形窗使用最多,习惯上不加窗就是使信号通过了矩形窗。这种窗的优点是主瓣比较集中,缺点是旁瓣较高,并有负旁瓣,导致变换中带进了高频干扰和泄漏,甚至出现负谱现象。 三角窗

三角窗巴特列特(bartlett)窗,是幂窗的一次方形式。与矩形窗比较,主瓣宽约等于矩形窗的两倍,但旁瓣小,而且无负旁瓣。 汉宁(Hanning)窗

汉宁窗又称升余弦窗,汉宁窗可以看作是3个矩形时间窗的频谱之和,或者说是 3个 sinc(t) 型函数之和,而括号中的两项相对于第一个谱窗向左、右各移动了 π/T,从而使旁瓣互相抵消,消去高频干扰和漏能。可以看出,汉宁窗主瓣加宽并降低,旁瓣则显著减小,从减小泄漏观点出发,汉宁窗优于矩形窗.但汉宁窗主瓣加宽,相当于分析带宽加宽,频率分辨力下降。 海明(Hamming)窗

海明窗也是余弦窗的一种,又称改进的升余弦窗。海明窗与汉宁窗都是余弦窗,只是加权系数不同。海明窗加权的系数能使旁瓣达到更小。分析表明,海

明窗的第一旁瓣衰减为一42dB.海明窗的频谱也是由3个矩形时窗的频谱合成,但其旁瓣衰减速度为20dB/(10oct),这比汉宁窗衰减速度慢。海明窗与汉宁窗都是很有用的窗函数。

6.用窗函数法设计FIR数字滤波器:

如果所希望的滤波器的理想频率响应函数为 Hd(e jω), 则其对应的

?单位脉冲响应为 h ( n ) ? 1 H ( e j? ) e j? nd ? 。用窗函数w(n)将hd(n)截断

dd???2?并进行加权处理,得到: h ( n ) ? h (n ) ? ( n )。h(n)就作为实际设计的FIR数字

dN?1j??j?nH滤波器的单位脉冲响应序列,其频率响应函数H(e jω)为 ( e ) ? ? h ( n )e。

n?0如果要求线性相位特性, 则h(n)还必须满足: h ( n ) ? ? h ( N? 1 ?n )。根据上式中的正、 负号和长度N的奇偶性又将线性相位FIR滤波器分成四类。 要根据所设计的滤波特性正确选择其中一类。 例如, 要设计线性相位低通特性, 可选择h(n)=h(N-1-n)一类, 而不能选h(n)=-h(N-1-n)一类。

窗函数法的设计步骤是:首先给定所要求的频率响应函数Hd(e jω),然后求hd(n)=IDTFT[Hd(e jω)],根据过渡带和阻带最小衰减选定窗w(n)的形状和N的大小,再求得所设计滤波器的单位抽样响应h(n)=hd(n)w(n),最后就可以求出H(e jω)=DTFT[h(n)]。 7、FFT变换:

FFT(Fast Fourier Transformation),即为快速傅氏变换,是离散傅氏变换的快速算法,它是根据离散傅氏变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改进获得的。

FFT实质上还是一种傅里叶变换,只是节省了傅里叶变换的计算次数。信号经过FFT变换后可以得到它的频域表达式,画出它的频域波形,这样可以更直观的看出信号的频谱特性。

三. 详细设计步骤

1、利用matlab的sin函数,构造出两个正弦波为信号1和信号2,,利用input()函数用户可自己设定信号1和信号2的频率和幅度。信号1为:x1=a1*sin(2*pi*f1*n),信号2为:x2=a2*sin(2*pi*f2*n),然后把这两个正弦波相加,x3=x2+x1,得到信号3。分别画出信号sinx1(n),sinx2(n),sinx3(n)的时域波形。

2、利用matlab中的fir1,hamming,freqz等函数设计窗函数滤波器1和2,

本程序采用海明窗。主要是因为它的窗谱主瓣比较窄,这样可以获得较陡的过渡带,还有就是因为它窗谱旁瓣的相对幅度较小,这样可以减小肩峰和波纹。同时,绘出滤波器的幅度和相位特性。

3、用设计出来的窗函数滤波器1去对信号3进行滤波,得到信号1的波形,同时用fft对恢复出来的信号1进行频谱分析。

4、用设计出来的滤波器2去对信号3进行滤波,得到信号2的波形,同时用fft变换对恢复出来的信号2进行频谱分析。

四、设计结果及分析

1、产生两个正弦信号x1,x2,将叠加产生的x3用FFT做频谱分析:

信号1的幅度为:a1=4 信号1的频率为:f1=20 信号2的幅度为:a2=3.5 信号2的频率为:f2=200 请输入窗函数滤波器指标:N=50 请输入窗函数滤波器指标:N=50

图1:信号x1,x2及叠加后的信号x3的时域波形

由图1可知,信号3是信号1和信号2在相同时刻上的幅度相加。

图2:信号x1,x2及叠加后的信号x3的频谱

由图2分析可知,信号中含有两种频率成分:20Hz和200Hz。可得知信号3的频谱为分别为信号1的频谱和信号2的频谱相加,由此可以知道FFT变换数据的对称性。

图3:滤波器1及它的频谱特性

图4:经滤波后恢复得到的信号x1

图5:滤波器2及它的频谱特性

图6:经滤波后恢复得到的信号x2

比较滤波后的信号与原始信号,二者波形上存在一定的差别,是因为参数设置的不适合,和窗函数的选取不当造成的,可以通过反复的重新设置滤波器的参数,直至恢复得到较理想的波形。

五、体会

通过这次课程设计,我对MATLAB在数字信号处理中的应用有更深入的了解。MATLAB它几乎可以应用在我们学习的各个领域中发挥着重要的作用,而我对它的了解也只还是皮毛而已。

几天的学习下来,设计所要求的我只能说是基本上满足,觉得自己的理论知识还不够吧,上课时有些问题自己还没有搞清楚,所以在写程序完成要求时难免会有不当之处。通过设计下来,我对MATLAB在数字信号处理中的相关函数的应用更加深刻了,能够较熟练地运用了,比如fft,fftfilt,ceil还有就是窗函数设计FIR滤波器时对窗函数的选取。

本次设计的重难点是设计一个满足要求的FIR低通滤波器恢复出两个原始信号。在这其中涉及到滤波器阶数,滤波器的截止频率的设定,但是通过在网上和图书馆查找资料,慢慢看别人的例子,开始对它们有了一些了解,刚开始设计的滤波器,根本没有滤波效果,之后通过一步一步慢慢的调试,终于设计出了比较满意的滤波器。

这次课程设计,涉及到信号与系统,数字信号处理,现代通信原理三门课程

的知识,把林乱的知识点都重新进行了整理,还扩展了其他相关方面的知识,更进一步掌握了如何使用 matlab。真的让我学到很多。

六、参考文献

[1] 张威 . MATLAB基础与编程入门 . 西安电子科技大学出版社,20008.2 [2] 程佩青 数字信号处理教程 清华大学出版社,2010.9 [3] 曹志刚、钱亚生 现代通信原理 清华大学出版社,2010.6 [4] 高成 matlab图像处理与应用 国防工业出版社,2007

[5] 罗军辉等.MATLAB7.0在数字信号处理中的应用 机械工业出版社,2005 [6]. 刘海棠 信号与系统(第二版).西安交通大学出版社2009.7

M文件:

clear all;

a1=input('信号1的幅度为:a1='); f1=input('信号1的频率为:f1='); a2=input('信号2的幅度为:a2='); f2=input('信号2的频率为:f2=');

N1=input('请输入第一个窗函数滤波器指标:N1='); N2=input('请输入第二个窗函数滤波器指标:N2=');

f=max(f1,f2);

N=6*f; %使抽样点数N为抽样频率

n=linspace(0,1,N); %单位长度采样N点 x1=a1*sin(2*pi*f1*n); %输入信号1 x2=a2*sin(2*pi*f2*n); %输入信号2 x3=x1+x2;%求叠加信号

figure(1); subplot(3,1,1)

plot(x1) %画出信号1的时域图 xlabel('nT');

ylabel('AsinwnT');

title('sin1(nT)的波形图');

subplot(3,1,2)

plot(x2) %画出信号2的时域图 xlabel('nT');

ylabel('AsinwnT');

title('sin2(nT)的波形图');

subplot(3,1,3)

plot(x3) %画出叠加信号3的时域图 xlabel('nT'); ylabel('Y');

title('sin1(nT)+sin1(nT)的波形图');

figure(2);

fs=N; %令采样频率等于抽样点数 X1=fft(x1); F1=X1(1:N);

fone=fs*(0:N-1)/fs;%1/fs为采样时间,(0:N-1)/fs即为时间序列 subplot(3,1,1); plot(fone,abs(F1)) title('X1的频谱图');

xlabel('f'); ylabel('S(w)');

X2=fft(x2); F2=X2(1:N);

ftwo=fs*(0:N-1)/fs; subplot(3,1,2); plot(ftwo,abs(F2)) title('X2的频谱图'); xlabel('f'); ylabel('S(w)');

X3=fft(x3); %求叠加信号的傅里叶变换 F3=X3(1:N);

fthree=fs*(0:N-1)/fs; %使频率轴从0开始 subplot(3,1,3);

plot(fthree,abs(F3)) %画出X3的频谱图 title('X3的频谱图'); xlabel('t'); ylabel('Y');

% 用窗函数法设计滤波器1分离出信号一 fc1=f1-1; fc2=f1+1;

w1=2*pi*fc1/fs;

w2=2*pi*fc2/fs; %将模拟滤波器的技术指标转为数字滤波器指标 window=hamming(N1+1); %使用海明窗函数

hn=fir1(N1,[w1/pi w2/pi],window);%设计带通滤波器,window长度为N1+1。N1为滤波器阶数,得到滤波器的系数hn

figure(3);

freqz(hn,1,N);%得到频率等分点及相应的幅度,也就是得到滤波器波形 title('滤波器1')

figure(4)

subplot(2,1,1) %将当前绘图窗口分割成2行1列,并且在第一区域 y1=fftfilt(hn,x3); %利用由hn表示的滤波器对数据矢量x3进行滤波 plot(y1)

title('滤波后得到信号1的波形') xlabel('t'); ylabel('Y');

Y1=fft(y1,N); %对y1进行傅里叶变换 subplot(2,1,2)

plot(abs(Y1)) %Y1取绝对值并画图 title('滤波后信号1频谱')

xlabel('f'); ylabel('S(w)');

% 用窗函数法设计滤波器2分离出信号二 fc1=f2-1; fc2=f2+1;

w1=2*pi*fc1/fs; %将模拟滤波器的技术指标转为数字滤波器指标 w2=2*pi*fc2/fs;

window=hamming(N2+1); %使用海明窗函数

hn=fir1(N2,[w1/pi w2/pi],window);%利用列矢量window中指定的窗函数进行滤波器设计,window长度为N2+1

figure(5)

freqz(hn,1,N); title('滤波器2')

figure(6)

subplot(2,1,1)

y2=fftfilt(hn,x3); %利用由b表示的滤波器对数据矢量x3进行滤波 plot(y2)

title('滤波后得到信号2的波形') xlabel('t'); ylabel('Y');

Y2=fft(y2,N); %对y2进行傅里叶变换 subplot(2,1,2)

plot(abs(Y2)) %Y2取绝对值并画图 title('滤波后信号2频谱'); xlabel('f'); ylabel('S(w)');

本文来源:https://www.bwwdw.com/article/sz8r.html

Top