2017-07-13 56 views
0

在R,如果我想從一個波繪製譜圖,它是如下:[R情節頻譜基地

>library(sound) 
>library(tuneR) 
>library(seewave) 
>s1<-readWave('sample1.wav') 
>spectro(s1,main='s1') 
>str(s1) 
Formal class 'Wave' [package "tuneR"] with 6 slots 
    [email protected] left  : int [1:312000] 2293 2196 1964 1640 1461 1285 996 600 138 -195 ... 
    [email protected] right : num(0) 
    [email protected] stereo : logi FALSE 
    [email protected] samp.rate: int 8000 
    [email protected] bit  : int 16 
    [email protected] pcm  : logi TRUE 

但如果我只是有data.txt中as

2293 2196 1964 1640 1461 1285 996 600 138 -195 ... 

我應該在spectro函數中放什麼? spectro(wave, f, ...),wave據說是an R object。或者我應該用別人來獲得情節?我試過

>s_1<-read.table("s_1.txt", sep=" ") 
>spectro(s_1,f=8000) 
Error in filled.contour.modif2(x = X, y = Y, z = Z, levels = collevels, : 
no proper 'z' matrix specified 

並以錯誤結束。謝謝。

回答

0

我同意這個文檔有點朦朧。

我相信它試圖說的是第一個參數必須是Wave對象。您可以使用TuneRWave()函數將數值向量轉換爲Wave對象。

v <- runif(5000, -2^15, 2^15-1) 
v.wav <- Wave(v, samp.rate=8000, bit=16) 

spectro(v.wav) 

我沒到我目前的計算機上安裝seewave,所以我用軟件測試了這個舊電腦上的一對夫婦歲。我不能保證這個例子會起作用。

+0

謝謝。我昨天發現它的想法和你一樣,只是因爲數字集存在限制長度而被卡住了。 s_1應該有超過1000個條目。所以我添加了0來完成它,然後它工作。 –