Disculpa elgarbe que no te pueda dar una solucion certera ya que conosco mas que nada la parte teorica de esto.
Estoy bastante lejos de las respuestas, por lo que cualquier dato sirve!
Lo unico que se me ocurre es que puedas tirar una (o algunas para promediar) muestra de solamente el ruido y luego con las señales, como para tener una base.
Yo pensé algo de eso y puedo intentarlo. El tema es que el piso del ruido se debe muestrar y verificar junto con las señales de la DPOAE ya que es un criterio para descartar o no cada ensayo
No se como todavia mediste los dB SPL, imagino que ya tenes una medida de los 20uP(0db SPL o alguna otra medida de calibracion) para hacer una referencia de los dB SPL.
Si ya tenes esa referencia y tiras unas muestras como para promediarlo al ruido podrias medirlo (conseguis tu valor medio de ruido).
Por ahora es todo simulacion. Cuando pasemos a la realidad, el parlante te da la curva de cuántos db SPL da para cada frecuencia con cierta exitacion. El codec trae aplificador digital integrado, entonces uno puede variar la amplitud de la salida y en funcion de eso serán los db SPL de salida. Tenemos un oido artificial para realizar calibraciones, pero por ahora estamos en la parte de simulacion, mi socio esta terminando el primer prototipo de esta primer parte del proyecto para hacer pruebas reales.
En la literatura dice que debemos exitar al oido con dos frecuencias y con amplitud 60db spl y 66 db spl (mas o menos) y el oido responde con otra señal de frecuencia 2f1-f2 y con una amplitud de entre -5 y 15 Db SPL.
Bueno, en simulacion yo creo esas 3 señales, le sumo ruido y corro el algoritomo que permite promediar sincrónicamente muchos ensayos.
Le estaré errando al cálculo de la amplitud a poner en matlab para cada amplitud de cada señal?
La desviacion estandar por lo que dice la formula (si no me estoy equivocando) basicamente implica que la señal deberia ser 3 veces mas grande que el ruido ( si es que se compara con el ruido - media sacada anteriormente), suponiendo una muestra nomas. Que seria la final, en la formula N= 1 , u=valor medio de ruido, x= señal en cuestion
Ok, pero primero, como se calcula el piso de ruido? supongamos que muestreo 1 segundo de ruido, que operacion se realiza sobre esas muestras para determinar el piso de ruido? se saca la fft y el valor de cada punto en la fft es el valor del piso de ruido? o, se promedian valores de la fft alrededor de la frecuencia que nos interesa conocer el piso de ruido? eso es lo primero que me falta.
Con respecto al tema del ADC de 16 y 24 bits. Lo mejor es el de 24bits, ya que al aumentar la cantidad de bits disminuye el error de cuantizacion ( y que es tambien un ruido ) bajando un poco mas el ruido que entra a las muestras.
Por otro lado tenes que ser capaz de no saturar el ADC sino ahi metes errores, asi que deberia ser capaz de llegar a unos 70 db SPL (por dar un ejemeplo), si hay algo mayor a los 66 db SPL eso descartar la muestra por ruido.
Si, eso es cierto, pero me equivoco en pensar que si quiero medir algo de 70db junto con algo de 0db, es numericamente imposible con 16 bits? digo, con 16 bits tengo +-32700 cuentas. 70db es mas de 2000 veces mayor que 0db por lo que si ajusto la ganancia para que 32700 sea 70db, entonces 0db será del orden de las 16 cuentas... si es así, es numericamente imposible medir esas dos señales juntas... no?
Y un por las dudas:
Measuring signal-to-noise ratios requires the selection of a representative or reference signal. In audio engineering, the reference signal is usually a sine wave at a standardized nominal or alignment level, such as 1 kHz at +4 dBu (1.228 VRMS).
A lo que me refiero con esto es que puedas usar una de tus funciones para encontrar el SNR y asi saber donde esta tu piso de ruido.
http://dsp.stackexchange.com/questions/17871/how-to-calculate-signal-to-noise-ratio
Estudio esto y veo si saco algo que me sirva. Gracias!
Una cosa que por ahi no entiendo, es por que dejar las f1 y f2 y no removerlas. asi uno puede amplificar la señal con el ruido (aunque no se si se ganaria algo haciendolo y por ahi se vuelva muy complicado hacerlo analogicamente, digitalmente parece mucho mas simple, pero era para resolver el rango dinamico del ADC)
Finalmente no se si te ayude o te la complique, en fin, yo me baso que el ruido es algo totalmente aleatoreo, si promedias como ves, vas encontras la señal (y aumentas el SNR), la señal va a aparecer sola por ser de un caracter no aleatorio.
El tema es que yo envío f1 y f2 y si o si recivo f1, f2 y fdp. Por lo que debo ajustar la ganancia del ADC para llegar a 70db como vos dijiste. No puedo eliminar f1 y f2. Lo que podría hacer es, usando el adc de 24 bits leer las señales, eliminar de algun modo f1 y f2 y luego tratar de amplificar la señal y el ruido. Luego con promedidado sincrónico elimino el ruido. Creo que vi a alguien aplicar un metodo similar a esto, pero es bastante mas complejo.
Saludos y gracias por la ayuda!