Search code examples
rsignal-processingnoisenoise-generator

How to simulate pink noise in R


I know that white noise can be achieved by treating the output of rnorm() as a timeseries. Any suggestions on how to simulate pink noise?


Solution

  • Package tuneR has noise function which can generate a wave object that is either white or pink noise:

    require(tuneR)
    w <- noise(kind = c("white"))
    p <- noise(kind = c("pink"))
    par(mfrow=c(2,1))
    plot(w,main="white noise")
    plot(p,main="pink noise")
    

    EDIT: I realized that the method above doesn't generate the vector (doh). Brutal way to convert it into the vector is to add the code below:

    writeWave(p,"p.wav")#writes pink noise on your hard drive
    require(audio)#loads `audio` package to use `load.wave` function
    p.vec <- load.wave("path/to/p.wav")#this will load pink noise as a vector
    

    enter image description here