资源描述
傅立叶变换及其性质
一、涉及的MATLAB函数
1. fourier
功能:实现信号的傅立叶变换。
调用格式:
F=fourier(f):是符号函数f的傅立叶变换,默认返回函数F是关于的函数。
F=fourier(f,v):是符号函数f的傅立叶变换,默认返回函数F是关于v的函数。
F=fourier(f,u,v):是关于u的函数f的傅立叶变换,返回函数F是关于v的函数。
2. ifourier
功能:实现信号的逆傅立叶变换。
调用格式:
f=ifourier(F):是符号函数F的傅立叶逆变换,默认的独立变换为,默认返回是关于x的函数。
f=ifourier(F,u):返回函数F是关于u的函数,而不是默认的x的函数。
f=ifourier(F,v,u):是对关于v的函数F的傅立叶逆变换,返回关于u的函数f。
二、实验内容
1、利用fourier函数计算常见信号的傅立叶变换
(1) 已知连续时间信号,通过程序完成信号的傅立叶变换。
MATLAB程序:
syms t;
f= exp(-2*abs(t)); % 等价于f=sym(‘exp(-2*abs(t))’)
Fw=fourier(f);
ezplot(Fw);
信号的傅立叶变换如下图所示。
图4.1 信号f(t)的傅立叶变换
(2)试画出单边指数信号的波形及其幅频特性曲线:
MATLAB程序如下(a=3):
syms t
f=2/3*exp(-3*t)*heaviside(t); -- heaviside 是Symbolic Math Toolbox一个阶跃函数
Fw=fourier(f);
subplot(211);
ezplot(f);
subplot(212);
w=(-2:.01:2)*pi;
Fw1=subs(Fw, w); %将Fw中在符号变量w用数值来取代
Plot(w,abs(Fw1);grid on
信号的波形及其幅频特性曲线如下图4.2所示。
图4.2信号的波形及其幅频特性曲线图
思考:改变单边指数信号的的大小,观察的变化对频谱的影响?
2、利用ifourer计算常见信号的傅立叶逆变换
(1) 已知,求信号的逆傅立叶变换。
syms w
Fw=1/(1+(w^2));
ft=ifourier(Fw,t)
结果如下:
ft =1/2*exp(-t)*Heaviside(t)+1/2*exp(t)*Heaviside(-t)
其中Heaviside(t)是阶跃函数。
(2) 已知,求信号的逆傅立叶变换。
syms t w
Fw=heaviside(w+10)-heaviside(w-10);
ft=ifourier(Fw,t);
结果如下:
ft =1/t*sin(10*t)/pi
3、在MATLAB 中验证傅立叶变换的性质
(1) 傅立叶变换的时移特性
分别绘出信号与信号的频谱图,并观察信号时移对信号频谱的影响。
MATLAB程序:
%验证傅立叶变换的时移性质
clf;
syms t
ft=1/2*exp(-2*t)*heaviside(t);
subplot(221)
ezplot(ft,[-0.5 2]);grid;xlabel('t');
title('信号f(t)的波形');
ft1=1/2*exp(-2*(t-0.2))*heaviside(t-0.2);
subplot(222)
ezplot(ft1,[-0.5 2]);grid;xlabel('t');
title('信号f(t-0.2)的波形');
w=(-4:0.01:4)*pi;
Fw=fourier(ft);
subplot(223)
plot(w,abs(subs(Fw)));grid;
xlabel('\omega');
title('信号f(t)的幅度频谱');
w=(-4:0.01:4)*pi;
Fw1=fourier(ft1);
subplot(224)
plot(w,abs(subs(Fw1)));grid;
xlabel('\omega');
title('信号f(t-0.2)的幅度频谱');
傅立叶变换的时移特性如下图4.3所示。
图4.3 傅立叶变换的时移特性
(2) 傅立叶变换的频移特性
信号为门函数,试绘出信号频谱图,并与原信号频谱图进行比较。
MATLAB程序:
%验证傅立叶变换的频移性质
clear
clf;
ft=inline('stepfun(t,-1)-stepfun(t,1)'); % stepfun函数可以用heaviside 函数代替
t=-3:0.01:3;
subplot(221)
plot(t,ft(t));grid;xlabel('t');
title('信号f(t)的波形');
axis([-3 3 -1.5 1.5]);
w0=10;
ft1=ft(t).*cos(w0*t);
subplot(222)
plot(t,ft1);grid; xlabel('t');
title(['信号f(t)*cos(' num2str(w0) 't)的波形']);
axis([-3 3 -1.5 1.5]);
syms t;
f=heaviside(t+1)-heaviside(t-1);
w=(-6:0.01:6)*pi;
Fw=fourier(f);
subplot(223)
plot(w,abs(subs(Fw)));grid;
xlabel('\omega');
title('信号f(t)的频谱');
f1=f.*cos(w0*t);
w=(-6:0.01:6)*pi;
Fw1=fourier(f1);
subplot(224)
plot(w,abs(subs(Fw1)));grid;
xlabel('\omega');
title(['信号f(t)*cos(' num2str(w0) 't)的频谱']);
傅立叶变换的频移特性如下图4.4所示。
图4.4傅立叶变换的频移特性
(2) 傅立叶变换的尺度变换性质
设信号为门函数,试绘出信号及的频谱图,并与原信号频谱图进行比较。
%验证傅立叶变换的尺度变换性质
clear
clf;
ft=inline('stepfun(t,-1)-stepfun(t,1)'); % stepfun函数可以用heaviside 函数代替
t=-3:0.01:3;
subplot(321)
plot(t,ft(t));grid;xlabel('t');
title('信号f(t)的波形');
axis([-3 3 -1.5 1.5]);
a1=1/2; % 对信号时域进行扩展
ft1=ft(a1*t);
subplot(323)
plot(t,ft1);grid; xlabel('t');
title(['信号f(t/' num2str(1/a1) ')的波形']);
axis([-3 3 -1.5 1.5]);
a2=2; % 对信号时域进行压缩
ft2=ft(a2*t);
subplot(325)
plot(t,ft2);grid; xlabel('t');
title(['信号f(' num2str(a2) 't)的波形']);
axis([-3 3 -1.5 1.5]);
% 求出信号f(t)的频谱
syms t;
f=heaviside(t+1)-heaviside(t-1);
w=(-6:0.01:6)*pi;
Fw=fourier(f);
subplot(322)
plot(w/2/pi,abs(subs(Fw)));grid;
xlabel('\omega');
title(['信号f(t)的频谱']);
syms t;
f=heaviside(t*a1+1)-heaviside(t*a1-1);
w=(-6:0.01:6)*pi;
Fw=fourier(f);
subplot(324)
plot(w/pi/2,abs(subs(Fw)));grid;
xlabel('\omega');
title(['信号f(t/' num2str(1/a1) ')的频谱']);
syms t;
f=heaviside(t*a2+1)-heaviside(t*a2-1);
w=(-6:0.01:6)*pi;
Fw=fourier(f);
subplot(326)
plot(w/2/pi,abs(subs(Fw)));grid;
xlabel('\omega');
title(['信号f(' num2str(a2) 't)的频谱']);
傅立叶变换的频移特性如下图4.5所示。
图4.5 傅立叶变换的频尺度变换特性
3、 傅立叶变换数值计算*
已知门函数,试采用数值计算方法确定信号的傅立叶变换。
MATLAB程序:
%利用数值计算方法来计算连续信号的傅立叶变换
clear
tou=0.1;
f=@(t)(stepfun(t,0.1)-stepfun(t,0.1+tou)); % 定义时域信号f(t)
%f=inline(stepfun(t,0.1)-stepfun(t,0.1+tou)); % inline 函数中不能带有其它参数
Ts=tou/20; % Ts 抽样时间间隔
Ws=2*pi/Ts; % 抽样信号频谱的周期
t=0:Ts:2; % 对信号f(t) 在时域进行抽样
N=length(t); % 总抽样点数
n=0:N-1;
k=n;
w=k*Ws/N; % 对信号F(w)进行抽样
Fw=Ts*f(n*Ts)*exp(-j*2*pi/N*n'*k);% 计算F(w)各个频率采样点上的频谱
subplot(221) % 绘出信号f(t)的波形
plot(t,f(t));xlabel('t');grid;
axis([0 ,1.5 -1/2 2]);title('连续信号f(t)');
subplot(222)
Fw1=tou*sinc(w*tou/2/pi);
plot(w/2/pi,abs(Fw1));grid; % 理论计算信号f(t)的频谱
xlabel('Hz');title('连续信号的频谱F(w)');
f1=f(t); % 信号f(t)的抽样信号
subplot(223)
stem(t,f1);xlabel('t');grid;
xlabel('t');title(['离散信号f(t)|_{t=nTs} (Ts=' num2str(Ts) ')']);
axis([0 ,1.5 -1/2 2]);
subplot(224)
plot(w/2/pi,abs(Fw));grid;
xlabel('Hz');title(['抽样信号的频谱F_s(w)']);
信号的傅立叶变换如下图所示:
图4.6 信号的傅立叶变换
4、 频域抽样定理的验证*
由频域抽样定理知,若信号是时限信号,它集中在的时间区间内,则信号的频谱可以用等间隔的抽样值惟一的表示,条件是频域抽样间隔必须不大于。
以三角脉冲信号为例,利用MATLAB软件编程来观察该信号的频谱经抽样后得到的频域抽样信号及其对应的时域信号,并通过对频域抽样间隔的调整,观察临界抽样、过抽样、欠抽样频谱混叠的情况。
已知三角脉冲信号为:
程序中设定参数,则。
clear
clf;
E=1;
tou=1;
a=3;
f1=1.25; %频域采样间隔
T1=1/f1;
f=@(t)((2*E/tou*(t+tou/2)).*(stepfun(t,-tou/2)-stepfun(t,0))+...
(2*E/tou*(-t+tou/2)).*(stepfun(t,0)-stepfun(t,tou/2)));
Fw=@(w)(E*tou/2*sinc(w*tou/4/pi).^2);
Ts=0.01;
t=-2:Ts:2;
w=(-a/tou:0.1:a/tou)*4*pi;
subplot(221)
plot(t,f(t));grid;xlabel('t');
title('三角脉冲信号f(t)');
subplot(222)
plot(w,abs(Fw(w)));grid;xlabel('\omega');
axis([-a/tou*4*pi a/tou*4*pi 0 E*tou/2]);
title('三角脉冲信号的频谱F(\omega)');
wk1=(0:f1:4*a/tou)*2*pi;
wk=[-fliplr(wk1) wk1(2:end)];
ft1=Fw(wk)*exp(j*wk'*t)/T1;
w=(-4:f1/8:4)*a*pi;
subplot(223)
plot(t,abs(ft1));grid;xlabel('t');
axis([-2 2 0 1]);
title('频域抽样信号对应的时域信号f_1(t)');
subplot(224)
plot(w,abs(Fw(w)),'--');hold on;grid;xlabel('\omega');
axis([-a/tou*4*pi a/tou*4*pi 0 E*tou/2]);
stem(wk,abs(Fw(wk)),'r*');
title(['频域抽样信号F_1(\omega)' ]);
以下程序把频谱图改成了横坐标以频率为单位
clf;
E=1;
tou=1;
a=3;
f1=0.5; %频域采样间隔
T1=1/f1;
f=@(t)((2*E/tou*(t+tou/2)).*(stepfun(t,-tou/2)-stepfun(t,0))+...
(2*E/tou*(-t+tou/2)).*(stepfun(t,0)-stepfun(t,tou/2)));
Fw=@(w)(E*tou/2*sinc(w*tou/4/pi).^2);
Ts=0.01;
t=-2:Ts:2;
w=(-a/tou:0.01:a/tou)*4*pi;
subplot(221)
plot(t,f(t));grid;xlabel('t');
title('三角脉冲信号f(t)');
subplot(222)
plot(w/2/pi,abs(Fw(w)));grid;xlabel('f/Hz');
axis([-a/tou*2 a/tou*2 0 E*tou/2]);
title('三角脉冲信号的频谱F(\omega)');
wk1=(0:f1:4*a/tou)*2*pi;
wk=[-fliplr(wk1) wk1(2:end)];
ft1=Fw(wk)*exp(j*wk'*t)/T1;
w=(-4:f1/8:4)*a*pi;
subplot(223)
plot(t,abs(ft1));grid;xlabel('t');
axis([-2 2 0 1]);
title('频域抽样信号对应的时域信号f_1(t)');
subplot(224)
plot(w/2/pi,abs(Fw(w)),'--');hold on;grid;xlabel('f/Hz');
axis([-a/tou*2 a/tou*2 0 E*tou/2]);
stem(wk/2/pi,abs(Fw(wk)),'r*');
title(['频域抽样信号F_1(\omega)' ]);
展开阅读全文