在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
..@ left : int [1:312000] 2293 2196 1964 1640 1461 1285 996 600 138 -195 ...
..@ right : num(0)
..@ stereo : logi FALSE
..@ samp.rate: int 8000
..@ bit : int 16
..@ pcm : logi TRUE
但是,如果我只将data.txt作为
,该怎么办?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 :(得分:0)
我同意文档有点模糊。
我认为它试图说的是第一个参数必须是Wave对象。您可以使用TuneR
Wave()
函数将数字向量转换为Wave对象。
v <- runif(5000, -2^15, 2^15-1)
v.wav <- Wave(v, samp.rate=8000, bit=16)
spectro(v.wav)
我没有设法在我当前的计算机上安装seewave
,所以我在一台旧计算机上用几年前的软件测试了这个。我无法保证此示例能够正常运行。