目录
【实验目的】
【实验设备】
【实验内容】
1.参考例5-1,实现教材p125,例3-4中傅里叶级数表达式(p126第二行)。分别采用前4、40、400项,画出周期矩形脉冲信号的近似图。
2.参考例5-2,画出上题频谱图。
3. 编程实现以下功能:将以下信号分解成余弦形式的傅立叶级数,再由信号f的直流分量C0开始,依次相加其基波分量、二次谐波、三次谐波等直至N次谐波(N不超过信号f的采样点数量的一半),观察随着谐波次数的增加,前N次谐波之和与原信号f的相似关系,讨论傅立叶系数的物理意义。
4.求以下信号的傅里叶变换F(w),并画出F(w)的幅频、相频图。
5.求以下信号的傅里叶反变换,并画出时域图。
【实验感悟】
【实验目的】
1.学会运用MATLAB分析傅里叶级数展开,深入理解傅里叶级数的物理意义。
2.学会运用MATLAB分析周期信号的频谱特性。
3.学会运用MATLAB求连续非周期信号的傅里叶变换。
4.学会运用MATLAB绘制连续非周期信号的频谱图。
【实验设备】
- 计算机
- MATLAB软件
【实验内容】
1.参考例5-1,实现教材p125,例3-4中傅里叶级数表达式(p126第二行)。分别采用前4、40、400项,画出周期矩形脉冲信号的近似图。
代码语言:javascript复制t=-1:0.001:1;%设置起点、步长和终点
ft=0.5*square(2*pi*(t 0.25),50) 0.5;%函数表达式
subplot(221);%绘制子图命令
plot(t,ft);%绘图命令
grid on;
axis([-1,1,-2,2]);%设置坐标轴
title('周期方波信号');
n_max=[4 40 400];
N=length(n_max);
for k=1:N%用循环实现傅里叶级数求和
n=1:2:n_max(k);
b=2./(pi*n);
x=0.5 sin(n*pi/2).*b*cos(2*pi*n'*t);
subplot(2,2,k 1);
plot(t,x);
grid on;
axis([-1,1,-1.5,1.5]);
title(['最大谐波次数=',num2str(n_max(k))]);
end
2.参考例5-2,画出上题频谱图。
代码语言:javascript复制n=-30:30;
tau=0.5;
T=1;
w=2*pi;
x=n*tau/T;
fn=tau/T*sinc(x);
stem(n*w,fn);
grid on;
title('tau=0.5,T=1')
3. 编程实现以下功能:将以下信号分解成余弦形式的傅立叶级数,再由信号f的直流分量C0开始,依次相加其基波分量、二次谐波、三次谐波等直至N次谐波(N不超过信号f的采样点数量的一半),观察随着谐波次数的增加,前N次谐波之和与原信号f的相似关系,讨论傅立叶系数的物理意义。
代码语言:javascript复制Um=1;
T=0.02;
w=2*pi/T;
num_points=200;
t=linspace(-T/2,T/2,num_points);
y=Um*abs(sin(2*w*t)).*(t>0);%分解的波形
subplot(311);
plot(t,y);
grid on;
n=randn(38,1);
n=[0;n;0];
n=interp1([0:39],n,linspace(0,39,num_points),'linear');
y=y 0.4*n;
subplot(312)
plot(t,y);
grid on;
axis([-T/2,T/2,-1,2]);
c=50*trapz(t,y); %利用积分函数
i=sqrt(-1);
for k=1:40
y1=y.*cos(k*w*t);
y2=y.*sin(k*w*t);
an=100*trapz(t,y1);
bn=100*trapz(t,y2);
p=-atan(bn/an);
cn=sqrt(an^2 bn^2);
c=c an*cos(k*w*t) bn*sin(k*w*t);
subplot(313)
plot(t,c);
grid on;
axis([-T/2,T/2,-1,2]);
title('叠加后')
pause(0.1)
end
4.求以下信号的傅里叶变换F(w),并画出F(w)的幅频、相频图。
代码语言:javascript复制syms t ft;
ft=exp(-abs(t)) 3*dirac(t);
Fw=fourier(ft);%Fourier函数实现傅里叶变换
subplot(211);grid on;
fplot(abs(Fw));%利用绝对值实现求幅频
title('幅频特征图');
phase=atan(imag(Fw)/real(Fw));%反正切函数实现求相频
subplot(212);grid on;
fplot(phase);
title('相频特征图')
5.求以下信号的傅里叶反变换,并画出时域图。
代码语言:javascript复制syms t w;
Fw=3/(3*1i*w 2-w^2);%定义函数
ft=ifourier(Fw,t);%利用ifourier函数实现傅里叶逆变换
fplot(ft);grid on;
title('函数时域图')
【实验感悟】
通过本次实验,我学会了MATLAB中对于傅里叶级数展开的求解方法, 通过循环实现傅里叶级数求和,通过多次滤波实现周期矩形脉冲信号的近似图趋于方波图。也学会了画出信号的频谱图,掌握了函数linspace命令,linspace是Matlab中的均分计算指令,用于产生x1,x2之间的N点行线性的矢量,了解了基于梯形法则的数值积分公式trapz,掌握了通过fourier命令求解函数的傅里叶变换,其中对于求解傅里叶变换后的函数的幅频和相频的方法让我印象深刻,通过abs绝对值函数求幅频,通过atan求解反正切,imag、real分别求解虚部和实部。还有通过ifourier命令求解函数的傅里叶反变换。
通过实验也加深了对于傅里叶变换的物理意义的理解:任何连续测量的时序或信号,都可以表示为不同频率的正弦波信号的无限叠加。傅里叶变换利用直接测量到的原始信号,以累加方式来计算该信号中不同正弦波信号的频率、振幅和相位。反傅里叶变换算法也是一种累加处理,这样就可以将单独改变的正弦波信号转换成一个信号。因此,可以说,傅里叶变换将原来难以处理的时域信号转换成了易于分析的频域信号(信号的频谱),可以利用一些工具对这些频域信号进行处理、加工。最后还可以利用傅里叶反变换将这些频域信号转换成时域信号。在图像学中,从物理效果看,傅里叶变换是将图像从空间域转换到频率域,其逆变换是将图像从频率域转换到空间域。换句话说,傅里叶变换的物理意义是将图像的灰度分布函数变换为图像的频率分布函数,傅里叶逆变换是将图像的频率分布函数变换为灰度分布函数。