0

我对编程很陌生,但我有一个问题。我想你可以很容易地回答这个问题。

我有这个代码

    library(seewave)
    library(tuneR)

    date<-"WAHNHEIDE_20120711_"
    clockings<-scan("testfile.txt", what="")
    date.clock<-paste(date,clockings,sep="")

    wave<-readWave("mywav.wav")
    waveenv<-env(wave, f=48000, envt="hil", plot=FALSE)
    thvalue<-th(waveenv)
    wavespec<-meanspec(wave, f=48000, wl=1024, wn="hanning", plot=FALSE)
    shvalue<-sh(wavespec)
    index<-thvalue*shvalue           
    combine<-c(shvalue, thvalue, index)
    write(combine, file="test.txt", append=TRUE, sep="\t")

我构建了一个包含许多要分析的文件名 (*.wav) 的字符串。我可以在“readWave()”部分插入我生成的所有文件名吗?这样我就可以运行脚本并计算在 date.clock 中生成的所有文件的 sh 和 th 值?这是容易还是难以编码?

谢谢您的帮助!干杯托比

好的,我认为这是最简单的方法,因为我只读取 wav 文件。

    library(seewave)
    library(tuneR)

    files<-list.files(pattern=".wav")

    for (i in 1:length(files)) {
    wave<-readWave(files[i])
    waveenv<-env(wave, f=48000, envt="hil", plot=FALSE)
    thvalue<-th(waveenv)
    wavespec<-meanspec(wave, f=48000, wl=1024, wn="hanning", plot=FALSE)
    shvalue<-sh(wavespec)
    index<-thvalue*shvalue           
    combine<-c(shvalue, thvalue, index)
    write(combine, file="test.txt", append=TRUE, sep="\t")
    }

:)

4

1 回答 1

1

这相对容易。一个想法是使用 avector将文件名存储在列表中,并使用 afor-loop对向量中的每个项目执行命令。

使用这些参考资料了解更多信息:

这些信息足以让您入门吗?

于 2013-06-07T10:20:14.917 回答