Fourier

フーリエ級数展開の結果を確かめるためのMaximaのコード

f(x)=0 (-pi<x<0), x (0<x<pi) で定義された周期2piの関数
f(x):=%pi/4 + sum( ((-1)^k-1)/(k*k*%pi)*cos(k*x) + (-1)^(k+1)/k*sin(k*x), k, 1, 100);
plot2d(f(x),[x,-%pi,%pi])

f(x)=0 (-pi<x<0), pi/4 (0<x<pi) で定義された周期2piの関数
f(x) := sum((1-(-1)^i)/(2*i)*sin(i*x), i, 1, 100);
plot2d(f(x),[x,-%pi,%pi])

f(x)=x^2/2 (-pi<x<pi)で定義された周期2piの関数
f(x) := 1/6*%pi*%pi + sum(2/(k*k)*(-1)^k*cos(k * x), k, 1, 100);
plot2d(f(x),[x,-%pi,%pi])


離散フーリエ変換の公式


公式どおりに行列を作成して離散フーリエ変換を行うRのコード

x = c(0,1,2,3,0,1,2,3)
W = matrix(0,8,8)
for (k in 1:8) for (j in 1:8) W[k,j] = exp(complex(imag=-2*pi*(j-1)*(k-1)/8))
W %*% x

これを高速フーリエ変換 fft(x) の結果と比較してみると、きわめてよく一致していることがわかる。
フーリエ変換は、N次元ベクトルに対して、N行N列の行列を左から掛ける作業、つまり一次変換である。


離散コサイン変換
公式が複数あるので、DCT-IIを使用する。

x = c(0,1,2,3,0,1,2,3)
W = matrix(0,8,8)
for (k in 1:8) for (j in 1:8) W[k,j] = cos(pi/8*((j-1)+1/2)*(k-1))
W %*% x
最終更新:2011年07月08日 17:54
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。