数字信号处理大作业文档格式.docx
《数字信号处理大作业文档格式.docx》由会员分享,可在线阅读,更多相关《数字信号处理大作业文档格式.docx(16页珍藏版)》请在冰豆网上搜索。
设x(n)是长度为M的有限长序列,则定义x(n)的N点离散傅里叶变换为
(1-1)
X(k)的离散傅里叶逆变换IDFT为
(1-2)
式中,
称为DFT变换区间长度,
。
二、低通采样定理
低通采样定理说明采样频率与信号频谱之间的关系,是连续信号离散化的基本依据。
在进行A/D的转换过程中,当采样频率大于信号中最高频率的2倍时,采样之后的数字信号完整地保留了原始信号中的信息,如果使用理想低通滤波器对数字信号进行处理就可以恢复出原本的模拟信号。
三、数字信号转换为模拟信号的原理
理想低通滤波器恢复
奈奎斯特采样定理指出,只要采样频率大于等于原信号最高频率的二倍就可以将采样信号无失真的恢复为原本的模拟信号,数学上可表达为内插公式(1-3)。
(1-3)
其中xa(t)为模拟信号,xa(nT)为采样到的数字离散信号,T为采样周期。
零阶保持平滑滤波器恢复
由于在实际中理想低通滤波器难以实现,所以经常使用零阶保持平滑滤波器恢复的方法对采样信号进行恢复。
主要方法即为将离散的数字信号经过零阶保持器转换成台阶形的信号,再通过平滑滤波得出连续、平滑的模拟信号。
该方法虽然有失真,但是简单、易实现。
四、IIR滤波器
IIR数字滤波器在设计上可以借助成熟的模拟滤波器的成果,如巴特沃斯、契比雪夫和椭圆滤波器等,在设计一个IIR数字滤波器时,可以根据指标先写出模拟滤波器的公式,然后通过一定的变换,将模拟滤波器的公式转换成数字滤波器的公式。
本文中采用就是巴特沃斯滤波器。
而IIR数字滤波器的相位特性不好控制,对相位要求较高时,需加相位校准网络。
五、FIR滤波器
FIR滤波器:
有限长单位冲激响应滤波器,又称为非递归型滤波器,是数字信号处理系统中最基本的元件,它可以在保证任意幅频特性的同时具有严格的线性相频特性,同时其单位抽样响应是有限长的,因而滤波器是稳定的系统。
本文采取了窗函数法设计FIR滤波器,采用的窗函数为Kaiser窗,Kaiser窗是一种最优化窗,它的优化准则是:
对于有限的信号能量,要求确定一个有限时宽的信号波形,它使得频宽内的能量为最大。
也就是说,Kaiser窗的频带内能量主要集中在主瓣中,它有最好的旁瓣抑制性能。
六、程序框图:
2、实验描述
2.1无噪声情况下的信号频谱
2.1.1实验条件
在无噪声情况下,对正弦信号和抽样信号进行采样及谱分析,其中:
(1)正弦信号表达式为:
y=sin(2πt),信号最大频率为1Hz,抽样频率fs设置为5Hz;
(2)抽样信号为:
y=sinc(2πt)=sin(2π2t)/2π2t,最大频率为3.14Hz,,抽样频率fs设为15Hz;
(3)保持时间TP=20s;
(4)本文中所有的频谱横轴坐标均为频率Hz,坐标范围为0~fs/2;
(5)本文中给出的滤波器频率响应横轴坐标均为归一化频率,坐标范围一般为0~0.5;
(6)因为FFT只能得出有限点数的离散频谱,MATLAB的非散点画图功能可以很容易
的将离散点相连接变成连续的图像;
因此文中将离散信号恢复为连续信号的图像均
采用散点图绘制,使用多个散点来近似连续的模拟信号。
2.1.2实验过程及结果
(1)以设置好的采样频率对信号采样;
(2)快速傅里叶变换运算:
直接调用MATLAB自带的FFT函数,对采样得到的序列进行FFT运算,得到了时域信号的离散化频谱,结果如图2.1、2.2所示。
图2.1正弦信号离散频谱
图2.2抽样信号离散频谱
(3)将FFT运算后得出的序列y2进行零阶保持:
本实验采用的零阶保持方法为:
首先将序列y2相邻两个元素间插入N个0得到序列y2n,再将序列y2n与零阶保持序列filter0卷积得到零阶保持序列output0,因为插入了多个零值,所以output0在图像上呈现阶梯状。
设计零阶保持器系统函数如下:
(2-1)
零阶保持器序列可以写作:
filter0=RN+1,输出output0=RN+1*y2n。
FFT序列y2经过零阶保持后得到的正弦信号和抽样信号的频谱如下:
图2.3正弦信号的零阶保持频谱
图2.4抽样信号的零阶保持频谱
(4)平滑滤波
阶梯状信号中具有一些高频的成分,为了使频谱变得更加平滑连续,故使用一个巴特沃斯低通滤波器来去除零阶保持信号中的高频成分达到平滑的目的。
根据零阶保持器的频率响应(如图2.5),使用MATLAB中的buttord函数求出巴特沃斯滤波器参数,其幅频特性和相频特性如图2.6所示。
图2.5N=10时零阶保持器的频响
图2.6巴特沃斯滤波器的幅频特性和相频特性
巴特沃斯滤波器的技术指标为:
通带3dB截止频率wc=0.01;
阻带截止频率wp=0.037;
通带内最大衰减不大于3dB;
阻带内最小衰减为20dB;
阶数N=2。
将零阶保持得到的序列经过巴特沃斯滤波器滤波得到的频谱如下:
图2.7正弦信号的连续频谱
图2.8抽样信号的连续频谱
从图2.7和2.8中可以看出零阶保持平滑滤波的方法可以把FFT得到离散谱转化为便于观察的连续频谱,得到的频谱与理想状况相似。
但由于截断效应,理想的正弦信号频谱在f=1Hz响应应该为冲激信号,但是实际中f=1Hz附近发生了泄漏;
同理,在抽样信号的频谱中f=3.14Hz时幅度仍未归零,这也是受到了截断效应的影响。
而增大被抽样信号的保持时间应该可以改善截断效应的不良影响。
(5)理想低通滤波器恢复
为了对比理想低通滤波器恢复和零阶保持平滑滤波恢复的区别,接下来使用理想低通滤波器恢复的方法,对离散谱进行连续化。
按照内插公式对FFT得到的离散信号进行内插结果如图2.9,2.10所示。
图2.9正弦信号的连续频谱
图2.10抽样信号的连续频谱
从以上两图中可以看出,使用理想低通恢复出的信号连续谱基本与DFT的理论结果相同,由于截断效应导致的谱间干扰而出现的信号旁瓣也被恢复出来。
2.1.3总结
本部分主要对无噪声情况下的时域信号进行了谱分析,并且根据离散谱使用两种方法恢复出了近似的连续频谱。
其中理想低通滤波器恢复效果较好,是一种无失真的恢复,但由于理想的低通滤波器实际中难以实现,因此采用了一种简便、容易实现的方法——零阶保持平滑滤波的方法对离散信号进行恢复,这种恢复方法存在一定失真,但更具实用性。
而且本次试验也验证了截断效应确实是影响DFT和FT之间有所变差的重要原因,如果想要通过FFT得到更准确的频谱,就应该尽量的确保较多的采样点数和较大的保持时间。
2.2有噪声情况下的信号频谱
实际情况下信号常常会伴有噪声,如果噪声的主要频带和被分析信号的主要频带不重合,则可以设计经典滤波器将被分析信号的带外成分滤出。
但如果是在高斯噪声环境下,高斯噪声的频谱和被分析频谱有所重叠时,经典滤波器对于是否还能够改善谱分析的精度?
下文将对这些问题进行了讨论与验证。
2.2.1实验条件
在有噪声情况下,对抽样信号进行采样及谱分析,其中:
(1)采样信号1为:
y=sin(2πt)+sin(10πt),信号最大频率为5Hz,,抽样频率fs设
为15Hz,sin(10πt)为高次谐波噪声;
(2)采样信号2为:
y=sin(2π2t)/2π2t+0.1randn,信号最大频率为3.14Hz,,抽样频率fs设
为15Hz,0.1randn为高斯噪声,由MATLAB中自带的函数生成;
(3)其余条件均与与2.1.1部分相同。
2.2.2实验过程及结果
(1)以设置好的采样频率对信号采样;
(2)计算FIR滤波器参数:
根据抽样信号的频谱特性,可知本文中抽样信号的主要频带为频率小于3.14Hz的部分,因此,采用窗函数法设计FIR低通滤波器来对信号进行预滤,其中窗函数选择kaiser窗,设计过程如下:
幅频特性和相频特性如图2.11。
使用MATLAB的kaiserord函数和fir1函数计算滤波器参数,滤波器技术指标为:
通带3dB截止频率wc=0.21;
阻带截止频率wp=0.27;
阻带内最小衰减为40dB;
N=98;
β=5.65;
从图2.11中可以看出该滤波器在通带内具有线性相位。
图2.11FIR低通滤波器幅频特性和相频特性
(3)预滤与非预滤信号在时域和频域的差别
采样信号1
输入信号为y=sin(2πt)+sin(10πt)时滤波前后的时域信号如图2.12所示:
图2.12(A)滤波前信号图2.12(B)滤波后信号
从图中可以看出,经过滤波后的信号基本将滤波前的杂波消除,时域波形产生了一定滞后,相比无噪声的原信号,波形发生了一定的失真,幅值产生了变化。
分别将滤波后的信号和未滤波的信号进行FFT运算后进行频谱连续化的结果如图2.13和图2.14所示:
图2.13预滤前信号的连续谱图2.14预滤后信号的连续谱
从以上两图中容易看出,预滤后的连续谱未出现高频谐波成分,这证明经典滤波器对于信号中不与目标信号频谱重叠的频率成分都可以较为容易的滤除。
这说明预滤对于信号谱分析而言具有提高精确度的作用。
采样信号2
若采样信号2为:
y=sin(2π2t)/2π2t+0.1randn;
滤波前后的时域信号及无噪声时域信号如图2.15所示:
滤波前信号滤波后信号原始无噪声信号
图2.15时域信号
从图2.12中可以看出,有噪声信号经过滤波后,噪声有所减少,出现了一定的时延。
分别将滤波后的信号和未滤波的信号进行FFT运算后进行频谱连续化的结果如图2.16和图2.17所示:
未预滤频谱预滤频谱
图2.16使用零阶保持平滑滤波方法恢复的连续谱
图2.17使用理想低通滤波器方法恢复的连续谱
从图2.16和图2.17中可看出,预滤频谱在4Hz后的幅值趋于0是因为低通滤波器的作用,而在0~4Hz部分的频谱预滤和未预滤频谱基本相似。
由此可以得出,经典滤波器对于与目标信号频率成分重叠的噪音滤除作用有限。
2.2.3总结
本部分在采样信号具有噪声干扰的情况下设计了实验来讨论不同类型噪声对信号谱分析的干扰。
并且设计了FIR滤波器对采样信号预滤。
本部分的实验结果表明在已知目标信号大致频率范围的情况下,经典滤波器可以把信号中不与目标信号频谱重叠的频率成分都可以较为容易的滤除,而对于与目标信号频率成分重叠的噪音(高斯噪声),经典滤波器的滤除作用有限。
因此可以得出结论,信号中的干扰成分的频带与目标信号频带重叠较少时,经典滤波器预滤的改善效果比较明显。
若信号中具有较大高斯噪声时,使用经典滤波器预滤对于信号谱分析的改善作用较小。
3、MATLAB代码
clc;
clear;
closeall;
%%parameter
f=1*pi/pi;
fs2=15*f;
%%采样频率
T2=1/fs2;
TP=50;
%%保持时间
t2=0:
T2:
TP;
%%采样
N=400;
%%插零个数
mode=1;
%%1:
有噪声,预滤波0:
无噪声,不预滤波
mode2=0;
%%0:
使用理想低通插值1:
只使用零阶保持器插值
%%预滤波
ifmode==1
%x2=sinc(f*2*pi*t2)+0.1*randn(1,length(t2));
%%高斯噪声
x2=sin(f*2*pi*t2)+sin(5*f*2*pi*t2);
%%高次谐波
fcuts=[f*pi1.3*f*pi];
mags=[10];
devs=[0.050.001];
[n,Wn,beta,ftype]=kaiserord(fcuts,mags,devs,fs2);
kaiser=fir1(n,Wn,ftype,kaiser(n+1,beta));
freqz(kaiser);
title('
kaiser窗频响'
);
figure
xp=filter(kaiser,1,x2);
plot(t2(1:
100),x2(1:
100));
滤波前'
100),abs(xp(1:
100)));
滤波后'
figure
else
xp=sinc(f*2*pi*t2);
xp=sin(f*2*pi*t2)+sin(5*f*2*pi*t2);
end
%%FFT
y2=2*abs(fft(xp))/length(t2);
%y2=abs(fft(x2));
n2=(1:
length(t2))*fs2/length(t2);
plot(n2,y2);
预滤频谱'
y3=abs(fft(x2));
plot(n2(1:
(length(t2)-1)/2),y3(1:
(length(t2)-1)/2));
未预滤频谱'
(length(t2)-1)/2),y2(1:
(length(t2)-1)/2),'
.'
grid;
xlabel('
Hz'
fs2采样率下的离散频谱'
figure;
%%零阶保持
y2n=[y2
(1)];
forj=2:
length(y2)
y2n=[y2n,zeros(1,N),y2(j)];
filter0=ones(1,N+1);
output=conv(y2n,filter0);
x2n=(1:
length(output)-N)*fs2/(length(output)-N);
output0=output(1:
length(output)-N);
plot(x2n(1:
(length(x2n)-1)/2),output(1:
(length(x2n)-1)/2));
零阶保持输出'
%holdon;
%plot(n2(1:
%%零阶保持器频响
a=[1,-1];
b=[1,zeros(1,N),-1];
freqz(b,a,512,1);
title(sprintf('
0'
));
零阶保持器频响'
%%平滑滤波
T0=fs2/(length(output)-N);
f0=1/T0;
f00=int16(f0);
wc=10/f0;
%通带wp
ws=50/f0;
%阻带wp
[n,wn]=buttord(wc,ws,3,20);
[a1,b1]=butter(n,wn);
%计算巴特沃斯滤波器参数
aaa=filter(a1,b1,output0);
freqz(a1,b1,512,f00);
title(sprintf('
n=%dButterworthLowpassFilter'
n))
(length(x2n)-1)/2),aaa(1:
(length(x2n)-1)/2),'
零阶保持器恢复'
%%理想低通恢复
ifmode2==0
Tn=fs2/length(t2);
t1=[0:
0.001:
fs2];
out=[];
forj=1:
length(t1)
out(j)=0;
fori=1:
out(j)=out(j)+y2(i)*(sin(pi*(t1(j)-i*Tn))/Tn)/(pi*(t1(j)-i*Tn)/Tn);
%%插值公式
end
M=max(out)
plot(t1(1:
(length(t1)-1)/2),out(1:
(length(t1)-1)/2)/10,'
理想低通恢复'
)%%13.73
out=0;
4、课程感想
作为一个本科非通讯类专业的转专业学生,上了数字信号处理这门课后我感到我收获非常大,随着对这门课的学习,我对于频域、时域、傅里叶变换,Z变换、滤波器这些本科阶段经常接触却一直一知半解的东西渐渐地有了一种豁然开朗的感觉。
即使目前的理解依然相对浅薄,但我认为对于日后理解的深入来说,学习数字信号处理是一个非常好的开端。
无论是在思想还是专业水平上这门课都为我带来了一定的提升,绝对是本学期我收获最大的专业课之一。
在最后衷心的感谢老师一学期一直坚持板书的教学,虽然我不一定会在这门课中取得多高的分数,但真的非常感谢本学期老师为我们带来的不一样的数字信号处理!
!