MATLAB之傅里叶展开(五)
傅里葉(Fourier)展開
傅里葉級數的定義如下:
設函數f(x)f(x)f(x)在區間[0,2π][0,2\pi][0,2π]上絕對可積,令
{an=1π∫02πf(x)cos?nxdx(n=0,1,2,?)bn=1π∫02πf(x)sin?nxdx(n=1,2,?)\left\{\begin{array}{ll} a_{n}=\frac{1}{\pi} \int_{0}^{2 \pi} f(x) \cos n x \mathrm{~d} x & (n=0,1,2, \cdots) \\ b_{n}=\frac{1}{\pi} \int_{0}^{2 \pi} f(x) \sin n x \mathrm{~d} x & (n=1,2, \cdots) \end{array}\right. {an?=π1?∫02π?f(x)cosnx?dxbn?=π1?∫02π?f(x)sinnx?dx?(n=0,1,2,?)(n=1,2,?)?
以an,bna_n,b_nan?,bn?為系數作三角級數
a02+∑n=1∞(ancosnx+bnsinnx)\frac{a_0}{2}+\sum_{n=1}^{\infty}(a_ncosnx+b_nsinnx) 2a0??+n=1∑∞?(an?cosnx+bn?sinnx)
稱為f(x)f(x)f(x)的傅里葉級數,an,bna_n,b_nan?,bn?稱為傅里葉系數。
具體的傅里葉級數推導過程可以參考下面這篇文章:
https://zhuanlan.zhihu.com/p/41455378
根據定義可以編寫計算傅里葉系數的函數:
function [a0,an,bn] = Fourierzpi(f) %本函數旨在計算[0,2pi]上的傅里葉系數 syms x n a0 = int(f,0,2*pi)/pi; an = int(f*cos(n*x),0,2*pi)/pi; bn = int(f*sin(n*x),0,2*pi)/pi; end利用該函數計算sinx+exx2\frac{sinx+e^x}{x^2}x2sinx+ex?在[0,2pi]上的傅里葉系數
syms x f = (sin(x)+exp(x))/x^2; [a0,an,bn] = Fourierzpi(f)a0 =Infan =int((cos(n*x)*(exp(x) + sin(x)))/x^2, x, 0, 2*pi)/pibn =int((sin(n*x)*(exp(x) + sin(x)))/x^2, x, 0, 2*pi)/pi如果想要計算不同區間的傅里葉變化,只需要改變函數中范圍,這樣就可以計算不同區間,不同函數的傅里葉系數。
總結
以上是生活随笔為你收集整理的MATLAB之傅里叶展开(五)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何便捷获取参考文献的引用格式?
- 下一篇: VBScript: 正则表达式(RegE