Presentation is loading. Please wait.

Presentation is loading. Please wait.

MATLAB求Fourier变换及逆变换

Similar presentations


Presentation on theme: "MATLAB求Fourier变换及逆变换"— Presentation transcript:

1 MATLAB求Fourier变换及逆变换
实验三 MATLAB求Fourier变换及逆变换 (一) 实验类型:综合性 (二) 实验类别:基础实验 (三) 实验学时数:2学时 .

2 基本命令 1、fourier 指令的使用 F = fourier(f,u,v) 其中f是需要变换的表达式;u是变量; v是算子 就是最后的表达式是z或者v的函数

3 例1 求 Fourier 变换 解 syms t w; ut=sym('Heaviside(t)'); % 定义 0 时刻起跳的单位阶跃函数 UT=fourier(ut) % 实施 Fourier 变换,给出与理论一致的结果 UT = pi*Dirac(w)-i/w

4 2、simple 指令 matlab中simple函数的用法 simple(‘s’),s是字符串, 如果是对某个字符函数,如y=(2+x)/x 化简,直接用simple(y)就得到2/x+1; 有时表达式比较复杂,一次化简结果不太理想,就再次化简,可以用simple(simple(y)) simplify和simple是Matlab符号数学工具箱提供 的两个简化函数,区别如下: simplify的调用格 式为:simplify(S);对表达式S进行化简。Simple 是通过对表达式尝试多种不同的方法(包括simplify)进行化简,以寻求符号表达式S的最简形式

5 对上述例1 求 Fourier 变换 syms t w;ut=sym('Heaviside(t)');
% 定义 0 时刻起跳的单位阶跃函数 <1> UT=fourier(ut) % 实施 Fourier 变换,给出与理论一致的结果 UTC=maple('convert',UT,'piecewise','w') % 计算结果起指示作用 <3> UTS=simple(UT) % 在此是 5.3 版的运算结果,简化导致漏项! UT = pi*Dirac(w)-i/w UTC = PIECEWISE([undefined, w = 0],[0, otherwise]) UTS = pi*Dirac(w)-i/w

6 3、ifourier(Yw,w,t)逆变换命令的使用
解 syms t w; UT = pi*Dirac(w)-i/w; Ut=ifourier(UT,w,t) % 结果与原函数相等 Ut =heaviside(t) 或解1 syms t w; Yw = pi*Dirac(w)-i/w; ifourier(Yw,w,t) ans =heaviside(t)

7 4、fourier 的缺省调用格式的使用 例2 求                         的 Fourier 变换. 演示: fourier 的缺省调用格式的使用要十分谨慎. syms t x w;ft=exp(-(t-x))*sym('Heaviside(t-x)'); F1=simple(fourier(ft,t,w)) % 给出以 w 为频率变量的正确结果 F2=simple(fourier(ft)) % 误把 x 当作时间变量 F3=simple(fourier(ft,t)) % 误把 x 当作时间变量,又误把 t 当作频率变量 F1 = 1/exp(i*x*w)/(1+i*w) F2 =i*exp(-i*t*w)/(i+w) F3 =i*exp(-t*(2+i*t))/(i+t)

8 注释: (1)sym的意思是symbol,就是后面括号里面是个代数式,要进行符号运算,不加意思就完全变了 (2)Dirac-----δ函数 (3)Heaviside----一般表示为阶跃函数 function f=heaviside(t) f=(t>0);小于0的都为0;大于0的为1;就是阶跃函数.

9 【Matlab源程序】 syms t W fourier(1/t) %结果为: ans = i*pi*(1-2*heaviside(w))

10 求Fourier变换还可用方法:fourier, simple 指令的配合使用
解:【Matlab源程序】 syms x w; syms b positive ;%定义符号参量b f=exp(-b^2*x^2); F=simple(fourier(f)) %结果为: F =1/b*pi^(1/2)*exp(-1/4*w^2/b^2)

11 求多个函数的Fourier 变换【Matlab源程序】
syms t w a; syms a positive;%定义符号参量a f=cos(a*t); g=sin(a*t); F=simple(fourier(f)) G=simple(fourier(g)) F = pi*(dirac(-w+a)+dirac(w+a)) G = i*pi*(-dirac(-w+a)+dirac(w+a)) %结果为:

12 例6 写出下列【Matlab源程序】的结果 syms t w; syms beta positive;%定义符号参量beta g=sym('Heaviside(t)'); f=t*exp(-beta*t)*g; F=fourier(f) %结果为: F = 1/(beta+i*w)^2

13 例7 求 的Fourier逆变换. 解: 【Matlab源程序】 syms t u w ifourier(w*exp(-3*w)*sym('Heaviside(w)')) %结果为: ans =1/2/(-3+i*x)^2/pi

14 plot(t,w,'b','LineWidth',2.5); 例8 矩形脉冲信号的傅氏变换 编写信号
例8 矩形脉冲信号的傅氏变换 编写信号 M=8; tend=1; T=10; N=2^M; dt=T/N; n=0:N-1; t=n*dt; w=zeros(size(t,2),1); Tow=find((tend-t)>0); w(Tow,1)=ones(length(Tow),1); plot(t,w,'b','LineWidth',2.5); title('矩形脉冲信号');xlabel('t --->'); 在命令窗口输入cftbyfft(w,t);得到该信号的傅氏变换频谱图 或者在命令窗口输入exp8_2_;得到该信号的傅氏变换频谱图与理论值的对比图. 注意,当M的取值过小时,就会出现混跌引起图形的差别.

15

16 例9 y=(x>0); 小于0的都为0;大于0的为1;就是阶跃信号; z=fft(y); plot(abs(z));

17 作业:做下列实验,写出实验报告 一、求下列函数f的Fourier 变换 1、g=sym('Heaviside(t)'); f=exp(-beta*t)*g; 2、f=exp(-beta*abs(t)). 二、求下列函数f的Fourier 变换及Fourier 逆变换 1、f=sin(t)/t; 2、f=exp(-(t-t_0)^2); 3、f=2*(sin(3*t))^2.


Download ppt "MATLAB求Fourier变换及逆变换"

Similar presentations


Ads by Google