实验三 连续时间信号的频域分析
实验人:Mr.yan
1 实验目的
(1)掌握连续时间信号傅里叶变换的实现方法; (2)了解傅里叶变换的特点及其应用;
(3)掌握傅里叶变换的数值计算方法以及绘制信号频谱图的方法;
2 实验原理
(1)傅里叶级数的三角形式 (2)傅里叶级数的指数形式 (3)非周期信号的傅里叶变换
3 涉及的Matlab函数
(1)fourier函数:实现信号的傅里叶变换。
调用格式:F= fourier(f) 是符号函数f的傅里叶变换,默认返回函数F是关于w的函数。 说明:该函数假定两个序列都从零开始。
(2)quad8函数:用来计算非周期信号的频谱。 调用格式:
y=quad8(‘func’,a,b)
y=quad8(‘func’,a,b,TOL,TRACE,p1,p2,…)
其中:func是一个字符串,表示被积函数的.m文件名;a,b分别表示定积分的下限和上限;TOL表示指定允许的相对或绝对积分误差,非零的TRACE表示以被积函数的点绘图形式来跟踪该quad8函数生成的返回值,如果TOL和TRACE均赋以空矩阵,则两者均自动使用默认值;‘p1,p2,’表示被积函数所需要的多个额外输入参数。 (3)quad1函数:计算非周期信号的频谱。 调用格式:
y=quad1(‘func’,a,b)
y=quad1(‘func’,a,b,TOL,TRACE,p1,p2,…) 其中func是一个字符串,表示被积函数
4 实验内容与方法
(1)周期信号的傅里叶级数的Matlab实现 ①利用Matlab画出周期三角波信号的频谱。
f(t)1t-3-2-10123-1
源程序如下:
N = 10;
n1 = -N:-1;c1 = -4*j*sin(n1*pi/2)/pi^2./n1.^2; c0=0;
n2=1:N;c2 = -4*j*sin(n2*pi/2)/pi^2./n1.^2; cn = [c1 c0 c2];n=-N:N;
subplot 211;stem(n,abs(cn));ylabel('cn的幅度'); subplot 212;stem(n,angle(cn));ylabel('cn的相位'); xlabel('\\omega/\\omega_0')
程序运行结果如下图1所示
0.50.4cn的幅度0.30.20.10-1021-8-6-4-20246810cn的相位0-1-2-10-8-6-4-20?/?0246810
图1
②周期矩形脉冲幅度为1,脉冲宽度为tao=1,周期T=5*tao,试求出该信号的三角形式的傅里叶系数,并绘出各次谐波叠加的傅里叶综合波形图。 源程序如下:
%周期矩形脉冲函数的合成
function [A_sym,B_sym] = CTFSchsym syms t n k x;
T = 5;tao = 0.2*T;a = 0.5; if nargin<4;Nf = 6;end if nargin<5;Nn = 32;end
x = time_fun_x(t); A0 = 2*int(x,t,-a,T-a)/T;
As = int(2*x*cos(2*pi*n*t/T)/T,t,-a,T-a); Bs = int(2*x*sin(2*pi*n*t/T)/T,t,-a,T-a); A_sym(1) = double(vpa(A0,Nn)); for k=1:Nf
A_sym(k+1) = double(vpa(subs(As,n,k),Nn)); B_sym(k+1) = double(vpa(subs(Bs,n,k),Nn)); end
if nargout ==0 c=A_sym;disp(c) d=B_sym;disp(d)
t = -8*a:0.01:T-a;
f1 = 0.2/2+0.1871.*cos(2*pi*1*t/5)+0.*sin(2*pi*1*t/5); f2 = 0.1514.*cos(2*pi*2*t/5)+0.*sin(2*pi*2*t/5); f3 = 0.1009.*cos(2*pi*3*t/5)+0.*sin(2*pi*3*t/5); f4 = 0.0468.*cos(2*pi*4*t/5)+0.*sin(2*pi*4*t/5); f5 = -0.0312.*cos(2*pi*6*t/5)+0.*sin(2*pi*6*t/5); f6 = f1+f2; f7 = f6+f3; f8 = f7+f4+f5; subplot 221 plot(t,f1),hold on y = time_fun_e(t); plot(t,y,'r:')
title('周期矩形波的形成——基波') axis([-4,4.5,-0.1,1.1]) subplot 222 plot(t,f6),hold on y = time_fun_e(t); plot(t,y,'r:')
title('周期矩形波的形成——基波+二次谐波') axis([-4,4.5,-0.1,1.1]) subplot 223 plot(t,f7),hold on y = time_fun_e(t); plot(t,y,'r:')
title('基波+二次谐波+三次谐波') axis([-4,4.5,-0.1,1.1]) subplot 224 plot(t,f8),hold on y = time_fun_e(t);
plot(t,y,'r:')
title('基波+二次谐波+三次谐波+四次谐波+六次谐波') axis([-4,4.5,-0.1,1.1]) end
%--------------------------------------------------------------------
function x = time_fun_x(t) h = 1;
x1 = sym('Heaviside(t+0.5)')*h; x = x1-sym('Heaviside(t-0.5)')*h;
%------------------------------------------------------------
function y = time_fun_e(t)
a = 0.5;T = 5;h = 1;tao = 0.2*T;t= -8*a:0.01:T-a; e1 = 1/2+1/2*sign(t+tao/2); e2 = 1/2+1/2*sign(t-tao/2); y = h.*(e1-e2);
程序运行结果如图2所示
周期矩形波的形成——基波1周期矩形波的形成——基波+二次谐波10.50.50-4-20240-4-2024基波+二次谐波+三次谐波基波+二次谐波+三次谐波+四次谐波+六次谐波110.50.50-4-20240-4-2024
图2
三角级数展开系数为: ans =
0.4000 0.3742 0.3027 0.2018 0.0935 0.0000 -0.0624 (2)周期信号频谱分析的Matlab实现
①已知周期方波脉冲信号,其幅度为1,脉冲宽度占空比为1/2,周期为T=5。用Matlab编程绘出该周期信号的频谱。 源程序如下:
function [A_sym,B_sym] = CTFSdbfb

