数字信号处理实验快速傅里叶变换及其应用Word格式文档下载.docx
- 文档编号:20688261
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:27
- 大小:131.71KB
数字信号处理实验快速傅里叶变换及其应用Word格式文档下载.docx
《数字信号处理实验快速傅里叶变换及其应用Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《数字信号处理实验快速傅里叶变换及其应用Word格式文档下载.docx(27页珍藏版)》请在冰豆网上搜索。
=0,其他
(b)衰减正弦序列
X(b)=exp(-an)*sin(2pi*fn),0=<
(c)三角波序列
Xb(n)=n,0=<
3
=8-n,4=<
7
(d)反三角波序列
Xc(n)=4-n,0=<
=n-4,4=<
上机实验内容:
1.观察高斯序列的时域和幅频特性,固定信号xa(n)中参数p=8,改变q的值,使q分别等于2,4,8,观察他们的时域和幅频特性,了解当q取不同值时,对信号序列的时域和幅频特性影响;
改变p,使p分别等于8,13,14,观察参数p变化对信号序列的时域和幅频特性影响,注意p等于多少时,会发生明显的泄漏现象,混叠是否也随之出现?
记录实验中观察到的现象,绘出相应的时域序列和幅频特性曲线。
代码:
%%高斯序列以p,q为参数生成并输出其时域序列波形以及其dtft;
function[timePlot,spectrumPlot]=Gauss(p,q)
%%输入相关参数
n=0:
15;
N=4000;
w=linspace(-pi,pi,N);
g=exp(-(n-p).^2/q);
spec=dtft(N,g);
subplot(2,1,1);
stem(n,g);
title(strcat('
当p='
num2str(p),'
q='
num2str(q),'
时的高斯时域波形'
));
subplot(2,1,2);
plot(w,spec);
时的高斯频域波形'
end
%%DTFT变换得到频谱:
function[spectrum]=dtft(n,x)
%%取4000采样点;
w=linspace(-pi,pi,n);
spectrum=zeros(1,n);
fork=1:
n
form=1:
length(x)
wn(k,m)=exp(-1j*w(k)*m);
end
spectrum(k)=abs(x*wn(k,:
)'
);
end
实验结果如下:
.
P=8,q=2
P=8,q=4;
P=8,q=8;
P=13,q=8
P=14,q=8;
分析:
当p固定,q变化时,由时域波形可知,q代表了波形以p为中心向两侧衰减的速度,发现当q越大时,衰减的速度越快,反之,衰减的速度相对较慢,高频分量越小,从频域波形分析可知,三种情况下的形状是相似的,但是三种情况下的频谱在q比较的大的时候在高频上出现了较少的高频分量以及较快的高频分量的衰减。
当q固定,p变化时,由时域波形可知,p代表了波形的移序,在频谱上,显而易见,在p更大的时候产生了更多的高频分量。
右移之后,序列相当于被截断,那么相对应的其频谱泄漏的情况更加的严重,从而出现了高频分量较多的情况。
2、观察衰减正弦序列xb(n)的时域和幅频特性,a=0.1,f=0.0625,检查谱峰出现位置是否正确,注意频谱的形状,绘出幅频特性曲线,改变f,使f分别等于0.4375和0.5625,观察这两种情况下,频谱的形状和谱峰出现的位置,有无混叠和泄漏现象?
说明产生现象的原因。
%%按照alpha和f的值生成相应的正弦序列,画出其时域和频域(dtft)的波形;
function[output_args]=sinusoidal(alpha,f)
%%生成序列
x=exp(-alpha*n).*sin(2*pi*f*n);
%%对离散序列进行dtft变换
spec=dtft(N,x);
stem(n,x);
当α='
num2str(alpha),'
f='
num2str(f),'
时的正弦时域波形'
时的正弦频域波形'
a=0.1,f=0.0625;
F=0.4375
F=0.5625;
在a=0.1固定的条件下,f=0.0625时,谱峰在低频出约等于2*pi*f,但是在f=0.4375和f=0.5626的时候,谱峰主要集中在高频位置。
后两种情况由于不满足nyquist采样定律,所以i出现了混叠。
3.代码;
function[]=triangle(N)
%UNTITLED5Summaryofthisfunctiongoeshere
%Detailedexplanationgoeshere
fork=0:
x(k+1)=k;
fork=4:
x(k+1)=8-k;
spec=fft(x);
spec=abs(spec);
N-1;
subplot(1,2,1);
title('
序列波形'
subplot(1,2,2);
stem(n,spec);
title(strcat(num2str(N),'
点FFT'
End
逆三角波:
function[]=reversetriangle(N)
x(k+1)=4-k;
x(k+1)=k-4;
fork=8:
N-1
x(k+1)=0;
正三角波
N=32;
逆三角波
正三角波和逆三角波的时域波形上的走势是不一样的。
在频域上可以发现,N=8时,两者的fft互为相反数,因为两者的和实际上就是一个矩形窗函数,rectwin(8),由于rectwin(8)的fft为80000000,所以除了fft(0)以外,其他都为相反数。
而当N=16时,两者之间的和为一个补零了的rectwin(8),
对于N不同时得到的结果发现,实质上同一个序列补零以后的频谱并没有发生太大的变化,补零后的序列相当了有了更多的采样点,在对应位置处的fft值还是相同的,不同的是,当N变大时,补零长度变大时,暴露出来的更多的采样点值可以减轻fft的栅栏效应。
4、一个连续信号含两个频率分量,经采样得
x(n)=sin[2π*0.125n]+cos[2π*(0.125+∆f)n]n=0,1,…N-1
已知N=16,∆f分别为1/16和1/64,观察其频谱;
当N=128时,∆f不变,其结果有何不同?
function[output_args]=test4(delta_f,n)
%UNTITLED7Summaryofthisfunctiongoeshere
x=zeros(1,n);
n-1
x(k+1)=sin(2*pi*0.125*k)+cos(2*pi*(0.125+delta_f)*k);
end;
stem(spec);
deltaf='
num2str(delta_f),'
N='
num2str(n)));
N=16,deltaf=1/16;
N=16,deltaf=1/64;
N=128,deltaf=1/16
N=128,deltaf=1/64
由fft频谱图可知,在N=16时,deltaf=1/16时,fft频谱是正确的应该是两个冲激,但是在deltaf=1/64时,此时的信号的带宽减小,由于采样点数是固定的,导致卷积的过程中出现了泄露的情况,因此在第二种情况下出现了谱线扩散的情况。
在N=128时,相当于扩展了加窗的宽度,因而没有出现频谱的泄漏。
5、用FFT分别计算xa(n)(p=8,q=2)和xb(n)(a=0.1,f=0.0625)的16点循环卷积和线形卷积。
alpha=0.1;
f=0.0625;
p=8;
q=2;
k=0:
31;
fori=17:
32
g(i)=0;
x(i)=0;
specg=fft(g);
specx=fft(x);
convSpec=specg.*specx;
linearConv=ifft(convSpec);
stem(k,linearConv);
循环卷积:
shiftSpec=specg.*specx;
shiftConv=ifft(shiftSpec);
stem(n,shiftConv);
6、
clearall;
clc;
N=512;
kn=1:
N;
a=1:
2*N-1;
%%生成512个均值为1,方差为1的随机序列;
x=1+1.*randn(512,1);
x=x'
;
4
t(k)=k;
fork=5:
8
t(k)=8-k;
%%直接线性卷积
convout=conv(x,t);
specx=fft(t);
subplot(3,1,1);
stem(convout);
直接线性卷积'
out=zeros(1,519);
out1=zeros(1,519);
%%重叠相加法
form=9:
71
t(m)=0;
spec=fft(t);
outm=zeros(1,519);
over(k,:
)=[x((64*(k-1)+1):
64*k)zeros(1,7)];
spectrumn(k,:
)=fft(over(k,:
)).*spec;
)=ifft(spectrumn(k,:
changespectrum(k,:
)=[zeros(1,(k-1)*64)spectrumn(k,:
)zeros(1,519-64*k-7)];
outm=outm+changespectrum(k,:
subplot(3,1,2);
stem(outm);
重叠相加法线性卷积'
%%重叠保留法
xx=[zeros(1,7),x];
over1(k,:
)=xx(64*(k-1)+1:
64*(k-1)+71);
over1(9,:
)=[xx(513:
519)zeros(1,64)];
9
speco1(k,:
)=fft(over1(k,:
spectrumout1(k,:
)=speco1(k,:
).*spec;
)=ifft(spectrumout1(k,:
s=spectrumout1;
out1=[s(1,8:
end)s(2,8:
end)s(3,8:
end)s(4,8:
end)s(5,8:
end)s(6,8:
end)s(7,8:
end)s(8,8:
end)s(9,8:
14)];
subplot(3,1,3);
stem(out1);
重叠保留法线性卷积'
7、线性相关:
线性相关即为互相关,在此不再重述。
如题8;
循环相关:
clear;
xa=exp((-(n-p).^2)/q);
a=0.1;
xb=exp(-a*n).*sin(2*pi*f*n);
xak=fft(xa);
xbk=fft(xb);
yn=ifft(conj(xak).*xbk);
stem(n,yn);
xlabel('
n'
ylabel('
幅度'
循环相关'
yn=ifft(conj(xbk).*xak);
8.互相关
rxy
n=16;
fori=1:
g(i)=exp(-(i-p)^2/q);
x(i)=exp(-alpha*(i-1))*sin(2*pi*f*(i-1));
fori=n+1:
2*n
specx=fft(x,2*n);
specg=fft(g,2*n);
corr=ifft(conj(specx).*specg);
rm=real(corr);
rm=[rm(n+2:
2*n)rm(1:
n)];
m=(-n+1):
(n-1);
stem(m,rm);
结果:
Ryx
corr=ifft(specx.*conj(specg));
自相关、xa(n)
g(i)=exp(-alpha*(i-1))*sin(2*pi*f*(i-1));
Xb(n)自相关
x(i)=exp(-(i-p)^2/q);
三、思考题:
1、实验中的信号序列Xc(n)和Xd(n),在单位圆上的变化频谱|Xc(exp(jw)|和|Xd(exp(jw))|会相同吗?
如果不同,说出哪一个低频分量更多一些,为什么?
答:
由三角波的32点fft可以看出,两者的频谱是不一样的。
逆三角波的频谱的低频分量更多一点。
2、对于一个有限长度序列进行DFT等价于将该序列周期延拓后进行DFT展开,因为DFS也知识取其中一个周期来运算,所以FFT在一定条件下也可以用以分析周期信号序列。
如果实正弦信号sin(2pi*fn)f=0.1用16点FFT来做DFS运算,得到的频谱是信号本身的真实谱吗?
为什么?
不是。
因为原信号的周期是10,因而进行16点FFT时,其16点的周期延拓后的波形已经不再是原来的波形了。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字信号处理实验 快速傅里叶变换及其应用 数字信号 处理 实验 快速 傅里叶变换 及其 应用
![提示](https://static.bdocx.com/images/bang_tan.gif)