搜索
您的当前位置:首页正文

信号与系统实验三

来源:哗拓教育
实验三 连续时间信号的频域分析

一、实验目的

1、掌握傅立叶变换及其性质;

2、掌握连续时间信号傅立叶变换的数值计算方法; 3、掌握利用MATLAB实现信号的幅度调制的方法; 4、掌握利用MATLAB实现傅立叶变换的方法; 5、掌握利用MATLAB实现对周期信号的频谱分析。 二、实验内容

t) 、取样函数f(t)Sa(t)、门函数1、编程求解正弦函数f(t)sin(g2(t)u(t1)u(t1)、双边指数函数e2|t|信号的傅立叶变换式。

2、设f(t)Sa(t),已知信号f(t)的傅立叶变换为

F(j)g2()[u(1)u(1)],求f1(t)g2(t)的傅立叶变换F1(j),观察并验证傅立叶变换的对称性。

3、已知f(t)u(t1)u(t1),y(t)f(t)*f(t),试用MATLAB给出

f(t),y(t)的时域波形及它们的频谱F(j),Y(j)的图形,验证时域卷积定理。

4、绘制出下列信号及幅频图

(1)门函数脉冲序列 f1(t)u(t0.5)u(t0.5) (2)单边指数信号 f2(t)e2tu(t) (3)高斯信号 f3(t)et (4)三角脉冲信号 f4(t)21|t||t|1 |t|10(5)求F(j)2的傅立叶逆变换 21(6)设信号f(t)sin(100t),载波y(t)为频率400Hz的余弦信号。试用

1

MATLAB实现调幅信号y(t),并观察f(t)的频谱和y(t)的频谱在频域上的关系。

(7)设f(t)u(t2)u(t2),f1(t)f(t)cos(10t),试用MATLAB画出f(t),f1(t)的时域波形及其频谱,并观察傅立叶变换的频移特性。

(8)已知周期方波信号f(t)如下图3-1所示,求该信号的傅立叶级数,用MATLAB绘出其频谱图,并分析信号的频率特性。

图3-1 周期方波信号

(提示:bn0,an三、实验仪器及环境

2nsin,n2n1,3,5)

计算机1台,MATLAB7.0软件。 四、实验相关知识

1、信号f(t)傅立叶变换定义为 F(j)f(t)ejtdt,其存在的条件是f(t)满足|f(t)|dt

2、傅立叶逆变换定义为

1f(t)23、傅立叶变换的性质 (1)线性

F(j)ejtd

若F[fi(t)]Fi(j)(i1,2,,n),则

F[aifi(t)]aiFi(j)(i1,2,,n)

i1i1nn其中ai为常数。

2

(2)时移特性

若f(t)F(j),则

f(tt0)F(j)ejt

0(3)频移特性

若f(t)F(j),则

f(t)ejtF[j(0)]ejt

00(4)尺度变换

f(t)F(j),则

f(at)(5)对称性

f(t)F(j),则

1F(j) |a|aF(jt)2f()

(6)微分特性

若f(t)F(j),则

df(n)(t)(j)nF(j) ndt(7)积分特性

若f(t)F(j),则

(8)卷积定理

tF(j)f()dF(0)()

j 若f(t)F(j),则

f1(t)*f2(t)F1(j)F2(j) f1(t)f2(t)1F1(j)*F2(j) 23

五、实例

(一)利用MATLAB实现周期信号的分解与合成

1、求下图3-2所示周期矩形脉冲的傅立叶级数表达式,并用MATLAB求出由前N 次谐波合成的信号近似波形。

f(t) 1 -2 -1 -0.5 0 0.5 1 2 t

图3-2 周期矩形脉冲

解:取t0=-0.5,T0=2,则

1CnT0NT0/2T0/2f(t)ejn0t11jnt1ndtedtSa()

21220由前N 次谐波合成的信号近似波形为

N1njntfN(t)Sa()e0.5Sa(n/2)cos(nt)

2nN2n1程序如下: clear all;

t=-2:0.001:2; %信号的抽样点 N=input('N='); c0=0.5;

fN=c0*ones(1,length(t)); %计算抽样点上的直流分量 for n=1:2:N % 偶次谐波为零 fN= fN +cos(pi*n*t)*sinc(n*pi/2) ; end

plot(t, fN);grid;

title(['N=' num2str(N)]) % 数值型数据转换为字符型数据 axis([-2 2 -0.2 1.2]) 运行结果如图3-3。

4

N=3N=9110.80.80.60.60.40.40.20.200-0.2-2-1.5-1-0.500.511.52-0.2-2-1.5-1-0.500.511.52

N=20N=30110.80.80.60.60.40.40.20.200-0.2-2-1.5-1-0.500.511.52

-0.2-2-1.5-1-0.500.511.52

图3-3 所求前N项傅立叶系数合成的近似波形

3、周期方波信号如下图3-4所示,求出该信号三角函数形式的傅立叶级数,并用MATLAB编程实现其各次谐波叠加情况。

图3-4 周期方波信号

解:由图可知,该方波信号的周期为2,且为奇函数,故an0,所以

f(t)bnsin(nt)

n1计算得到

0bn4n

5

n2,4,6,n1,3,5,

该方波的信号的傅立叶级数为

f(t)11{sintsin(3t)sin[(2n1)t]}32n14n1,2,

因此,只要由bn计算出f(t)各次谐波的振幅,再根据各次谐波的频率,即可利用MATLAB绘出周期方波的各次谐波叠加后的波形。 程序如下:

% 观察周期方波信号的分解与合成 % m:傅里叶级数展开的项数

display('Please input the value of m (傅里叶级数展开的项数)'); % 在命令窗口显示提示信息

m = input('m = '); % 键盘输入傅里叶级数展开的项数

t = -2*pi:0.01:2*pi; % 时域波形的时间范围-2π~2π,采样间隔0.01 n = round(length(t)/4); %根据周期方波信号的周期,计算1/2周期的数据点数 f = [ones(n,1);-1*ones(n,1);ones(n,1);-1*ones(n+1,1)]; %构造周期方波信号 y = zeros(m+1,max(size(t))); y(m+1,:) = f'; figure(1);

plot(t/pi,y(m+1,:)); %绘制方波信号 grid; %在图形中加入栅格

axis([-2 2 -1.5 1.5]); %指定图形显示的横坐标范围和纵坐标范围 title('周期方波'); %给显示的图形加上标题 xlabel('单位pi','Fontsize', 8); %显示横坐标单位 x = zeros(size(t)); kk = '1';

for k=1:2:2*m-1 %循环显示谐波叠加图形 pause;

x = x+sin(k*t)/k;

y((k+1)/2,:) = 4/pi*x; %计算各次谐波叠加和 plot(t/pi,y(m+1,:));

6

hold on;

plot(t/pi,y((k+1)/2,:)); %绘制谐波叠加信号 hold off; grid;

axis([-2 2 -1.5 1.5]);

title(strcat('第',kk,'次谐波叠加')); xlabel('单位pi','Fontsize', 8); kk = strcat(kk,'、',num2str(k+2)); end pause;

plot(t/pi,y(1:m+1,:));grid; axis([-2 2 -1.5 1.5]); title('各次谐波叠加波形'); xlabel('单位pi','Fontsize', 8); % End

下图3-5是当m=4的程序运行结果。

周期方波1.51.5第1次谐波叠加110.50.500-0.5-0.5-1-1-1.5-2-1.5-1-0.50单位pi0.511.52-1.5-2-1.5-1-0.50单位pi0.511.52

第1、3次谐波叠加1.51.5第1、3、5次谐波叠加110.50.500-0.5-0.5-1-1-1.5-2-1.5-1-0.50单位pi0.511.52-1.5-2-1.5-1-0.50单位pi0.511.52

7

第1、3、5、7次谐波叠加1.51.5各次谐波叠加波形110.50.500-0.5-0.5-1-1-1.5-2-1.5-1-0.50单位pi0.511.52-1.5-2-1.5-1-0.50单位pi0.511.52

图3-5 周期方波信号的傅立叶级数分析

(二)利用MATLAB实现周期信号的频谱分析

4、利用MATLAB实现下图3-6所示的周期三角形信号的频谱图。

f(t) 1 -3 -2 -1 -1 0 1 2 3 t

图3-6 周期三角形信号

解:由图可知信号的周期为T0=2,所以0内的表达式为

2,f(t)在区间[-1/2,3/2]21|t|2t2 f(t)132(1t)t22由f(t)波形知 C00。取t01/2,则

1CnT0T0t0t0f(t)ejn0t11/2jnt13/2dt2tedt2(t1)ejntdt

21/221/2经过计算,该周期信号的傅立叶级数为

8

n4j22sin()n0Cnn 20n0程序如下: N=10; n1=-N:-1;

C1=-4*j*sin(n1*pi/2)/pi^2./n1.^2; C0=0;

n2=1:N;C2=-4*j*sin(n2*pi/2)/pi^2./n2.^2; Cn=[C1,C0,C2];n=-N:N;

subplot(2,1,1);stem(n,abs(Cn));ylabel('Cn的幅度谱') subplot(2,1,2);stem(n,angle(Cn));ylabel('Cn的相位谱') xlabel('\\omega/\\omega_0') 运行结果如图3-7所示。

0.50.4Cn的幅度谱0.30.20.10-102-8-6-4-20246810Cn的相位谱10-1-2-10-8-6-4-20/0246810

图3-7 周期三角形信号的频谱图

5、周期锯齿脉冲信号如图3-8,求其傅立叶级数,并用MATLAB绘制频谱图。

9

f(t) 1 -4 -3 -2 -1 -1 0 1 2 3 4 t

图3-8 周期锯齿脉冲信号

解: an0

n1 bn(1)1 nf(t)程序如下:

n11(1)sin(nt) n1n1% 周期锯齿脉冲信号频谱分析

% 绘制并观察周期锯齿脉冲信号频谱特性 % Nf:谐波的次数

% bn:第1,2,3,...次谐波正弦项系数 display('Please input the value of Nf '); Nf = input('Nf = ');

bn = zeros(Nf+1,1);cn = zeros(Nf+1,1); bn(1) = 0; for i = 1:Nf

bn(i+1) = (-1)^(i+1)*1/(i*pi); % 计算系数bn cn(i+1) = abs(bn(i+1)); %计算幅度频谱 end t = -5:0.01:5;

x = sawtooth(pi*(t+1)); %用sawtooth函数构造周期锯齿脉冲信号 subplot(211);

plot(t,x);axis([-5 5 -1.5 1.5]);

10

title('周期锯齿脉冲信号','Fontsize',8);xlabel('t (单位:s)', 'Fontsize',8); subplot(212); k = 0:Nf; stem(k,cn); hold on; plot(k,cn);

title('幅度频谱','Fontsize',8);xlabel('谐波次数', 'Fontsize',8); % End

Please input the value of Nf Nf = 30

程序运行结果如图3-9。

周期锯齿脉冲信号1.510.50-0.5-1-1.5-50.40.30.20.10-4-3-2-10t (单位:s)12345幅度频谱051015谐波次数202530

图3-9 周期锯齿脉冲信号的频谱

(三)非周期信号频域分析的MATLAB实现

当非周期序列写成下列有理多项式的形式 B(j)b0b1ejbMejMF(j) A(j)a0a1ejaNejN可以用MATLAB中提供的freqz( )函数来计算上面非周期序列的傅立叶变换

11

值,调用格式为

h=freqz (b,a,w)

上式中,b和a分别是其分子多项式和分母多项式的系数向量,即

b[b0,b2,,bM]a[a0,a1,,aN]

w为抽样的频率点,h为傅立叶变换在抽样点w上的值。 6、利用MATLAB画出0.9时,F(ej)程序如下: clear all; b=[1];

a1=[1 -0.9];a2=[1 0.9];

w=linspace(0,2*pi,512); %线性均匀分0-2的间隔,共512点 h1=freqz(b,a1,w); h2=freqz(b,a2,w);

plot(w/pi,abs(h1),w/pi,abs(h2),'k:'); xlabel('\\omega/\\pi');

legend('\\alpha=0.9','\\alpha=-0.9') 画出的幅度频谱如图3-10。

121的幅度频谱。 j1e=0.9=-0.9108642000.20.40.60.81/1.21.41.61.82

图3-10 F(ej)的幅度频谱

12

(四)傅立叶变换及MATLAB实现

信号f(t)傅立叶变换定义为 F(j)f(t)ejtdt 其存在的条件是f(t)在无限区间内绝对可积,即f(t)满足|f(t)|dt 傅立叶逆变换定义为 f(t)12F(j)ejtd 利用MATLAB工具箱中提供的fourier( )函数可直接求出其傅立叶变换。其调用格式为 (1)F=fourier(f); (2)F=fourier(f,v); (3)F=fourier(f,u,v); 格式(1)中的输入参量f是时间信号f(t)的符号表达式,输出参量F为返回符号f表达式关于的傅立叶变换表达式。 格式(2)中的输入参量f与格式(1)的含义相同,输出参量F为返回符号f表达式关于v的傅立叶变换表达式。V是符号变量。即 F(v)f(x)ejvxdx 格式(3)中的输入参量f是关于符号变量u的符号表达式,输出参量F为返回符号f表达式关于v的傅立叶变换表达式。V是符号变量。即 F(v)f(u)ejvudu 注意,在调用fourier( )函数之前,要用syms命令对所用到的变量,如t、u、v、w等进行说明,即将这些变量说明成符号变量。 7、 求f(t)e2|t|的傅立叶变换

解: 利用MATLAB提供的fourier( )函数求解,命令如下: syms t;

f=exp(-2*abs(t));

13

F=fourier(f) 运行结果为: F = 4/(4+w^2)

如果希望傅立叶变换的结果是符号变量v的函数,则执行如下命令: syms t v; f=exp(-2*abs(t)); F=fourier(f,t,v) 运行结果为: F = 4/(4+v^2)

MATLAB工具箱中还提供了求傅立叶逆变换的ifourier( )函数,其调用格式为

(1)f=ifourier(F); (2)f=ifourier(F,u); (3)f=ifourier(F,v,u);

格式(1)中的输入参量F是傅立叶变换的符号表达式,默认为符号变量w的函数,输出参量f是F的傅立叶逆变换的符号表达式,默认为符号变量x的函数。

格式(2)中的输入参量F是傅立叶变换的符号表达式,默认为符号变量w的函数,输出参量f是F的傅立叶逆变换的符号表达式,为指定的符号变量u的函数。

格式(3)中的输入参量F是傅立叶变换的符号表达式,为指定的符号变量v的函数,输出参量f是F的傅立叶逆变换的符号表达式,为指定的符号变量v的函数。

注意,在调用ifourier( )函数之前,要用syms命令对所用到的变量,如t、u、v、w等进行说明,即将这些变量说明成符号变量。 8、求F(j)1的傅立叶逆变换f(t)。 12 14

解: 利用MATLAB提供的ifourier( )函数求解,命令如下: syms t w; F=1/(1+w^2) ; f=ifourier(F,t) 运行结果为: f =

1/2*exp(-t)*Heaviside(t)+1/2*exp(t)*Heaviside(-t) 其中Heaviside(t)函数为单位阶跃函数。

15

因篇幅问题不能全部显示,请点此查看更多更全内容

Top