MATLAB之积分变换(六)

积分变换

1.概述

常用的积分变换有傅里叶变换,拉普拉斯变换。傅里叶变换可以参考前面的文章,这里简单介绍一下拉普拉斯变换。

拉普拉斯变换是工程数学中常用的一种积分变换,又名拉氏变换。拉氏变换是一个线性变换,可将一个有参数实数tt≥ 0)的函数转换为一个参数为复数s的函数。拉普拉斯变换在许多工程技术和科学研究领域中有着广泛的应用,特别是在力学系统、电学系统、自动控制系统、可靠性系统以及随机服务系统等系统科学中都起着重要作用。

拉普拉斯变换是对于t≥0函数值不为零的连续时间函数x(t)通过关系式

X ( s ) = ∫ 0 ∞ x ( t ) e − s t d t X(s)=\int_{0}^{\infty}{x(t)e^{-st}}dt X(s)=∫0∞​x(t)e−stdt
(式中-st为自然对数底e的指数)变换为复变量s的函数X(s)。它也是时间函数x(t)的“复频域”表示方式。

至于它与傅里叶变换的联系,这里参考度娘的解释:

MATLAB之积分变换(六)

2.傅里叶积分变换

当一个非常复杂的函数变成多个初等正弦函数相加时,它的积分比之前对复杂函数的积分变得简单多了。法国数学家傅里叶发现了周期函数可以用一系列正弦函数组成的级数表示。先把函数作傅里叶变换,然后再利用莱布尼茨公式即可求出结果。

基本定义:若函数 f ( x ) f(x) f(x)满足

  1. 在任意有限个区间都连续或者有有限个第一类间断点,并且有有限个极值。

  2. 在(-∞,+∞)上绝对可积,即有限;则定义[f(x)→C(ω)]
    C ( ω ) = ∫ − ∞ + ∞ f ( x ) e − i ω x d x C(\omega)=\int_{-\infty}^{+\infty}{f(x)e^{-i\omega x}}dx C(ω)=∫−∞+∞​f(x)e−iωxdx
    为 f(x)的(复)傅里叶变换;记C(ω) = F[ f (x)] = f (ω),称 C(ω)为(复)傅里叶变换像函数。

    定理:在上面定义的基础上,可以证明
    f ( x ) = 1 2 π ∫ − ∞ + ∞ C ( ω ) e i ω x d ω f(x)=\frac{1}{2\pi}\int_{-\infty}^{+\infty}{C(\omega)e^{i\omega x}}d\omega f(x)=2π1​∫−∞+∞​C(ω)eiωxdω
    (在间断点,右边的积分收敛到f(x)在该点左右极限的平均值).称该积分为 f(x)的傅里叶复积分;f(x)为 C(ω)的(傅里叶逆变换 C(ω)→f(x))原函数。常记
    f ( x ) = F − 1 [ C ( ω ) ] f(x)=F^{-1}[C(\omega)] f(x)=F−1[C(ω)]

    MATLAB中提供傅里叶变换的命令是fourier,其调用格式如下:

    命令 说明
    fourier(f) f返回对默认自变量x的傅里叶变换,默认返回形式为 f ( ω ) f(\omega) f(ω)
    fourier(f,v) 返回的形式以v为默认变量
    fourier(f,u,v) 以v代替x并对u积分,即 f ( v ) = ∫ − ∞ + ∞ f ( u ) e − i v u d u f(v)=\int_{-\infty}^{+\infty}{f(u)e^{-ivu}}du f(v)=∫−∞+∞​f(u)e−ivudu

    计算 f ( x , v ) = e − x 2 ∣ v ∣ s i n v v f(x,v)=e^{-x^2\frac{|v|sinv}{v}} f(x,v)=e−x2v∣v∣sinv​的傅里叶变换,其中x为实数。

    syms x v u real
    f = exp(-x^2*abs(v)*sin(v)/v);
    fourier(f,v,u)
    
    ans =
    
    fourier(exp(-x^2*sin(v))*heaviside(v), v, u) + fourier(heaviside(-v)*exp(x^2*sin(v)), v, u)
    

3.傅里叶逆变换

MATLAB中提供的傅里叶逆变换命令是ifourier,调用格式如下:

命令 说明
ifourier(F) f返回对默认自变量w的傅里叶逆变换,默认的返回形式是f(x),即F=F(w) => f =f(x)
ifourier(F,u) 返回的傅里叶逆变换以u为默认变量
ifourier(F,v,u) 以v代替w的傅里叶逆变换,即 f ( v ) = 1 2 π ∫ − ∞ + ∞ F ( v ) e i v u d u f(v)=\frac{1}{2\pi} \int_{-\infty}^{+\infty}F(v)e^{ivu}du f(v)=2π1​∫−∞+∞​F(v)eivudu
syms w t real
f = 2*exp(-abs(w))-1;
ifourier(f,t)

ans =

-(2*pi*dirac(t) - 4/(t^2 + 1))/(2*pi)

4.快速傅里叶变换

快速傅里叶变换(FFT)是离散傅里叶变换的快速算法,它是根据离散傅里叶变换的奇、偶、虚、实等特性,对离散傅里叶变换的算法进行改进获得的。

https://zhuanlan.zhihu.com/p/347091298

MATLAB之积分变换(六)

实例:

A = magic(4); %生成4*4的魔方矩阵
B = ones(3); %生成3*3的全1矩阵
A(6,6)=0; %将A用0补全为6*6维
B(6,6)=0;%将B用0补全为6*6维
C=ifft2(fft2(A).*fft2(B))

C =

   16.0000   18.0000   21.0000   18.0000   16.0000   13.0000
   21.0000   34.0000   47.0000   47.0000   34.0000   21.0000
   30.0000   50.0000   69.0000   72.0000   52.0000   33.0000
   18.0000   50.0000   81.0000   84.0000   52.0000   21.0000
   13.0000   34.0000   55.0000   55.0000   34.0000   13.0000
    4.0000   18.0000   33.0000   30.0000   16.0000    1.0000

利用二维快速傅里叶逆变换将A矩阵的快速傅里叶变换和B矩阵的快速傅里叶变换的乘积计算。

5.拉普拉斯变换

MATLAB之积分变换(六)

MATLAB中提供的拉普拉斯变换变换命令为laplace,调用格式如下:

命令 说明
laplace(F) 计算默认变量为t的拉氏变换,默认的返回形式为L(s)
laplace(F,t) 计算结果为t为默认变量
laplace(F,w,z) 以z代替s对w积分,即 L ( z ) = ∫ 0 ∞ F ( w ) e − z w d w L(z)=\int_{0}^{\infty}F(w)e^{-zw}dw L(z)=∫0∞​F(w)e−zwdw

实例:计算 f ( x ) = x 2 − x f(x)=x^2-x f(x)=x2−x的拉普拉斯变换

syms x
f = x^2-x;
laplace(f)

ans =

2/s^3 - 1/s^2

6.拉普拉斯逆变换

拉普拉斯逆变换可以表示为已知函数f(t)的拉普拉斯变换F(s),求原函数f(t)的运算为拉普拉斯反变换。其公式为:
f ( t ) = L − 1 [ F ( s ) ] = 1 2 π j ∫ β − j ∞ β + j ∞ F ( s ) e s t d t f(t)=L^{-1}[F(s)]=\frac{1}{2\pi j}\int_{\beta-j\infty}^{\beta+j\infty}F(s)e^{st}dt f(t)=L−1[F(s)]=2πj1​∫β−j∞β+j∞​F(s)estdt
MATLAB提供的拉普拉斯逆变换的命令是ilaplace,其调用格式如下:

命令 说明
ilaplace(L) 计算对默认变量s的拉普拉斯逆变换,默认的返回形式为F(t),即求 f ( w ) = ∫ c − j w c + j w L ( s ) e s t d s f(w)=\int_{c-jw}^{c+jw}L(s)e^{st}ds f(w)=∫c−jwc+jw​L(s)estds
ilaplace(L,y) 计算结果以y为默认变量, f ( y ) = ∫ c − j w c + j w L ( y ) e y t d y f(y)=\int_{c-jw}^{c+jw}L(y)e^{yt}dy f(y)=∫c−jwc+jw​L(y)eytdy
ilaplace(L,y,x) 以x代替t的拉普拉斯逆变换, f ( x ) = ∫ c − j w c + j w L ( y ) e x y d y f(x)=\int_{c-jw}^{c+jw}L(y)e^{xy}dy f(x)=∫c−jwc+jw​L(y)exydy

实例:计算 f ( x ) = − x 3 f(x)=-x^3 f(x)=−x3的拉普拉斯变换和拉普拉斯逆变换。

syms x t
f = -x^3;
laplace(f,x,t)

ans =

-6/t^4

ilaplace(f,x,t)

ans =

-dirac(3, t)

验证拉普拉斯变换与拉普拉斯逆变换:

F = laplace(f,x,t)

F =

-6/t^4

ilaplace(F)

ans =

-x^3
上一篇:LeetCode | 面试题10- II. 青蛙跳台阶问题【剑指Offer】【Python】


下一篇:斐波那契数列的求法