资源预览内容
第1页 / 共10页
第2页 / 共10页
第3页 / 共10页
第4页 / 共10页
第5页 / 共10页
第6页 / 共10页
第7页 / 共10页
第8页 / 共10页
第9页 / 共10页
第10页 / 共10页
亲,该文档总共10页全部预览完了,如果喜欢就下载吧!
资源描述
已知周期半波余弦信号和周期全波余弦信号的波形如图所示,用MATLAB编程求出它的傅立叶系数,绘出其直流、一次、二次、三次、四次及五次谐波叠加后的波形图,并将其与原周期信号的时域波形进行比较,观察周期信号的分解与合成过程。% dm09101% 观察周期方波信号的分解与合成% m:傅里叶级数展开的项数display(Please input the value of m (傅里叶级数展开的项数); % 在命令窗口显示提示信息m = input(m = ); % 键盘输入傅里叶级数展开的项数t = -2*pi:0.01:2*pi; % 时域波形的时间范围-22,采样间隔0.01n = round(length(t)/4); % 根据周期方波信号的周期,计算1/2周期的数据点数f = cos(t).*(t(-pi/2)&(t3*pi/2); %构造周期方波信号y = zeros(m+1,max(size(t);y(m+1,:) = f; figure(1);plot(t/pi,y(m+1,:),LineWidth,2); %绘制方波信号grid; %在图形中加入栅格axis(-2 2 -0.5 1.5); %指定图形显示的横坐标范围和纵坐标范围title(周期信号); %给显示的图形加上标题xlabel(单位pi,Fontsize, 8); %显示横坐标单位x = zeros(size(t);kk = 直流分量;pause; k=1; x = x+1/pi; y(1,:) = x; %计算各次谐波叠加和 plot(t/pi,y(m+1,:),LineWidth,2); hold on; plot(t/pi,y(1,:),r,LineWidth,3); %绘制谐波叠加信号 hold off; grid; axis(-2 2 -0.5 1.5); title(strcat(kk); xlabel(单位pi,Fontsize, 8); kk = strcat(kk,和第,num2str(k);pause; k=k+1; x = x+0.5.*cos(t); y(2,:) = x; %计算各次谐波叠加和 plot(t/pi,y(m+1,:),LineWidth,2); hold on; plot(t/pi,y(2,:),r,LineWidth,3); %绘制谐波叠加信号 hold off; grid; axis(-2 2 -0.5 1.5); title(strcat(kk,次谐波叠加); xlabel(单位pi,Fontsize, 8); kk = strcat(kk,、,num2str(k);pause; x = x+2/(3.*pi).*cos(2.*t); y(3,:) = x; %计算各次谐波叠加和 plot(t/pi,y(m+1,:),LineWidth,2); hold on; plot(t/pi,y(3,:),r,LineWidth,3); %绘制谐波叠加信号 hold off; grid; axis(-2 2 -0.5 1.5); title(strcat(kk,次谐波叠加); xlabel(单位pi,Fontsize, 8); kk = strcat(kk,、,num2str(k+2);pause; x = x-2/(15.*pi).*cos(4.*t); y(4,:) = x; %计算各次谐波叠加和 plot(t/pi,y(m+1,:),LineWidth,2); hold on; plot(t/pi,y(4,:),r,LineWidth,3); %绘制谐波叠加信号 hold off; grid; axis(-2 2 -0.5 1.5); title(strcat(kk,次谐波叠加); xlabel(单位pi,Fontsize, 8); pause;plot(t/pi,y(1:m+1,:),LineWidth,3);grid;axis(-2 2 -0.5 1.5);title(各次谐波叠加波形);xlabel(单位pi,Fontsize, 8);% End% dm09201% 绘制周期信号的频谱特性function CTFS_RP% 以周期矩形脉冲信号为例,计算其频谱特性% 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 = );Nf = input(Nf = );syms t n k x ; %定义符号变量Nn = 32; %输出数据的位数为32位an = zeros(Nf+1,1); %分配an系数数组bn = zeros(Nf+1,1); %分配bn系数数组x=(heaviside(t+tao/2)-heaviside(t-tao/2)*cos(pi/tao)*t); %构造一个周期的脉冲信号u(t+tao/2)-u(t-tao/2)A0 =2*int(x,t,-T/2,T/2)/T; %求出直流项a0As=2*int(x*cos(2*pi*n*t/T),t,-T/2,T/2)/T; %求出余弦项系数anBs=2*int(x*sin(2*pi*n*t/T),t,-T/2,T/2)/T; %求出正弦项系数bnan(1) = double(vpa(A0,Nn); %获取参数组A0所对应的ASCII码数值数组for k=1:Nfan(k+1)=double(vpa(subs(As,n,k),Nn); %获取参数组As所对应的ASCII码数值数组bn(k+1)=double(vpa(subs(Bs,n,k),Nn); %获取参数组Bs所对应的ASCII码数值数组end cn = sqrt(an.*an+bn.*bn); %计算幅度谱t = -T*2:0.001:T*2;xx =(heaviside(t+tao/2)-heaviside(t-tao/2).*cos(pi/tao).*t); for kk=1:2xx=xx+(heaviside(t+tao/2+kk*T)-heaviside(t-tao/2+kk*T).*cos(pi/tao).*(t+kk*T)+(heaviside(t+tao/2-kk*T)-heaviside(t-tao/2-kk*T).*cos(pi/tao).*(t-kk*T); %用pulstran函数生成矩形脉冲信号endsubplot(211); %将显示窗口分为3个子窗口,并指向第1个子窗口clear subplot;plot(t,xx); %绘制周期矩形脉冲信号axis(-T*2 T*2 0 1.1); %指定坐标系范围%title(周期矩形脉冲信号,Fontsize,8); %标注标题s1 = strcat(周期矩形脉冲信号 T=,num2str(T), Tao=,num2str(tao),t); xlabel(s1,Fontsize,8); %x轴标签subplot(212); %指向第2个子窗口k = 0:Nf;stem(k,cn); %绘制幅度谱hold on;plot(k,cn); %绘制幅度谱包络线xlabel(幅度谱 omega,Fontsize,8);
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号