そもそも何をやっているのか?のレベルでFFTを理解したい
背景:FFTを理解すべく式の展開を追いかけてきた 課題:式の展開は薄く理解したとしても、そもそも式が何を表しているのか分からず(特にフーリエ変換の式) 取り組み:数理演算ライブラリ(sympy)を使って、グラフ描画や微積の式展開を行いながら、フーリエ級数やフーリエ展開において何をやっているのか理解する 詳細: フーリエ変換解説本の冒頭によくある、「いろんな波形はsin/cosの重ね合わせで作りだせる」という説明をPythonコードで再確認 cosの重ね合わせでパルス波形ができることを体感する 使った式
f(x)=cos(x) + cos(2*x) + cos(3*x) + cos(4*x) + cos(5*x) #!/usr/bin/python3 import sympy import spb x = sympy.Symbol('x') cos1 = sympy.cos(x) cos2 = sympy.cos(x*2) cos3 = sympy.cos(x*3) cos4 = sympy.cos(x*4) cos5 = sympy.cos(x*5) cos_sigma = cos1 + cos2 + cos3 + cos4 + cos5 print(cos_sigma) plt = spb.plot(cos_sigma, cos1, cos2, cos3, cos4, cos5, (x, -sympy.pi * 2, sympy.pi * 2), show=False, legend=False ) plt.save('cos_sigma.png') f(x)=(4*sin(x) + 4*sin(3*x)/3 + 4*sin(5*x)/5 + 4*sin(7*x)/7 + 4*sin(9*x)/9 + 4*sin(11*x)/11)/pi #!/usr/bin/python3 import sympy import spb x = sympy.Symbol('x') sin1 = sympy.sin(x) sin3 = sympy.sin(x*3) /3 sin5 = sympy.sin(x*5) /5 sin7 = sympy.sin(x*7) /7 sin9 = sympy.sin(x*9) /9 sin11 = sympy.sin(x*11) /11 sin_sigma = (sin1 + sin3 + sin5 + sin7 + sin9 + sin11) * 4 / sympy.pi print(sin_sigma) plt = spb.plot(sin_sigma, sin1, sin3, sin5, sin7, sin9, sin11, (x, -sympy.pi * 2, sympy.pi * 2), show=False, legend=False ) plt.save('sin_sig_sq.png') #!/usr/bin/python3 import sympy import spb x = sympy.Symbol('x') sin1 = sympy.sin(x) sin2 = - sympy.sin(x*2) / 2 sin3 = sympy.sin(x*3) / 3 sin4 = - sympy.sin(x*4) / 4 sin5 = sympy.sin(x*5) / 5 sin6 = - sympy.sin(x*6) / 6 sin7 = sympy.sin(x*7) / 7 sin_sigma = (sin1 + sin2 + sin3 + sin4 + sin5 + sin6 + sin7) * 2 print(sin_sigma) plt = spb.plot(sin_sigma, sin1, sin2, sin3, sin4, sin5, sin6, sin7, (x, -sympy.pi * 2, sympy.pi * 2), show=False, legend=False ) plt.save('sin_saw.png') >>> sympy.integrate(sin_sigma, (x,-sympy.pi, sympy.pi)) 0sin(x)と掛け算した場合の面積は?? 2piだった(合ってるのかどうか検算必要だが・・) だからのこぎり波にsin(x)は含まれると
>>> sympy.integrate(sin_sigma * sympy.sin(x), (x ,-sympy.pi, sympy.pi)) 2*pi >>> sympy.integrate(sin_sigma * sympy.cos(x), (x ,-sympy.pi, sympy.pi)) 0 >>> sympy.integrate(sin_sigma * sympy.sin(x*2), (x ,-sympy.pi, sympy.pi)) -piやりたい事:440HzのSin波を作って鳴らしてみたけど、スピーカ…
背景:MicroPython上で動かせる軽量FFTライブラリを作りたい 課…
分からないなりにもFFTを勉強中。フーリエ変換までは式の展開を…
取り組み:RPiにMathematicaを入れてみる 結論:パッケージイン…
フーリエ級数の勉強をしていて、sinΘとsinΘを掛け算して積分し…