0

在 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

并以错误结束。谢谢你。

4

1 回答 1

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在我现在的电脑上安装,所以我在一台旧电脑上用几年前的软件测试了这个。我不能保证这个例子会奏效。

于 2017-07-13T19:59:06.827 回答