实验三MATLAB求Fourier变换及逆变换
信号与系统实验报告三

一.实验目的1. 深入理解系统频率响应的物理意义2. 掌握利用Matlab 分析系统频率响应的方法3. 理解系统对信号的作用关系二.实验原理傅里叶变换是信号分析 的最重要的内容之一。
从已知信号()f t 求出相应的频谱函数()F j ω的数学表示为:()F j ω()j t f t e dt ω∞--∞=⎰()f t 的傅里叶变换存在的充分条件是()f t 在无限区间内绝对可积,即()f t 满足下式:()f t dt ∞-∞<∞⎰但上式并非傅里叶变换存在的必要条件。
在引入广义函数概念之后,使一些不满足绝对可积条件的函数也能进行傅里叶变换。
傅里叶反变换的定义为:1()()2j t f t F j e d ωωωπ∞-∞=⎰。
在这一部分的学习中,大家都体会到了这种数学运算的麻烦。
在MATLAB 语言中有专门对信号进行正反傅里叶变换的语句,使得傅里叶变换很容易在MATLAB 中实现。
在MATLAB 中实现傅里叶变换的方法有两种,一种是利用MATLAB 中的Symbolic Math Toolbox 提供的专用函数直接求解函数的傅里叶变换和傅里叶反变换,另一种是傅里叶变换的数值计算实现法。
下面分别介绍这两种实现方法的原理。
1.直接调用专用函数法①在MATLAB 中实现傅里叶变换的函数为:F=fourier( f ) 对f(t)进行傅里叶变换,其结果为F(w)F =fourier(f,v) 对f(t)进行傅里叶变换,其结果为F(v)F=fourier( f,u,v ) 对f(u)进行傅里叶变换,其结果为F(v) ②傅里叶反变换f=ifourier( F ) 对F(w)进行傅里叶反变换,其结果为f(x)f=ifourier(F,U) 对F(w)进行傅里叶反变换,其结果为f(u)f=ifourier( F,v,u ) 对F(v)进行傅里叶反变换,其结果为f(u)由于MATLAB 中函数类型非常丰富,要想了解函数的意义和用法,可以用mhelp 命令。
东北大学 matlab实验

《MATLAB 语言与应用》上机实验作业第一部分2、 用MATLAB 语句输入矩阵A 和B⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=1423143212344321A , ⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡++++++++++++++++=4j 11j43j 22j34j 11j 42j 33j 24j 13j 22j 31j 41j 42j 33j 24j 1B前面给出的是44⨯矩阵,如果给出5)6,5(=A 命令将得出什么结果? MATLAB 结果:>> A=[1 2 3 4;4 3 2 1;2 3 4 1;3 2 4 1];>> B=[1+4j 2+3j 3+2j 4+1j;4+1j 3+2j 2+3j 1+4j;2+3j 3+2j 4+1j 1+4j;3+2j 2+3j 4+1j 1+4j]; >> A A =1 2 3 4 4 3 2 1 2 3 4 1 3 2 4 1>> B B =1.0000 + 4.0000i2.0000 +3.0000i 3.0000 + 2.0000i4.0000 + 1.0000i 4.0000 + 1.0000i 3.0000 + 2.0000i 2.0000 + 3.0000i 1.0000 + 4.0000i 2.0000 + 3.0000i 3.0000 + 2.0000i 4.0000 + 1.0000i 1.0000 + 4.0000i 3.0000 + 2.0000i 2.0000 + 3.0000i 4.0000 + 1.0000i 1.0000 + 4.0000i>> A(5,6)=5 A =1 2 3 4 0 0 4 3 2 1 0 0 2 3 4 1 0 0 3 2 4 1 0 00 0 0 0 0 53、假设已知矩阵A,试给出相应的MATLAB命令,将其全部偶数行提取出来,赋给B矩阵,用magic(8)A=命令生成A矩阵,用上述命令检验一下结果是不是正确。
信号与系统实验(MATLAB版) (1)

《信号与系统MATLAB实现》实验指导书电气信息工程学院2014年2月长期以来,《信号与系统》课程一直采用单一理论教学方式,同学们依靠做习题来巩固和理解教学内容,虽然手工演算训练了计算能力和思维方法,但是由于本课程数学公式推导较多,概念抽象,常需画各种波形,作题时难免花费很多时间,现在,我们给同学们介绍一种国际上公认的优秀科技应用软件MA TLAB,借助它我们可以在电脑上轻松地完成许多习题的演算和波形的绘制。
MATLAB的功能非常强大,我们此处仅用到它的一部分,在后续课程中我们还会用到它,在未来地科学研究和工程设计中有可能继续用它,所以有兴趣的同学,可以对MATLAB 再多了解一些。
MATLAB究竟有那些特点呢?1.高效的数值计算和符号计算功能,使我们从繁杂的数学运算分析中解脱出来;2.完备的图形处理功能,实现计算结果和编程的可视化;3.友好的用户界面及接近数学表达式的自然化语言,易于学习和掌握;4.功能丰富的应用工具箱,为我们提供了大量方便实用的处理工具;MATLAB的这些特点,深受大家欢迎,由于个人电脑地普及,目前许多学校已将它做为本科生必须掌握的一种软件。
正是基于这些背景,我们编写了这本《信号与系统及MATLAB实现》指导书,内容包括信号的MA TLAB表示、基本运算、系统的时域分析、频域分析、S域分析、状态变量分析等。
通过这些练习,同学们在学习《信号与系统》的同时,掌握MATLAB的基本应用,学会应用MATLAB的数值计算和符号计算功能,摆脱烦琐的数学运算,从而更注重于信号与系统的基本分析方法和应用的理解与思考,将课程的重点、难点及部分习题用MATLAB进行形象、直观的可视化计算机模拟与仿真实现,加深对信号与系统的基本原理、方法及应用的理解,为学习后续课程打好基础。
另外同学们在进行实验时,最好事先预习一些MATLAB的有关知识,以便更好地完成实验,同时实验中也可利用MATLAB的help命令了解具体语句以及指令的使用方法。
《信号与系统》实验三

三:
源程序:
(1):τ/T=1/4时的周期矩形脉冲的幅度谱和相位谱:
n=-20:20;
F=zeros(size(n));
forii=-20:20
F(ii+21)= sin(ii*pi/4)/(ii*pi+eps);
end
F(21)=1/4;
实验
内容
1.求图1所示周期信号( , )的傅里叶级数,用Matlab做出其前3、9、21、45项谐波的合成波形与原信号作比较,并做出其单边幅度谱和相位谱。
图1 周期为2的三角脉冲信号
2. 求图2所示的单个三角脉冲( )的傅里叶变换,并做出其幅度谱和相位谱。
图2 单个三角脉冲
3. 求不同占空比下周期矩形脉冲的幅度谱和相位谱,例如 、 。
y=1/4;
forn=1:m
y=y+4/(n*n*pi*pi)*(1-cos(n*pi/2)).*cos(n*pi.*t);
end
源代码:
t=-6:0.01:6;
d=-6:2:6;
fxx=pulstran(t,d,'tripuls');
f1=fourierseries(3,t);
f2=fourierseries(9,t);
n=1:10;
a=zeros(size(n));
fori=1:10
a(i)=angle(4/(i*i*pi*pi)*(1-cos(i*pi/2)))
end
n=0:pi:9*pi
stem(n,a,'fill','linewidth',2);
axis([0,9*pi,-0.2,0.2])
实验三利用MATLAB求取状态空间模型的相似变换及其标准型、控制系统的不同状态模型实现

现代控制理论第一次上机实验报告实验三 利用MATLAB 求取状态空间模型的相似变换及其标准型、控制系统的不同状态模型实现实验目的:1、通过实验掌握线性系统的对角线标准型、约旦标准型、模态标准型以及伴随矩阵标准型的表示及相应变换阵的求解;2、通过编程、上机调试,掌握系统可控性和可观测性的判别方法、系统的可控性和可观测性分解等;3、加深理解由控制系统传递函数建立能控、能观、约当标准型等不同状态模型的方法。
实验要求:1.实现同一系统传递函数的状态模型是唯一的吗?2.系统传递函数除上面三种不同状态模型实现外,常见的还有串连实现,对否? 3.对于上述系统传递函数,其输出稳态值与输入阶跃信号幅值有何关系? 实验步骤:1. 根据所给系统的已知条件(可自行参阅选择刘豹教材中的例题或习题),如传递函数、零极点模型或(A 、B 、C 、D ),实现状态空间模型之间的相似变换、写出其对角线标准型、约当标准型、模态标准型以及伴随矩阵标准型的表示及求解相应变换阵,采用MATLAB 的相关函数编写m-文件。
已知系统的传递函数如下:3211()(1)( 2.5)(5)8.52012.5160.270.11 2.55G s s s s s s s s s s ==++++++-=+++++运行如下m-文件,得到传递函数的状态空间模型: num=[0 0 0 1]; den=[1 8.5 20 12.5]; [A,B,C,D]=tf2ss(num,den) 得到 A =-8.5000 -20.0000 -12.5000 1.0000 0 0 0 1.0000 0 B = 1 0 0 C =D =因此,传递函数的一个状态空间实现是G=ss(A,B,C,D);(1)对角线标准型:计算矩阵A的特征值及与特征值对应的对角型变换矩阵D的m-如下:[V,D]=eig(A)[V,D]=eig(A)V =-0.9798 0.9184 0.57740.1960 -0.3674 -0.5774-0.0392 0.1469 0.5774D =-5.0000 0 00 -2.5000 00 0 -1.0000由对角线标准型的变换阵D,运行下列m-文件的到对角线标准型矩阵系数:G1=ss2ss(G,D)a =x1 x2 x3x1 -8.5 -40 -62.5x2 0.5 0 0x3 0 0.4 0b =u1x1 -5x2 0x3 0c =x1 x2 x3d =u1y1 0Continuous-time model.由上可得,对角线标准型:对角型变换矩阵为:(2)约旦标准型:计算矩阵A变换为约当标准型J,并得到变换矩阵V,运行下列m-文件:>> [V,J]=jordan(A)V =2.5000 -1.6667 0.1667-0.5000 0.6667 -0.16670.1000 -0.2667 0.1667J =-5.0000 0 00 -2.5000 00 0 -1.0000根据得到的约当标准型的变换矩阵V,运行下列文件得到约当标准型的矩阵系数:G1=ss2ss(G,V)a =x1 x2 x3x1 -104 -613.6 -697.1x2 21 123.1 139.6x3 -4.2 -24.28 -27.58b =u1x1 2.5x2 -0.5x3 0.1c =x1 x2 x3y1 1 7.5 12.5d =u1y1 0Continuous-time model由上可得,约旦标准型:约旦标准型的变换矩阵为:(3)模态标准型运行以下m-程序可得到模态标准型系数矩阵和其变换矩阵:>> [G1,V]=canon(G,'modal')a =x1 x2 x3x1 -5 0 0x2 0 -2.5 0x3 0 0 -1b =u1x1 -0.825x2 -0.95x3 0.375c =x1 x2 x3y1 -0.1212 0.2807 0.4444d =u1y1 0Continuous-time model.V =-0.8250 -2.8875 -2.0625-0.9500 -5.7000 -4.75000.3750 2.8125 4.6875由上可得,模态标准型:模态标准型的变换矩阵为:(4)伴随矩阵标准型运行以下m-程序可得到伴随矩阵标准型系数矩阵和其变换矩阵:>> [G1,V]=canon(G,'companion')a =x1 x2 x3x1 0 0 -12.5x2 1 0 -20x3 0 1 -8.5b =u1x1 1x2 0x3 0c =x1 x2 x3y1 0 0 1d =u1y1 0Continuous-time model.V =1.0000 8.5000 20.00000 1.0000 8.50000 0 1.0000由上可得,伴随矩阵标准型:模态标准型的变换矩阵为:2.根据所给系统的已知条件(可自行参阅选择刘豹教材中的例题或习题),如(A、B、C、D)模型,判断其可控性和可观测性并进行可控性和可观测性分解。
数字信号处理实验 matlab版 快速傅里叶变换(FFT)

实验14 快速傅里叶变换(FFT)(完美格式版,本人自己完成,所有语句正确,不排除极个别错误,特别适用于山大,勿用冰点等工具下载,否则下载之后的word 格式会让很多部分格式错误,谢谢)XXXX 学号姓名处XXXX一、实验目的1、加深对双线性变换法设计IIR 数字滤波器基本方法的了解。
2、掌握用双线性变换法设计数字低通、高通、带通、带阻滤波器的方法。
3、了解MA TLAB 有关双线性变换法的子函数。
二、实验内容1、双线性变换法的基本知识2、用双线性变换法设计IIR 数字低通滤波器3、用双线性变换法设计IIR 数字高通滤波器4、用双线性变换法设计IIR 数字带通滤波器三、实验环境MA TLAB7.0四、实验原理1、实验涉及的MATLAB 子函数(1)fft功能:一维快速傅里叶变换(FFT)。
调用格式:)(x fft y =;利用FFT 算法计算矢量x 的离散傅里叶变换,当x 为矩阵时,y 为矩阵x每一列的FFT 。
当x 的长度为2的幂次方时,则fft 函数采用基2的FFT 算法,否则采用稍慢的混合基算法。
),(n x fft y =;采用n 点FFT 。
当x 的长度小于n 时,fft 函数在x 的尾部补零,以构成n点数据;当x 的长度大于n 时,fft 函数会截断序列x 。
当x 为矩阵时,fft 函数按类似的方式处理列长度。
(2)ifft功能:一维快速傅里叶逆变换(IFFT)。
调用格式:)(x ifft y =;用于计算矢量x 的IFFT 。
当x 为矩阵时,计算所得的y 为矩阵x 中每一列的IFFT 。
),(n x ifft y =;采用n 点IFFT 。
当length(x)<n 时,在x 中补零;当length(x)>n 时,将x 截断,使length(x)=n 。
(3)fftshift功能:对fft 的输出进行重新排列,将零频分量移到频谱的中心。
调用格式:)(x fftshift y =;对fft 的输出进行重新排列,将零频分量移到频谱的中心。
matlab实现傅里叶变换

一、傅立叶变化的原理;(1)原理正交级数的展开是其理论基础!将一个在时域收敛的函数展开成一系列不同频率谐波的叠加,从而达到解决周期函数问题的目的。
在此基础上进行推广,从而可以对一个非周期函数进行时频变换。
从分析的角度看,他是用简单的函数去逼近(或代替)复杂函数,从几何的角度看,它是以一族正交函数为基向量,将函数空间进行正交分解,相应的系数即为坐标。
从变幻的角度的看,他建立了周期函数与序列之间的对应关系;而从物理意义上看,他将信号分解为一些列的简谐波的复合,从而建立了频谱理论。
当然Fourier积分建立在傅氏积分基础上,一个函数除了要满足狄氏条件外,一般来说还要在积分域上绝对可积,才有古典意义下的傅氏变换。
引入衰减因子e^(-st),从而有了Laplace变换。
(好像走远了)。
(2)计算方法连续傅里叶变换将平方可积的函数f(t)表示成复指数函数的积分或级数形式。
这是将频率域的函数F(ω)表示为时间域的函数f(t)的积分形式。
连续傅里叶变换的逆变换 (inverse Fourier transform)为即将时间域的函数f(t)表示为频率域的函数F(ω)的积分。
一般可称函数f(t)为原函数,而称函数F(ω)为傅里叶变换的像函数,原函数和像函数构成一个傅里叶变换对(transform pair)。
二、傅立叶变换的应用;DFT在诸多多领域中有着重要应用,下面仅是颉取的几个例子。
需要指出的是,所有DFT的实际应用都依赖于计算离散傅里叶变换及其逆变换的快速算法,即快速傅里叶变换(快速傅里叶变换(即FFT)是计算离散傅里叶变换及其逆变换的快速算法。
)。
(1)、频谱分析DFT 是连续傅里叶变换的近似。
因此可以对连续信号x(t)均匀采样并截断以得到有限长的离散序列,对这一序列作离散傅里叶变换,可以分析连续信号x(t)频谱的性质。
前面还提到DFT 应用于频谱分析需要注意的两个问题:即采样可能导致信号混叠和截断信号引起的频谱泄漏。
傅立叶(Fourier)变换方法

s *j ,l = s j ,l − (aϕ j ,l + bϕ j +1,l + cϕ j −1,l + dϕ j ,l +1 + eϕ j ,l −1 ) 其中
特别地,若 ϕ B 很小,可简单地取 ϕ 的内点值为0
s *j ,l = s j ,l 非边界邻点处
s *,l = s j ,l − λBϕB ,边界邻点处 j
周期边界条件
s
F1 = F2 N −1,F2 = F2 N
S j = s j,(2 ≤ j ≤ N − 1),SN = 0 S j = −s2N − j,(N + 1 ≤ j ≤ 2N − 2),S 2N −1 = 0
x1
xN
x2 N −1
F j = −F2N − j = f j,(2 ≤ j ≤ N − 1) F1 = −F2N −1 = 0,FN = F−N = 0
傅立叶变换:
g
Байду номын сангаас
m
=
∑
N
f je
i
2 π mj N
j =1
逆变换:
f
j
=
m
N + 1 = − + 1 2
∑
N 2
g
m
e
− i
2 π mj N
可推广到多维 (如2D)
g
m ,n
=
∑ ∑
j =1
M
N
f
N
j ,l
e
i
2 π mj M
e
i
2 π nl N
l =1
2 θm 2 θn = −4sin ( ) + sin ( ) 2 210
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Fourier 变换
解 syms t w; ut=sym('Heaviside(t)'); % 定义 0 时刻起跳的单位阶跃函数 UT=fourier(ut) % 实施 Fourier 变换,给出与理论一致的结果 UT = pi*Dirac(w)-i/w
2、simple 指令 matlab中simple函数的用法
注释:
(1)sym的意思是symbol,就是后面括号里面是个 代数式,要进行符号运算,不加意思就完全变了 (2)Dirac-----δ函数
(3)Heaviside----一般表示为阶跃函数 function f=heaviside(t) f=(t>0);小于0的都为0;大于0的为1;就是阶跃函数.
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的最简形式
例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
例7 求 FW We 3wuw 的Fourier逆变换.
4、fourier 的缺省调用格式的使用
例2 求
的 Fourier 变换.
演示: fourier 的缺省调用格式的使用要十分谨慎.
syms t x w;ft=exp(-(t-x))*sym('Heaviside(t-x)');
F1=simple(fourier(ft,t,w))
% 给出以 w 为频率变量的正确结果
解: 【Matlab源程序】 syms t u w ifourier(w*exp(-3*w)*sym('Heaviside(w)')) %结果为: ans =1/2/(-3+i*x)^2/pi
例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);
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)
例5 求函数 f cosat, g sinat的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))
对上述例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
3、ifourier(Yw,w,t)逆变换命令的使用
对上述例1 求 Fourier 逆变换进行验算 解 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)
plot(t,w,'b','LineWidth',2.5); title('矩形脉冲信号');xlabel('t --->'); 在命令窗口输入cftbyfft(w,t);得到该信号的傅氏变换频谱图 或者在命令窗口输入exp8_2_;得到该信号的傅氏变换频谱图与理论
解:【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)
求多个函数的Fourier 变换【Matlab源程序】
实验三 MATLAB求Fourier变换及逆变换
(一) 实验类型:综合性 (二) 实验类别:基础实验 (三) 实验学时数:2学时
.
基本命令
1、fourier 指令的使用 F = fourier(f,u,v) 其中f是需要变换的表达式;u是变量; v是算子 就是最后的表达式是z或者v的函数
例1 求
例3 求函数f t 1的Fourier变换
t
【Matlab源程序】 syms t W
fourier(1/t) %结果为:
ans = i*pi*(1-2*heaviside(w))
求Fourier变换还可用方法:fourier, simple 指令 的配合使用
例4 求函数f eb2x2 (b 0)的Fourier变换