« 2003年4月 | トップページ | 2003年6月 »

これはなに?

これは何でしょう?わかった人はかなり通です(^^)
実際に見ると・・・、欲しくなってきた!

| | コメント (0) | トラックバック (0)

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かけてることになるよなぁ。ってことはサンプリング周波数がめちゃめちゃ高い?

| | コメント (0) | トラックバック (0)

Rでハニング窓

これをRを使ってやると、こうなる。

> HanningWindow <- function(x)
+ (x*(0.5-0.5*cos(2*pi*(0:(length(x)-1))/(length(x)-1))))
> x <- c(1,1,1,1,-1,-1,-1,-1)
> HanningWindow(x)
[1] 0.0000000 0.1882551 0.6112605 0.9504844 -0.9504844 -0.6112605 -0.1882551
[8] 0.0000000
>

じつはRで初めて関数を定義したのであった。ちゃんと答あってるでしょ。

| | コメント (0) | トラックバック (0)

ハニング窓

見てわかるディジタル信号処理の75ページのhanning.cを使ってみた。こんな感じ。

[ki@al 2003-05]$ ./hanning
8
8
1
0.000000
1
0.188255
1
0.611260
1
0.950484
-1
-0.950484
-1
-0.611260
-1
-0.188255
-1
-0.000000

それにしても最初hanning.cだと思ってhamming.cを打ち込んでいた。

| | コメント (0) | トラックバック (0)

RでFFTして振幅スペクトルを計算


> x <- c(1,1,1,1,-1,-1,-1,-1)
> Mod(fft(x))
[1] 0.000000 5.226252 0.000000 2.164784 0.000000 2.164784 0.000000 5.226252

| | コメント (0) | トラックバック (0)

« 2003年4月 | トップページ | 2003年6月 »