Multiplicar por una fase lineal para algún entero m corresponde a un desplazamiento circular de la salida : se reemplaza por , donde se interpreta el subíndice módulo N (es decir, periódicamente). XkXkXk-m
Ok, eso funciona bien:
plot a
N = 9
k = [0, 1, 2, 3, 4, 5, 6, 7, 8]
plot ifft(fft(a)*exp(-1j*2*pi*3*k/N))
Cambió en 3 muestras, como esperaba.
Pensé que también podría hacer esto para cambiar por fracciones de una muestra, pero cuando lo intento, mi señal se vuelve imaginaria y no se parece en nada al original:
plot real(ifft(fft(a)*exp(-1j*2*pi*3.5*k/N)))
plot imag(ifft(fft(a)*exp(-1j*2*pi*3.5*k/N))), 'b--'
No esperaba esto en absoluto. ¿No es esto equivalente a convolucionarse con un impulso real que ha sido desplazado por 3.5 muestras? Entonces, ¿el impulso debería ser real y el resultado debería ser real? ¿Y debería tener más o menos la misma forma que el original, pero interpolado sinc?
Respuestas:
Si desea que la salida desplazada de la IFFT sea real, el giro / rotación de fase en el dominio de frecuencia debe ser simétrico conjugado, así como los datos. Esto se puede lograr agregando un desplazamiento apropiado al exponente complejo de exp (), para la pendiente de fase dada, de modo que la fase de la mitad superior (o negativa), módulo 2 Pi, refleje la mitad inferior en la apertura FFT . La función de desplazamiento exponencial compleja también puede hacerse simétrica conjugada indexándola de -N / 2 a N / 2 con una fase de cero en el índice 0.
Sucede que el desplazamiento apropiado para giros de fase o espirales, que completan un número entero exacto múltiplos de 2 rotaciones Pi en la apertura, para ser conjugado simétrico en apertura, es cero.
Con un vector de giro de fase simétrico conjugado, el resultado debería terminar como una interpolación de Sinc circular para cambios no enteros.
Elaboración por OP:
Su elección de k = [0, 1, 2, 3, 4, 5, 6, 7, 8] está produciendo un exponencial complejo asimétrico:
Si usa k = [0, 1, 2, 3, 4, -4, -3, -2, -1] en su lugar, obtendrá un exponencial complejo simétrico de Hermite:
y ahora cuando usa la misma fórmula exponencial para desplazarse por 0.5 o 3.5 muestras, obtiene un resultado real:
fuente
k = [0, 1, 2, 3, 4]
, debería estar usandok = [0, 1, 2, -2, -1]