收藏 分销(赏)

实验四--连续时间傅立叶变换.doc

上传人:仙人****88 文档编号:9450675 上传时间:2025-03-26 格式:DOC 页数:20 大小:355.50KB 下载积分:10 金币
下载 相关 举报
实验四--连续时间傅立叶变换.doc_第1页
第1页 / 共20页
实验四--连续时间傅立叶变换.doc_第2页
第2页 / 共20页


点击查看更多>>
资源描述
信号与系统实验报告 实验四 连续时间傅立叶变换 §4.1连续时间傅立叶变换的数字近似 1. 求CTFT的解析表达式。可将看作,。 g=sym('exp(-2*t)*Heaviside(t)'); g2=subs(g,'-t','t'); x=g+g2; fx=fourier(x); 2. 创建一个向量,它包含了在区间t=[0:tau:T-tau] 上(其中和),信号的样本。 clc; t=0:0.01:10-0.01; y=exp(-2*(t-5)).*(0.5+0.5*sign(t-5))+exp(2*(t-5)).*(0.5+0.5*sign(-t+5)); plot(t,y); 3. 键入y=fftshift(tau*fft(y))计算样本。因为对于基本上为零,就能近似用个样本分析中计算出信号的CTFT。 clc; t=0:0.01:10-0.01; y=exp(-2*(t-5)).*(0.5+0.5*sign(t-5))+exp(2*(t-5)).*(0.5+0.5*sign(-t+5)); y=fftshift(0.01.*fft(y)); y=abs(y); plot(t,y); axis([4,6,-0.1,1.2]); 4.构造一个频率样本向量w,它按照 >> w=-(pi/tau)+(0:N-1)*(2*pi/(N*tau)); 与存在向量Y中的值相对应。 5.因为是通过时移与相联系的,所以CTFT就以线性相移项与相联系。利用频率向量w直接由Y计算的样本,并将结果存入x中。 clc; t=0:0.01:10-0.01; tau=0.01; N=10/0.01; y=exp(-2*(t-5)).*(0.5+0.5*sign(t-5))+exp(2*(t-5)).*(0.5+0.5*sign(-t+5)); y=fftshift(0.01.*fft(y)); w=-(pi/tau)+(0:N-1)*(2*pi/(N*tau)); x=exp(j*5*w).*y; 6.利用abs和angle画出在w标定的频率范围内X的幅值和相位。对于相同的值,也画出在1中所导出的解析式表达式的幅值和相位。CTFT的近似值与解析导得的相符吗?若想在一张对数坐标上画出幅值,可以用semilogy,这是会注意到,在较高的频率上近似不如在较低的频率上好。因为用了样本近似,所以在时间段长度内,信号变化不大的那些信号的频率分量近似程度会更好一些。 clc; tau=0.01; T=10; t=0:tau:T-tau; N=T/tau; y=exp(-2*(t-5)).*(0.5+0.5*sign(t-5))+exp(2*(t-5)).*(0.5+0.5*sign(-t+5)); y=fftshift(0.01.*fft(y)); w=-(pi/tau)+(0:N-1)*(2*pi/(N*tau)); x=exp(i*5*w).*y; xp=abs(x); xf=angle(x); subplot(211) plot(t,xp); subplot(212) plot(t,xf); 7.利用abs和angle画出Y的幅值和相位,它们与X的图比较后怎样?能估计到这一结果吗? clc syms s w; g=sym('exp(-2*s)*Heaviside(s)'); g2=subs(g,'-s','s'); y=g+g2; fw=fourier(y,s,w); ff=atan(imag(fw)/real(fw)); fp=abs(fw); tau=0.01; T=10; t=0:tau:T-tau; N=T/tau; y=exp(-2*(t-5)).*(0.5+0.5*sign(t-5))+exp(2*(t-5)).*(0.5+0.5*sign(-t+5)); y=fftshift(0.01.*fft(y)); w=-(pi/tau)+(0:N-1)*(2*pi/(N*tau)); x=exp(i*5*w).*y; xp=abs(x); xf=angle(x); subplot(211) hold on plot(t,xp); ezplot(fp,-10:10) hold off subplot(212) hold on plot(t,xf); ezplot(ff,-10:10) hold off §4.2连续时间傅立叶变换性质 1.键入Y=fftshift(fft(y)),计算向量Y的傅立叶变换。键入 >> w=[-pi:2*pi/N:pi-pi/N]*fs; 将对应的频率值存入向量w中。利用w和Y在区间内画出该连续时间傅立叶变换的幅值。 函数ifft是fft的逆运算。对于偶数长度的向量,fftshift就是它本身的逆。对于向量Y,N=8192,这个逆傅立叶变换能用键入以下命令而求得 >> y=ifft(fftshift(Y)); >> y=real(y); 由于原时域信号已知是实的,所以这里用了函数real。然而,在fft和ifft中的数值舍入误差都会在y中引入一个很小的非零虚部分量。一般说来,逆CTFT不必是一个实信号,而虚部可以包含有显著的能量。当已知所得信号一定是实信号时,并且已经证实所除掉的虚部分量是没有意义的,real函数才能用于ifft的输出上 load splat y=y(1:8192); N=8192; fs=8192; Y=fftshift(fft(y)); sound(y,fs); w=(-pi:2*pi/N:pi-pi/N)*fs; subplot(211) plot(w,Y); title('Y'); y=ifft(fftshift(Y)); y=real(y); subplot(212) plot(w,y); title('y'); 2. 置Y1=conj(Y)并将Y1的逆傅立叶变换存入Y1中,用real(y1)以确保y1是实的,用sound(y1,fs)将y1放出。已知的逆傅立叶变换是如何与联系的,能解释刚才听到的是什么吗? load splat y=y(1:8192); N=8192; fs=8192; Y=fftshift(fft(y)); Y1=conj(Y); y1=ifft(fftshift(Y1)); sound(y1,fs); w=(-pi:2*pi/N:pi-pi/N)*fs; plot(w,y1); 答:刚才听到的是y信号反过来放的声音。 的CTFT可以用它的幅值和相位写成 式中。对于许多信号,单独用相位或幅值都能构造出一个有用的信号的近似。例如,考虑信号和,其CTFT为 3.只要是实信号,用解析方法说明和一定是实的。 解:因为即y(t)=※又因为是实信号故和一定是实的。 4.构造一个向量Y2等于Y的幅值,并将Y2的逆傅立叶变换存入向量y2中,用sound放出这个向量。 load splat y=y(1:8192); N=8192; fs=8192; Y=fftshift(fft(y)); sound(y,fs); w=(-pi:2*pi/N:pi-pi/N)*fs; Y2=abs(Y); y2=ifft(fftshift(Y2)); sound(y2,fs); plot(w,y2); 5.构造一个向量Y3,它有与Y相同的相位,但是幅值对每个频率都等于1。并将Y3的逆傅立叶变换存入向量y3中,用sound放出这个向量。 load splat y=y(1:8192); N=8192; fs=8192; Y=fftshift(fft(y)); sound(y,fs); w=(-pi:2*pi/N:pi-pi/N)*fs; Y3=Y./abs(Y); y3=ifft(fftshift(Y3)); sound(y3,fs); plot(w,y3); 6.根据刚才听到的这两个信号,代表一个声音信号你认为傅立叶变换的那个部分是最关键的:幅值或相位? 答:相位是最关键的。 7.用向量y创建一个向量y4,它包含有本该以8192Hz从采样所得到的样本。 load splat y=y(1:8192); N=8192; fs=8192; sound(y,fs); y4=y(1:2:8192); sound(y4,fs); w=(-pi:2*pi/N:pi-pi/N)*fs; w4=(-pi:2*pi/(N/2):pi-pi/(N/2))*(fs/2); subplot(211) plot(w,y); title('y'); subplot(212) plot(w4,y4); title('y4'); 8.用y4=sound(y4,fs)放出y4。利用比较y4的傅立叶变换与y的傅立叶变换,能说明在高音上的变化吗?信号压缩是如何影响它的傅立叶变换的? load splat y=y(1:8192); N=8192; fs=8192; sound(y,fs); y4=y(1:2:8192); sound(y4,fs); Y=fftshift(fft(y)); Y4=fftshift(fft(y4)); w=(-pi:2*pi/N:pi-pi/N)*fs; w4=(-pi:2*pi/(N/2):pi-pi/(N/2))*(fs/2); subplot(211) plot(w,Y); title('Y'); subplot(212) plot(w4,Y4); title('Y4'); 信号在时域中压缩(a>1)等效于在频域中扩展。 9.创建向量x,,它由下式给出 注意,x是一个长度为2*N的向量。 load splat y=y(1:8192); N=8192; fs=8192; sound(y,fs); j=1; for i=1:2:(2*8192) x(i)=0; x(i+1)=y(j); j=j+1; end 10.利用函数filter完成在x上的线性内插。这里要用到的线性内插器的单位冲激响应是h=[1 2 1]/2。 load splat y=y(1:8192); N=8192; fs=8192; sound(y,fs); j=1; for i=1:2:(2*8192) x(i)=0; x(i+1)=y(j); j=j+1; end h=[1 2 1]; a=2; y=filter(h,a,x); 11.用sound(y5,fs)放出y5。用比较y5和y的傅立叶变换,能解释在音调上的变化吗? load splat y=y(1:8192); N=8192; fs=8192; sound(y,fs); j=1; w=(-pi:2*pi/N:pi-pi/N)*fs; w5=(-pi:2*pi/(N*2):pi-pi/(N*2))*(fs*2); for i=1:2:(2*8192) y5(i)=0; y5(i+1)=y(j); j=j+1; end sound(x,fs); Y=fftshift(fft(y)); Y5=fftshift(fft(y5)); subplot(211) plot(w,Y); subplot(212) plot(w5,Y5) §4.3连续时间傅立叶变换的符号计算 1.定义符号表达式x1和x2代表下面连续时间信号: 需要用函数Heaviside来表示单位阶跃函数。 x1=sym('Heaviside(t)*0.5*exp(-2*t)'); x2=sym('Heaviside(t)*exp(-4*t)'); 2. 对于1中所定义的和,用解析方法计算它们的CTFT在的值,即(不应该先求来作这道题)CTFT在的值是怎样与时域信号关联的? clc; syms t x1=sym('Heaviside(t)*0.5*exp(-2*t)'); x2=sym('Heaviside(t)*exp(-4*t)'); fx1=simple(int(x1, t, -inf, inf)); fx2=simple(int(x2, t, -inf, inf)); 3.1所定义的信号中,哪一个在时域衰减得更快?根据这一点,你能预期在频域哪一个衰减得更快? x1=sym('Heaviside(t)*0.5*exp(-2*t)'); x2=sym('Heaviside(t)*exp(-4*t)'); subplot(211); ezplot(x1,-1:5); axis([-1,5,-0.1,0.8]) subplot(212); ezplot(x2,-1:5); axis([-1,5,-0.1,1.2]) X2在时域衰减得更快,X1在频域衰减得更快. 4. 用函数fourier计算和得CTFT。定义x1和x2是由fourier产生的符号表达式。用ezplot产生和的幅值图。这些图能对2和3中的答案进行确认吗? syms t w; x1=sym('Heaviside(t)*0.5*exp(-2*t)'); x2=sym('Heaviside(t)*exp(-4*t)'); fw1=fourier(x1,t,w); fw2=fourier(x2,t,w); ffw1=maple('convert',fw1,'piecewise'); ffw2=maple('convert',fw2,'piecewise'); ffp1=abs(ffw1); ffp2=abs(ffw2); subplot(211); ezplot(ffp1,-100:100); axis([-20,20,-0.1,0.3]); title('fourier(x1)'); subplot(212); ezplot(ffp2,-100:100); axis([-20,20,-0.1,0.3]); title('fourier(x2)'); 5.定义符号表达式y1代表下面连续时间信号: 它可以作为两个Heaviside函数之差。 y1=sym('Heaviside(t+2)-Heaviside(t-2)'); 6.用解析方法求的CTFT,。 syms t w; y=sym('Heaviside(t+2)-Heaviside(t-2)'); F=int(y*exp(-1i*w*t),t, -inf, inf); ezplot(F,-4*pi:4*pi); axis([-4*pi 4*pi 0 5]) title('fourier(y1)'); 7.定义符号表达式y2表示信号。你能像对y1那样用两个Heaviside函数之差来完成,或者恰当地对y1应用subs。 syms t w; y1=sym('Heaviside(t+2)-Heaviside(t-2)'); y2=subs(y1,'t-2','t'); fw=fourier(y2,t,w); ffw=maple('convert',fw,'piecewise'); ffp=abs(ffw); ezplot(ffp,-4*pi:4*pi); axis([-4*pi 4*pi 0 2.5]) title('fourier(y2)'); 8.利用fourier求y1和y2的CTFT,并将它们存入Y1和Y2中。倘若Y1不是你所期望得到的表达式,那么试试在所得表达式上用simple以便得出更为熟悉的形式。 syms t w; y1=sym('Heaviside(t+2)-Heaviside(t-2)'); y2=subs(y1,'t-2','t'); Y1=fourier(y1,t,w); Y2=fourier(y2,t,w); 9.用ezplot产生和的幅值图。比较这两张图情况如何?由这两个信号在时域之间的关系能预测到这个结果吗? syms t w; y1=sym('Heaviside(t+2)-Heaviside(t-2)'); y2=subs(y1,'t-2','t'); Y1=fourier(y1,t,w); fY1=maple('convert',Y1,'piecewise'); fpY1=abs(fY1); Y2=fourier(y2,t,w); fY2=maple('convert',Y2,'piecewise'); fpY2=abs(fY2); hold on ezplot(fpY1,-4*pi:4*pi); ezplot(fpY2,-4*pi:4*pi); axis([-4*pi 4*pi 0 4.5]) 10. 下面几部分的CTFT。将写成和两个信号之和。将选为因果信号,选为反因果信号,即。用解析方法计算的CTFT,。 syms t w; v1=sym('exp(-2*t)*Heaviside(t)'); v2=sym('exp(2*t)*Heaviside(-t)'); v=v1+v2; vf=int(v*exp(-i*w*t),t, -inf, inf); ezplot(vf,-10:10); 11. 用fourier求v的CTFT的符号表达式V。这个表达式等效于在10中用解析法求得的表达式吗? syms t w; v1=sym('exp(-2*t)*Heaviside(t)'); v2=sym('exp(2*t)*Heaviside(-t)'); v=v1+v2; vf=fourier(v,t,w); vw=maple('convert',vf,'piecewise'); vp=abs(vw); ezplot(vp,-10:10); 12. 定义f是信号的符号表达式,用fourier定义F是f的CTFT的符号表达式。注意,F中含有一个未被求值的积分。这个未被求值的积分对所有值都收敛吗? syms t a w; f=sym('exp(-a*t)*Heaviside(t)'); F=fourier(f,t,w); 当a=0时此未被求值的积分不收敛。 13.用subs设置F1中的值等于5,然后在这个置换的结果应用simple。所得结果是所期望的吗? syms t a w; f=sym('exp(-a*t)*Heaviside(t)'); F=fourier(f,t,w); F1=simple(subs(F,5,'a'));
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 小学其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服