方波的傅里叶变换_【编程德鲁伊 - 数学篇】Unity 傅里叶级数可视化

7a8f7e5aa8dcad6c1398da5d9abc9dee.png

【编程德鲁伊】系列是我的横向编程练习笔记,每期围绕一个主题(数学物理电子图形声音...),用几种程序语言分别实现。


编程德鲁伊 - 数学篇 - 傅里叶级数可视化Unity 实现

上一章做了三角函数可视化,分别用 MaxMSP, JavaScript (React), Python, 以及 Unity:

96b5a3a09f1360a6e06d00c1917827a9.gif
Unity 三角函数可视化

这一章重拾被傅里叶支配的恐惧。
谈到傅里叶变换、傅里叶分析,通常会分为两部分内容来讲,傅里叶级数连续傅里叶变换。本章集中在傅里叶级数

在数学中,傅里叶级数可以看作一组正弦曲线组成的周期函数,由加权求和组合而成。(wikipedia)

举个例子,假设有一个周期性方波,它可以分解成多个正弦波。正弦波越多,合成后的曲线越接近方波:

83d9eec4b0aa7c5363f2a8b30dd3a3d3.gif

更多图文解释及公式推导,可见上一节 JavaScript (React)傅里叶级数可视化 。

上一节 React 的实现效果:

v2-206b0f9d1c243d5b054d682a340cc214_b.gif

本节用 Unity

曾写过一篇 Unity 三角函数可视化 ,在其代码基础上,将绘制公式由三角函数修改为下方的傅里叶级数即可:

b6c97253263750a1f0268734e336fe73.png

ff5a18e83d58e4df884a6cd91f75cdae.png

完整代码可见后文。

最终效果:

489be4cfb135e26afc89c5d2bc878da7.gif

参考资源

  • Wikipedia
  • 【编程德鲁伊 - 数学篇】Unity3D 三角函数可视化
  • 【编程德鲁伊 - 数学篇】JavaScript (React)傅里叶级数可视化
  • Building a Graph Visualizing Math

Talk is cheap. Show me the code!

本例及【编程德鲁伊】系列大部分代码都开源在这里:https://github.com/avantcontra/coding-druid

请猛戳下方赞赏喜欢作者buy me a coffee
您的金钱鼓励是我前进的动力。

欢迎在Patreon上订阅(英文版),获取更多会员特供的高级内容。
您也可以直接在Gumroad商店获取demo和源代码。

网站: floatbug.com微信公众号/知乎专栏:实验编程

Cheers~

Contra

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 嗨!首先感谢你的问题。Matlab可以使用内置函数fft进行傅里叶变换的计算。下面是一个简单的示例代码: ``` % 定义时间序列 t = linspace(0,2*pi,1000); % 定义信号 y = sin(2*pi*5*t) + cos(2*pi*10*t); % 计算傅里叶变换 Y = fft(y); % 计算频率序列 f = linspace(0,1,1000); % 绘制频谱图 plot(f,abs(Y)); ``` 关于傅里叶变换求解偏微分方程和积分方程,这是一个非常广泛的领域,Matlab在这个领域也有很多的工具箱和函数。具体的实现方法可以根据不同的方程和问题进行选择和调整。如果你有具体的问题需要求解,可以提供更多的信息,我可以为你提供更具体的帮助。 ### 回答2: Matlab是一种功能强大的科学计算软件,可以方便地实现傅里叶变换(Fourier Transform)和傅立叶级数展开(Fourier Series Expansion)。 傅里叶变换是一种将一个信号从时域(时间域)转换到频域(频率域)的数学工具,通过分析信号的频谱特征,可以对信号进行频谱分析、滤波、降噪等操作。在Matlab中,可以使用fft()函数来实现离散傅里叶变换(DFT),ifft()函数来实现离散傅里叶逆变换(IDFT),fftshift()函数用于对频谱进行中心化处理。 傅立叶级数展开可以将一个周期信号表示为一系列正弦和余弦函数的线性组合,它在信号分析的应用中被广泛使用。在Matlab中,可以使用FourierSeries()函数来实现傅立叶级数展开,可以指定展开的周期、频率分量的数量和振幅等参数。 傅立叶变换在偏微分方程和积分方程的求解中也有重要应用。通过将偏微分方程或积分方程转化到频率域,可以简化求解过程。在Matlab中,可以通过傅里叶变换来求解时谐偏微分方程(Time-Harmonic PD Es),即偏微分方程的解具有频率依赖性质。通过将时谐偏微分方程转化为代数方程,可以使用Matlab的求解器(如solve()函数)得到解析解。 对于积分方程,傅立叶变换同样可以发挥作用。可以通过将积分方程转化为代数方程,然后使用Matlab的求解器进行求解。在这个过程中,使用傅里叶变换的目的是对局部波的响应进行频谱分析,并将问题转化为频域下的代数方程求解。 综上所述,Matlab提供了丰富的函数和工具,可以方便地实现傅里叶变换和傅立叶级数展开,并应用于偏微分方程和积分方程的求解。这些功能使得Matlab成为工程学、物理学以及其他科学领域中重要的数值计算和信号处理工具。 ### 回答3: Matlab可以用来实现傅立叶变换,从而求解偏微分方程和积分方程。 傅立叶变换是一种重要的数学工具,可以将一个函数表示为一系列正弦和余弦函数的组合。Matlab中有现成的函数fft可以实现离散傅立叶变换(DFT),而ifft函数可以进行逆傅立叶变换。 对于偏微分方程,我们可以通过傅立叶变换将微分方程转化为代数方程。首先,我们将待求函数进行傅立叶变换,得到其频率域表示。然后,我们可以将微分方程中的导数操作转化为乘法操作,从而得到一个代数方程。通过求解这个代数方程,我们可以得到频率域中的解。最后,使用ifft函数将频率域中的解进行逆傅立叶变换,得到时域中的解。 对于积分方程,我们也可以利用傅立叶变换来求解。通过将积分方程进行傅立叶变换,可以将其转化为代数方程。然后,我们可以通过求解这个代数方程来得到频率域中的解。最后,再将频率域中的解进行逆傅立叶变换,得到时域中的解。 总之,利用Matlab中的fft和ifft函数,我们可以利用傅立叶变换来求解偏微分方程和积分方程。这为我们研究和解决各种数学问题提供了一种有效的方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值