%x(t)=A(0<=t<T0/2);x(t)=-A (T0/2<=t<T0) clear all;%清除所有变量 clc;%清屏 n=306;% n为叠加的谐波数目 T0=2;A=2;%TO为方波的周期;A 为方波的幅值; NofT0=2;% 所画的时域波形的周期数 %周期信号时域描述 tn_i=1; for tn=0:0.01:NofT0*T0 if(rem(tn,T0)<=T0/2) y_t(tn_i)=A;%信号前半周期的表达式 else y_t(tn_i)=-A;%信号后半周期的表达式 end t_t(tn_i)=tn; tn_i=tn_i+1; end %周期信号的频域描述 t=0:0.01:NofT0*T0;%时域波形的长度 x=0;% 合成的信号值,初始化为0 pi=3.1415926; w0=2*pi/T0;%基波的频率 for i=1:n fw(i)=(2*i-1)*w0;%第i次谐波的频率 a(i)=(4*A/(pi*(2*i-1)));%第i次谐波的幅值 fai(i)=0;%第i次谐波的相位 y(i,:)=a(i)*sin(fw(i)*t);%第i次谐波的值 x=x+y(i,:);%0-i次谐波之和 end %subplot将画图区分成2行2列的四个小画图区 subplot(2,2,1);%选择第1个画图区 plot(t_t,[y_t;x]);%画信号的时域及合成后的图形 subplot(2,2,2);%选择第2个画图区 plot(t,[x;y]);%画0-n次谐波及合成后的图 subplot(2,2,3);%选择第3个画图区 stem(fw,a);%画0-n次谐波的幅值 频率图 subplot(2,2,4);%选择第4个画图区 stem(fw,fai);%画0-n次谐波的相位 频率图
时间: 2024-04-08 13:31:54 浏览: 112
这段代码是一个MATLAB程序,用于生成一个周期方波的时域和频域描述。程序中定义了方波的周期T0和幅值A,以及叠加的谐波数目n。通过循环计算得到每个谐波的频率、幅值和相位,并将它们叠加得到合成信号。最后使用subplot函数将时域波形、合成后的波形、谐波的幅值频率图和相位频率图分别绘制在四个小画图区中。
阅读全文