Conjugado complejo e IFFT

8

Hice una pregunta sobre el desbordamiento de la pila .

Sin embargo, estoy teniendo un pequeño problema. Según lo sugerido por Paul RI estoy reflejando mis inferiores compartimientos superiores en los n / 2 contenedores.n / 2n/2n/2

Sin embargo, tengo algunas preguntas.

  • ¿ Asumo que n es 2fftOrder ? Por lo tanto, para un pedido de 10 IFFT, ¿estaría reflejando los 512 contenedores de frecuencia inferiores en los 512 superiores? ¿Esto también me produciría 1024 muestras reales al final?
  • ¿Al reflejar esto significa que bin 0 iría a bin n1 , bin 1 a bin n2 y así sucesivamente?
  • ¿Parece que estoy obteniendo algún tipo de reflexión a una cuarta parte de mi frecuencia de muestreo? Esto significa que la mitad superior de mi rango de frecuencia en realidad aparece sobre la mitad inferior. ¿Alguien alguna idea de por qué?
  • ¿Alguien tiene alguna idea de por qué obtengo un efecto de rayas donde obtengo 512 muestras de una magnitud y las siguientes 512 de una diferente? (Este "podría" ser de donde viene mi reflejo)

Creo que eso es todo por ahora. ¡Cualquier ayuda sería de gran ayuda!

Editar: ¡Darle una imagen del reflejo será casi imposible ya que es muy difícil de ver! Básicamente estoy muestreando a 22 kHz y obteniendo nada más que "ruido" por encima de 11 kHz. Lo que "debería" (aunque obviamente estoy haciendo algo mal) estar por encima de 11 kHz parece reflejarse hacia abajo de 11 kHz a 0. Es muy extraño.

En cuanto a la imagen de las rayas, se pueden ver aquí.

Creo que cada franja tiene 512 muestras de ancho.

Goz
fuente
No tengo claro qué quiere decir exactamente con: 1) alguna forma de reflexión en fs / 4 y 2) efecto de franjas ... ¿Podría tal vez proporcionar una figura que muestre su espectrograma / trama fft señalando lo que quiere decir con estos ? Puedo asumir lo que quieres decir, pero eso no sería muy útil.
Lorem Ipsum
Estoy con yoda al no entender su descripción, pero duplicar bin 0 a n-1 definitivamente suena incorrecto. Bin 0 representa DC y no debe reflejarse en ningún lado. Si n es par, entonces Bin n / 2 también necesita un manejo especial. Además, recomendaría no llamar a un IFFT de 1024 puntos un IFFT de orden 10 ya que es más probable que esta terminología confunda que ayude.
Dilip Sarwate
@yoda: actualizado.
Goz
@Dilip Sarwate: Disculpas, es muy difícil de describir e incluso más difícil de ver.
Goz
@Goz, ¿cuáles son los ejes?
Lorem Ipsum

Respuestas:

4

No estoy seguro de a qué te refieres con "reflexión" o "franjas", pero quieres duplicar tus puntos de datos de tal manera que la señal del dominio de frecuencia (la entrada al IFFT) sea simétrica conjugada. Eso significa, para incluso:N

X[k]=X[Nk],k=1,2,,N21

Tenga en cuenta que está basado en cero; El primer elemento en el vector es X [ 0 ] . Lo anterior indica que no duplica el cero y NkX[0] elementos en el vector de entrada. Esta relación se basa en la periodicidad de latransformada discreta de Fourier; la primera mitad del vector de dominio de frecuencia corresponde a frecuencias "positivas" que cubren el rango de frecuencia angular de0a(N-1)πN20 . La segunda mitad cubre deπa(N-1)2π(N1)πNπ , que, aprovechando laperiodicidad de2πen el dominio de la frecuencia, es equivalente a-πa-2π(N1)2πN2ππ . Para que el vector de dominio de frecuencia tenga simetría conjugada, se puede demostrar fácilmente que la relación anterior debe ser verdadera.2πN

Hablando de su objetivo original de convertir un espectrograma en una señal de audio que suena significativa, no hay garantía de que lo que obtenga sea de alguna manera agradable. Como se señaló en Stack Overflow, el espectrograma no tiene información de fase; el método sugerido allí supone que la fase de cada bin del dominio de frecuencia es cero (por lo que la operación conjugada que se muestra arriba es superflua) Si bien el oído humano no es terriblemente sensible a la distorsión de fase en el audio, es posible que tenga que hacer otra cosa dependiendo de lo que espera lograr.

Jason R
fuente
3

Su índice [0] es el componente DC y no debe reflejarse. El punto de reflexión debe ser (N / 2) +1

Dan Barry
fuente
1

Digamos que tienes una secuencia real de 1024 puntos. Un FFT complejo convierte eso en 1024 números complejos. Sin embargo, X [0] (DC) y X [512] Nyuist son reales y X [1] .. X [511] son ​​simétricos conjugados, por lo que todo el espectro aún puede representarse con 1024 números (2 reales y 511 complejos). Supongamos que tiene un espectro de media cara X [0] ... x [512] y desea crear la versión simétrica conjugada de él Y [0] ... Y [1023]. Haz lo siguiente

Y[0] = X[0], Y[1] = X[1] .... Y[512] = X[512];
Y[513] = conjugate(X[511]), Y[514] = conjugate(X[510]) ... Y[1023] = conjugate(X[1])

Si usa Matlab, debe agregar "1" a todos los índices, ya que Matlab comienza a contar en 1 (no en 0).

Hilmar
fuente
0

La reflexión es normal: se llama aliasing o plegamiento de frecuencia, y ocurre cuando la señal que está muestreando excede la llamada frecuencia de Nyquist, que es la mitad de su frecuencia de muestreo. Idealmente, desea una frecuencia de muestreo de al menos el doble de la frecuencia de la señal que está muestreando, precisamente por esta razón.

Thomas Lust
fuente