« Rでハニング窓 | トップページ | これはなに? »

sonagram

sonagramを書きたくてRでごしょごしょ書いてます。まだ途中だけどこんな感じ。ちなみにx軸が時間、y軸が周波数、z軸がスペクトル強度のつもりです。

#ハニング窓の定義
HanningWindow <- function(x)
(x*(0.5-0.5*cos(2*pi*(0:(length(x)-1))/(length(x)-1))))

#ncolを0.1秒分にする。でnをちょうどいい数字にする。
#横が0.1秒、縦がそのときのデータとなる。
data <- matrix(scan("test.txt", skip = 5, n = 300000), ncol = 100, byrow = T)

#直流成分を0にするため平均値0のデータに変換する。
data1 <- data - ave(data)[1,1]

#ハニング窓をかける
#データ数を2^n個にする
data2 <- HanningWindow(data1[,1:64])

#fftしてスペクトルを計算する
#データ数は半分になる
data3 <- Mod(fft(data2[1:1000,]))[,1:32]

#図にする
image(data3, zlim = c(1000,1000000), col = rainbow(100))
filled.contour(data3, color = terrain.colors, zlim = c(0, 100000))

にしても7.声紋(サウンドスペクトログラム)の横軸を見ると10msecくらいでFFTかけてることになるよなぁ。ってことはサンプリング周波数がめちゃめちゃ高い?

|

« Rでハニング窓 | トップページ | これはなに? »

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/44043/11180519

この記事へのトラックバック一覧です: sonagram:

« Rでハニング窓 | トップページ | これはなに? »