Digamos que tenemos un espectro que va desde -X MHz a + X MHz. Necesitaría corregir el error de frecuencia en el espectro cambiando el componente cero al medio (0 Hz).
Si la salida (el espectro de frecuencia) se calcula a través de FFT, hasta donde yo sé, puedo mover el espectro ajustando los 'factores de twiddle' (o coeficientes, para ondas de seno y coseno de datos complejos).
En el caso de un tamaño de 1024 FFT (índices de bin de 0 a 1023), el componente de 0 Hz debe existir en el número de bin 511. Sin embargo, debido a un posible error de frecuencia, el componente de 0 hz puede estar en el bin 510, por ejemplo.
Parece que no puedo encontrar mucha información sobre esto. Cualquier ayuda apreciada.
EDITAR: Error en la pregunta.
fft
frequency
frequency-spectrum
usuario1166780
fuente
fuente
Respuestas:
Si el cambio de frecuencia que desea es un múltiplo del espacio del compartimiento, como en su ejemplo, entonces puede efectuar fácilmente el cambio que desee simplemente girando las salidas FFT por la cantidad de contenedores que necesita. En el caso más común de que el desplazamiento de frecuencia no es un múltiplo entero del espaciado de bin, entonces puede multiplicar la señal por una función exponencial compleja antes de realizar la FFT.
Entonces, si determina que el componente de frecuencia central del que habla está realmente ubicado en la frecuencia Hz en sus datos, y los datos se muestrean a una tasa Hz, entonces para cambiar el espectro de modo que el componente de interés sea a frecuencia cero en la salida FFT, haría:Fo fFs e t Fs
fuente
bueno, la forma más simple es que, si ha utilizado el fourier para encontrar los espectros, y necesita saber su frecuencia por cuánto se desplaza, puede hacer una cosa ...
1) averiguar la respuesta al impulso de ese espectro
2) convolucionarlo con un ruido
3) vea la señal que obtiene 4) tome su FFT solo para asegurarse, si coincide con la anterior
4) y ver los espectros promediando en diferentes partes ... para esto puedo dar un algoritmo ua en el software matemático, que es
en este código, tengo un argumento para tomar pmsesignal, por lo que puede usar su propia señal en lugar de ella ...
No estoy seguro, qué bien lo expliqué, pero esto había funcionado en mi caso ...
¡Salud!
fuente