数字信号处理课程仿真大作业Word格式文档下载.docx
《数字信号处理课程仿真大作业Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《数字信号处理课程仿真大作业Word格式文档下载.docx(13页珍藏版)》请在冰豆网上搜索。
4、对以上结果进行讨论。
5、给出源程序,包含信号如何产生、采样的实现、FFT函数的调用(或自编)、绘图等,给出计算机分析结果的图形截图及理论分析的草图。
四、详细程序及仿真波形:
理论分析:
用FFT分析周期函数的频谱结构,选择不同的截取长度Ts观察用FFT进行频谱分析时存在的截断效应(频谱泄露和谱间干扰)。
利用matlab的FFT对模拟信号进行谱分析时,只能以有限大的采样频率Fs对模拟信号采样有限点样本序列(等价于截取模拟信号一段进行采样)作FFT变换,得到模拟信号的近似频谱。
其误差主要来自以下因素:
(1)截断效应(频谱泄露和谱间干扰)
截断效应使谱分辨率(能分辨开的两根谱线间的最小间距)降低,并产生谱间干扰。
(2)频谱混叠失真
使折叠频率(Fs/2)附近的频谱产生较大失真。
理论和实践都已证明,加大截取长度Ts可以提高分辨率;
另外选择合适的窗函数可降低谱间干扰;
而频谱混叠失真要通过提高采样频率Fs或预滤波(在采样之前滤除折叠频率以外的频率成分)来改善。
用FFT进行频谱谐波理论理论分析:
在信号处理中,信号的频谱分析是重要的应用领域之一。
由于FFT在计算上的高效率,以及在计算机上的应用,连续时间或离散时间的信号谱分析都直接或间接地利用了这一技术。
对于一个周期的信号,作谐波分析,我们可以对其进行傅里叶级数展开,将其看做是许多不同频率的谐波叠加。
而利用FFT变换是,由于是采用间隔取样进行频谱分析,其必然会丢失一些频谱分量,因此在频谱曲线就会少一些频谱尖峰,如果采样点越多,丢失的频谱尖峰就越少。
模拟仿真实验中,我们分别取256和1024个采样点对方波信号和三角波信号进行FFT变换的谐波分析,以下为实验源程序及图形截图。
1、一个方波信号(f=50Hz,幅值为1,-1,各半个周期)的产生
clear
t=0:
0.00001:
0.04;
f=50;
x=square(2*pi*f*t);
plot(t,x);
axis([00.04-1.51.5]);
图中我们绘出了两个周期的方波图形,其频率f=50Hz,周期T=0.02s,振幅为+1,-1。
对一个周期分别采样256点和1024点,利用matlab的FFT程序做频谱分析分析。
利用FFT函数求解周期方波信号,经过分析可以得知,信号的最高频率是50Hz,,因此采样周期必须小于2pi/50,即采样频率必须大于50Hz,去N=256,N=1024。
为了能够形象说明FFT程序做频谱分析分析的作用,利用FFT函数求解周期方波信号时,采样间隔Ts我们并没有采用Ts=0.02/N,而是采用了一个适当的值。
n=[0:
1:
255];
N=256;
Ts=1./1000;
t=n.*Ts
Xn=square(50*2*pi*t,50)
w=hamming(N)
c=bartlett(N)
H=Xn.*w'
B=Xn.*c'
subplot(2,1,1);
plot(t,Xn,'
r'
);
title('
方波曲线'
)
subplot(2,1,2);
plot(abs(fft(Xn,N)),'
N=256方波频谱曲线'
以上两个图,一个是连续的方波和方波频谱曲线,另一个是离散的句柄方波和方波曲线,绘制第二张图时,只需将源程序的最后两行命令:
改为:
stem(t,Xn,'
stem(abs(fft(Xn,N)),'
下面我们讨论采用点为N=1024的情况:
1023];
N=1024;
Ts=1./10000;
N=1024方波频谱曲线'
结论:
从图中可以看出,当N=256时分辨率太小,只看到10个尖峰;
当N=1024时,分辨率加大,则显示出远远大于10个尖峰。
同时可以看出,当把N加倍时,其高度也增加数倍。
另外,对于一个周期的信号,作谐波分析,我们可以对其进行傅里叶分解,将其看做是许多不同频率的谐波叠加。
由图中可知,1024采样点的频谱尖峰比256采样点的尖峰多。
2、一个三角波信号(f=50Hz,幅值为1,-1)的产生
x=sawtooth(2*pi*f*t);
Xn=sawtooth(50*2*pi*t,0.5)
三角波曲线'
N=256三角波频谱曲线'
N=1024三角波频谱曲线'
)
绘制第二张图时,程序修改见1中方波情况的详细分析。
利用FFT计算频谱时增加采样点的数量可以提高分辨率。
采样点为256和1024时都没有失真,但是256时会丢失一些频谱分量,因此在频谱曲线就会少一些频谱尖峰,如果采样点越多,丢失的频谱尖峰就越少。
说明采样频率越大,即采样点越多失真越小。
由此可见,matlab模拟结果与理论分析一致。
白噪声信号影响时域信号的强度,但是它不会影响时域信号的频率,因此可以从频域信号中提取有用的信号。
实际应用中,接收信号通常都是很微弱的,这就相当于加入了一个较强的噪声项,使有用信号掩埋在噪声之中,无法直接在时域进行分析。
但将接收信号转换到频域,从频谱上就可以很容易地将有用信号检测出来。
下面举例说明:
在matlab程序中白噪声信号,我们可以看成是一个随机序列,其程序如下:
随机序列:
rand(m,n)%产生m行,n列的在[0,1]上服从均匀分布的随机数矩阵
randn(m,n)%产生均值为0,方差为1的高斯随机序列
(1)方波:
subplot(2,2,1)
n=0:
N-1;
t=0.01*n;
q=n*2*pi/N;
x=square(2*pi*t);
plot(x,'
原始信号'
subplot(2,2,3)
y=fft(x,N);
plot(q,abs(y),'
FFTN=256'
x1=square(2*pi*t)+0.2*randn(1,N);
subplot(2,2,2)
plot(x1,'
加噪信号'
subplot(2,2,4)
y1=fft(x1,N);
plot(q,abs(y1),'
加噪FFTN=256'
(2)三角波:
x=sawtooth(2*pi*t,0.5);
x1=sawtooth(2*pi*t,0.5)+0.2*randn(1,N);
plot