logo资料库

周期信号的傅里叶技术分析及matlab实现之实验.doc

第1页 / 共5页
第2页 / 共5页
第3页 / 共5页
第4页 / 共5页
第5页 / 共5页
资料共5页,全文预览结束
信号与系统实验第九章 董玲 2011级通信工程 20111060126 9.1 已知周期半波余弦信号和周期全波余弦信号的波形如图所示,用MATLAB编 程求出它们的傅里叶系数,绘出其直流、一次、二次、三次、四次、及五次谐波 叠加后的波形图,并将其与周期信号的时域波形进行比较,观察周期信号的分解 与合成过程。 解: display('Please input the value of m (傅里叶级数展开的项数)'); m = input('m = '); t = -3*pi:0.01:3*pi; n = round(length(t)/4); f=cos(t).*(heaviside(t+2.5*pi)-heaviside(t+1.5*pi)+heaviside(t+0.5*pi)-heaviside(t-0. 5*pi)+heaviside(t-1.5*pi)-heaviside(t-2.5*pi)); y = zeros(m+1,max(size(t))); y(m+1,:) = f'; figure(1); plot(t/pi,y(m+1,:)); grid; axis([-3 3 -1 1.5]); title('半波余弦信号'); xlabel('单位 pi','Fontsize', 8); x = zeros(size(t)); kk = '2'; y(1,:)=1/pi; plot(t/pi,y(m+1,:)); hold on; plot(t/pi,y(1,:)); axis([-3 3 -1 1.5]); title('直流分量和半波余弦信号'); xlabel('单位 pi','Fontsize', 8); hold off; pause y(2,:)=1/pi+(1/2)*cos(t); x=1/pi+(1/2)*cos(t); plot(t/pi,y(m+1,:)); hold on; plot(t/pi,y(2,:)); axis([-3 3 -1 1.5]); title('第 1 次谐波叠加'); xlabel('单位 pi','Fontsize', 8); hold off;
%一次谐波 for k=2:m pause; x = x+(-2*cos(pi*k/2)/pi/(k^2-1))*cos(k*t); y((k+1),:) = x; plot(t/pi,y(m+1,:)); hold on; plot(t/pi,y((k+1),:)); hold off; grid; axis([-3 3 -1 1.5]); title(strcat('第 1、',kk,'次谐波叠加')); xlabel('单位 pi','Fontsize', 8); kk = strcat(kk,'、',num2str(k+1)); end pause; plot(t/pi,y(1:m+1,:)); grid; axis([-3 3 -1 1.5]); title('谐波叠加'); xlabel('单位 pi','Fontsize', 8);
9.2 试用 MATLAB 编程绘出 9.1 中所示周期信号的幅度频谱,要求交互式信号 输入信号周期,观察分析信号周期与频谱的关系。当周期 T 趋于无穷大时,频 谱谱线将发生什么样的变化? 解: % dm09201 % 绘制周期信号的频谱特性 % 以周期矩形脉冲信号为例,计算其频谱特性 % Nf:级数分解的谐波次数,由键盘输入 % Nn:输出数据的准确位数 % a0:直流项系数 % an:第 1,2,3,...次谐波余弦项展开系数 % bn:第 1,2,3,...次谐波正弦项展开系数 % tao:周期矩形脉冲信号脉宽,由键盘输入 % T:周期矩形脉冲信号周期,由键盘输入 display('Please input the value of T, tao and Nf'); %命令窗口提示用户输入参数 T = input('T = '); tao = input('tao = ');
%定义符号变量 %输出数据的位数 %分配 an 系数数组 %分配 bn 系数数组 %求出直流项 %求出余弦项 %求出正弦项 %获取参数组 A0 所对 %获取参数组 As 所对应 %获取参数组 Bs 所对应 %构造 u(t+tao/2) %构造 u(t-tao/2) Nf = input('Nf = '); syms t n k x Nn = 32; 为 32 位 an = zeros(Nf+1,1); bn = zeros(Nf+1,1); s1 = strcat('Heaviside(t+',num2str(tao*pi/2),')'); s2 = strcat('Heaviside(t-',num2str(tao*pi/2),')'); x = sym(cos(t*tao).*( sym(s1) - sym(s2))); A0 =int(x,t,-pi/(2*tao),pi/(2*tao))/T; a0 As=2*int(x*cos(2*pi*n*t/T),t,-pi/(2*tao),pi/(2*tao))/T; 系数 an Bs=2*int(x*sin(2*pi*n*t/T),t,-pi/(2*tao),pi/(2*tao))/T; 系数 bn an(1) = double(vpa(A0,Nn)); 应的 ASCII 码数值数组 for k=1:Nf an(k+1)=double(vpa(subs(As,n,k),Nn)); 的 ASCII 码数值数组 bn(k+1)=double(vpa(subs(Bs,n,k),Nn)); 的 ASCII 码数值数组 end cn = sqrt(an.*an+bn.*bn); t = -T*5:0.001:T*5; d = -T*5:T:T*5; xx = (sqrt(cos(t*tao).* cos(t*tao))+ cos(t*tao))/2; subplot(211); 子窗口,并指向第 1 个子窗口 plot(t,xx); 号 axis([-T*5 T*5 0 1.1]); %title('周期矩形脉冲信号','Fontsize',8); s1 = strcat('周期矩形脉冲信号 T=',num2str(T),' Tao=',num2str(tao),'t'); xlabel(s1,'Fontsize',8); subplot(212); k = 0:Nf; stem(k,cn); hold on; plot(k,cn); xlabel('幅度谱 \omega','Fontsize',8); % End 改变 T 的比对结果: %计算幅度谱 %x 轴标签 %将显示窗口分为 2 个 %绘制周期矩形脉冲信 %指定坐标系范围 %标注标题 %指向第 2 个子窗口 %绘制幅度谱 %绘制幅度谱包络线
1 0.8 0.6 0.4 0.2 0 0.4 0.3 0.2 0.1 0 0 改变 tao 的结果比对: -40 -30 -20 0 -10 20 周期矩形脉冲信号 T=9.4248 Tao=1t 10 30 40 10 20 30 幅度谱  40 50 60
分享到:
收藏