实验四 连续时间信号与系统的频域分析的MATLAB实现
实验四 连续时间信号与系统的频域分析的MATLAB实现
[]
掌握周期信号的频谱—— Fourier 级数的分析方法及其物理意义。
深入理解信号频谱的概念,掌握典型信号的频谱以及 Fourier 变换的主要性质。
通过阅读、修改并调试本实验系统所给周期信号频谱分析的源程序,加强 Matlab 编程能力
信号与系统的频谱分析就是将信号与系统的时域表征经过傅里叶变换转换到频域表征,从而获得信号与系统在频域的分布特性,使我们从频域的角度获得对信号与系统的性质更加深入与具体的了解。
频谱分析又称为傅里叶分析,他为我们提供了一种非常方便的信号与系统的表示法与分析方法,在信号与系统的分析与研究中有着特别重要的作用。
一. 周期信号振幅谱的MATLAB实现
例1. 试用MATLAB绘出如图1所示周期矩形脉冲信号的振幅频谱。
图1
解:MATLAB程序如下:
echo off
a=-5;
b=5;
n=50;
j=sqrt(-1);
%积分精度 tol=1e-6; %设置脉冲波形周期 T0=b-a; %定义脉冲波波形 xsqual=@(x)1/2.*(x==-1/2)+(x>-1&x<1/2)+1/2.*(x==-1/2); %计算直流分量 out(1)=1/T0.*quad(xsqual,a,b,tol); %积分计算基波和各次谐波分量 xfun=@(x,k,T)xsqual(x).*exp(-j*2*pi*x*k/T); for i=1:n out(i+1)=1/T0.*quad(xfun,a,b,tol,[],i,T0); end out1=out(n+1:-1:2); out1=[conj(out1),out]; absout=abs(out1); n1=[-n:n]; stem(n1(n+1:2*n+1),absout(n+1:2*n+1)); titile(幅度谱);
二. 非周期信号的傅立叶变换的MATLAB实现
MATLAB的Symbolic Math Toolbox 提供了能直接求解傅立叶变换及与变换的函数fourier()与ifourier()。在调用fourier()与ifourier()之前,要用syms命令对所用
到的变量进行说明,即要将这些变量说明成符号变量。对fourier()中的函数f及
ifourier()的函数F,也要用符号定义符syms将f和F说明为符号表达式。若f或F是
MATLAB中的通用函数表达式,则不必用sym加以说明。
解:MATLAB命令为:
syms t
x=exp(-2*abs(t))
F=fourier(x)
subplot(211);
ezplot(t);
subplot(212);
ezplot(F);
f(t)的幅度频谱图如图3所示:
图3
解:MATLAB程序如下:
syms t
r=0.01;
j=sqrt(-1);
t=-15:r:15;
f=sin(t)/t;
f1=pi*(Heaviside(t+1)-Heaviside(t-1));
N=500;
w=k*w/n;
F=r*sinc(t/pi)*exp(-j*t*w);
F1=r*f1*exp(-j*t*w);
subplot(221);plot(t,f);
xlabel(‘t’); ylabel(‘f(t)’);
subplot(222); plot(w,F);
axis([-2 2 -1 4]);
xlabel(‘w’); ylabel(‘F(w)’);
subplot(223); plot(t,f1);
axis([-2 2 -1 4]);
xlabel(‘t’); ylabel(‘f1(t)’);
subplot(224); plot(w,F1);
axis([-20 20 -3 7]);