sábado, junio 02, 2007

Ruido blanco limitado en banda.


Si bien el ruido blanco limitado en banda, es decir que tiene un espectro de potencias casi plano en un ancho de frecuencias, no es un proceso de Wiener. Pues este debe tener un espectro plano para cualquier valor de la frecuencia, lo que garantiza que su función de correlación sea una delta de Dirac en cero. Es muy útil a veces contar con un algoritmo que genere un ruido casi blanco ó limitado en frecuencias. Con el siguiente algoritmo obtengo tal cosa para ensayos en representaciones recursivas.

algoritmo blanco
// Algunos valores iniciales
NDATO<- 1000 LAMBDA <-0.01 LARGO <-24000 //genero un conjunto de frecuencias y fases al azar... para i<-1 hasta NDATO hacer F[i]<-parte_entera(sorteo_uniforme()/NDATO)*LAMBDA Face[i]<-parte_entera(sorteo_uniforme()/NDATO) Face[i]<-Face[i]/NDATO Face[i]<-Fase[i]*2*M_PI finpara //Genero en salida estándar la serie temporal para t<-0 hasta LARGO hacer sum<-0.0 para i<-0 hasta NDATO hacer sum<-sum+seno(2*M_PI*FK[i]*t+Face[i]) finpara imprimir t,sum/NDATO finpara finalgoritmo
Como se puede ver en la figura el ancho de banda en un grafo log(S(f)) versuslog(f), donde S(f) es la transformada rápida de Fourier de los datos, es una rendija rectangular. Si bien no es perfecta, es muy aceptable por ser la señal de salida una variable aleatoria continua. Para finalizar, este procedimiento no es similar al usado frecuentemente para generar ruido blanco limitado en banda por medio de la tranformada-antitransformada de Fourier.

2 comentarios:

jose dijo...

aun no he probado si esta rutina en FORTRAN me genera ruido blanco o no, pero es interesante...

X1=constante
i=2,...,n
Xi=rand(Xi-1)
print*,i-1,Xi-1

Saludos

Dementor dijo...

la función rand() es un generador números pseudo aleatórios. Que yo sepa en FORTRAN77 no existe esa función (no sé que pasa con el FORTRAN90) pero si en lenguaje C si existe... Por otro lado el ruido que generás no está limitado en banda.