最近小虎在网课上被老师问到编程写出一指数函数python 拉氏变换 如何拉氏变换_python 拉氏变换的频谱图,当时鼓捣了1个多钟???以前是画过bode图,bode的幅频图是对数幅频图。应该也可以用伯德图直接画的,但是这个问题的关键应该在拉氏变化。5分钟不到的事,要搞那么久,看来是小虎还不太理解拉氏变换。编程工具还是那熟悉的MATLAB。

目录

  • 拉氏变换简介
  • 傅里叶变换vs拉氏变换
  • 拉氏变换表
  • 频谱图简介
  • 示例以及结果
  • 方法1定义法
  • 频谱图定义
  • 结果图
  • 完整代码
  • 方法2bode图
  • 总结
  • 更多

拉氏变换简介

拉普拉斯变换(Lapalace transform),是一种线性变换,也就是说非线性不可以用这种方法,它可以将时域变量转换为复数变量进而得到复数频率。一般来讲,满足同质性f(ka)=kf(a)和可加性f(a+b)=f(a)+f(b),即为线性变换,参考这里
在信号分析领域中,何岭松教授将之称为叠加性和比例性: 叠加性,系统对各输入之和的输出等于各单个输入的输出之和;比例性,数倍输入所得的输出等于原输入所得输出的数倍。

傅里叶变换vs拉氏变换

既然都是将时域信息转化为频域信息,那么拉氏变换和傅里叶变换(fourier transform)有啥区别呢?
wikipedia说,“The Laplace transform is similar to the Fourier transform. While the Fourier transform of a function is a complex function of a real variable (frequency), the Laplace transform of a function is a complex function of a complex variable.”他们主要区别是变量形式不同,在傅里叶变换是关于实数频率变量的方程,而拉氏变换是关于复数频率变量的方程
不过两种时域to频域的变换工程上都有应用,像小虎用过的,数字图像处理滤波用过傅里叶变换、傅里叶反变换;自动控制用过拉氏变换求传递函数以及系统的动态特性等等。
傅里叶变换
python 拉氏变换 如何拉氏变换_频域_02
拉氏变换
python 拉氏变换 如何拉氏变换_傅里叶变换_03

拉氏变换表

看下面其中一个网站:
Laplace TransformMicrosoft Word - New Laplace Transform Table

频谱图简介

以待画频谱的函数python 拉氏变换 如何拉氏变换_时域_04为例。

首先查拉氏变换表,的到exponent function的拉氏变换,上述函数的转换结果是:

python 拉氏变换 如何拉氏变换_傅里叶变换_05

python 拉氏变换 如何拉氏变换_时域_06,可以得到

python 拉氏变换 如何拉氏变换_频域_07

幅值、相角为:

python 拉氏变换 如何拉氏变换_傅里叶变换_08

python 拉氏变换 如何拉氏变换_傅里叶变换_09

这样,幅值和相位角就是关于频率的函数。将幅值和相位角关于频率的图像分别画出,就是幅频图(振幅频谱图magnitude spectrum)和相频图(相位角频谱图phase angle spectrum),两者合称为频谱图。

python 拉氏变换 如何拉氏变换_python 拉氏变换_10

示例以及结果

设A=5,a=5。接下来提供提供两种方法画频谱图,两种方法表示不同,应用场景有点区别。

方法1定义法

频谱图定义

幅值关于频率变化的函数绘制出来的图像称为幅频图,函数可以表示为python 拉氏变换 如何拉氏变换_python 拉氏变换_11;相位角关于频率变化的函数绘制出来的图像称为相频图,函数可以表示为python 拉氏变换 如何拉氏变换_时域_12。幅度可以对函数取绝对值得到,而相位角,可以从复平面得到,比如

python 拉氏变换 如何拉氏变换_python 拉氏变换_13

它的幅值为python 拉氏变换 如何拉氏变换_频域_14,相位角为:python 拉氏变换 如何拉氏变换_傅里叶变换_15

python 拉氏变换 如何拉氏变换_python 拉氏变换_16

结果图

python 拉氏变换 如何拉氏变换_频域_17

完整代码

a=5;A=5;
w=-5*pi:0.01:5*pi;
Xw=A./sqrt((w.^2+a^.2));
phi=-atan(w/a);
subplot(2,1,1);
plot(Xw);
xlabel('\omega');
ylabel('|X(\omega)|');
subplot(2,1,2);
plot(phi);
xlabel('\omega');
ylabel('|\phi(\omega)|');

此法用于一般情况下求频谱图。

方法2bode图

bode图的意义和编程方法见小虎的这篇文章,这里不再赘述。结果图如下。

python 拉氏变换 如何拉氏变换_时域_18

总结

不论是那种方法,都需要将时域变量转化为频域变量,然后再根据频谱图的相关定义画出来频谱图来。因为频谱图本身就是为了描述以频率为自变量的函数而存在的,所以在时域里鼓捣了1个多小时还鼓捣不出两幅图来也不足为奇了。