内有两个断点,用有限项级数合成这个信号时,吉伯斯现象的特征非常明显,便于观察。
例3-2:用有限项级数合成例3-1所给的周期方波信号,并绘制出原始周期信号、合成的周期信号、信号的幅度谱和相位谱。
Matlab程序 t_1 = -8:0.01:8;
f_1 = Fn * exp(j*n'*w1*t_1); figure; plot(t_1,f_1) xlim([-T1/2, T1/2]) title('合成的f(t)')
在用这个程序观察吉伯斯现象时,可以反复执行该程序,每次执行时,输入不同之N值,比较所的图形的区别,由此可以观察到吉伯斯现象的特征。
3.3.3 非周期信号的傅里叶变换
MATLAB进行傅里叶变换有两种方法,一种利用符号运算的方法计算,另一种是数值计算,本实验要求采用数值计算的方法来进行傅里叶变换的计算。严
格来说,用数值计算的方法计算连续时间信号的傅里叶变换需要有个限定条件,即信号是时限信号(Time limited signal),也就是当时间|t|大于某个给定时间时其值衰减为零或接近于零,这个条件与前面提到的为什么不能用无限多个谐波分量来合成周期信号的道理是一样的。计算机只能处理有限大小和有限数量的数。
采用数值计算算法的理论依据是: F(?)?????ft(e)?j?tdt?dt?0?j?tnli?mftne()dt n????若信号为时限信号,当时间间隔T取得足够小时,上式可演变为:
F(?)?n??N?Nf(tn)e?j?tndtf(t?N?1)?j?t?Nf(tN)???e?
e?j?t?N?1e?j?tN???dt??f(t?N)上式用MATLAB表示为: F_w = f * exp(-j*t’*w)*dt
其中F_w为信号f(t)的傅里叶变换,w为频率,dt为时间步长。 例3-3:求单边指数信号f(t)=e-atu(t)的频谱,其中a=2。 MATLAB程序: dt = 0.01; t = 0:dt:10; a = 2; f = exp(-a*t); dw = 0.1
w = -4*pi:dw:4*pi;
F_w = f * exp(-j*t'*w)*dt; %傅里叶变换 Mod_F = abs(F_w); %计算幅度谱 Phase_F = angle(F_w); %计算相位谱
为了使计算结果能够直观地表现出来,还需要用绘图函数将时间信号f(t),信号的幅度谱|F(?)|和相位谱?F(?)分别以图形的方式表现出来,并对图形加以适当的标注。
figure; subplot(2,2,1:2)
plot(t,f) title('f(t)') subplot(2,2,3) plot(w,Mod_F) title('|F(w)|') axis tight subplot(2,2,4) plot(w,Phase_F) title('\\phi(w)') axis tight
3.3.4 信号的幅度调制频谱分析
例3-4 设f(t)=u(t+1)-u(t-1),y(t)=f(t)cos(10πt),试用 MATLAB画出f(t)、y(t)的时域波形及其频谱,并观察傅立叶变换的频移特性。
用MATLAB 实现本例的参考程序如下: %时限余弦信号的频谱分析
clear dt = 0.001; t_start = -1.5; t_end = 1.5;
t = t_start : dt : t_end; f_t = u(t+1)-u(t-1); figure subplot(221) plot(t,f_t); xlabel('t (s)'); ylabel('f(t)');
title('被调信号与载波信号'); axis([t_start t_end -1.5 1.5]) grid on
% 被调信号傅里叶变换的定义 w_start = -10*2*pi; w_end = 10*2*pi; dw = 0.01*2*pi; w = w_start: dw : w_end; F = f_t * exp(-1i*t'* w) * dt; subplot(222) plot(w, real(F))
xlabel('频率\\omega (rad/s)'); ylabel('F(\\omega)'); title('被调信号的频谱') grid on
xlim([w_start, w_end])
% 已调信号 w0 = 30;
y_t = f_t.*cos(w0*t); % 绘制载波信号 subplot(221) hold all
plot(t, cos(w0*t)); % 绘制已调信号 subplot(223) plot(t, y_t) xlabel('t(s)'); ylabel('y(t)');
axis([t_start t_end -1.5 1.5]) title('已调信号'); grid on
% 已调信号频谱密度函数分析 Y = y_t * exp(-1i*t'* w) * dt; subplot(224) plot(w, real(Y))
xlabel('频率\\omega (rad/s)'); ylabel('F(\\omega)'); title('被调信号的频谱') grid on
xlim([w_start, w_end]) 程序运行结果为