The pergeseran Teorema mengatakan :
Mengalikan dengan fase linear e 2 π i untuk suatu bilangan bulatmsesuai denganpergeseran melingkardari outputXk:Xkdiganti denganXk-m, di mana subscript yang ditafsirkan moduloN(yaitu, secara berkala).
Ok, itu berfungsi dengan baik:
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))
Itu bergeser 3 sampel, seperti yang saya harapkan.
Saya pikir Anda juga bisa melakukan ini untuk menggeser fraksi sampel, tetapi ketika saya mencobanya, sinyal saya menjadi imajiner dan sama sekali tidak seperti aslinya:
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--'
Saya tidak mengharapkan ini sama sekali. Bukankah ini setara dengan berbelit-belit dengan dorongan nyata yang telah digeser oleh 3,5 sampel? Jadi dorongan itu harus tetap nyata, dan hasilnya harus tetap nyata? Dan itu seharusnya memiliki bentuk yang kurang lebih sama dengan aslinya, tetapi diinterpolasi dengan tulus?
Jawaban:
Jika Anda ingin output bergeser dari IFFT menjadi nyata, fase twist / rotasi dalam domain frekuensi harus konjugat simetris, serta data. Ini dapat dilakukan dengan menambahkan offset yang sesuai ke eksponen exp () kompleks Anda, untuk kemiringan fase yang diberikan, sehingga fase setengah atas (atau negatif), modulo 2 Pi, mencerminkan bagian bawah di aperture FFT . Fungsi pergeseran eksponensial yang kompleks juga dapat dibuat simetris konjugat dengan mengindeksnya dari -N / 2 ke N / 2 dengan fase nol pada indeks 0.
Kebetulan offset yang tepat untuk lilitan atau spiral fase, yang menyelesaikan kelipatan integer yang tepat dari rotasi 2 Pi dalam aperture, untuk menjadi konjugat simetris dalam aperture, adalah nol.
Dengan vektor twist fase simetris konjugat, hasilnya kemudian harus berakhir sebagai interpolasi Sinc melingkar untuk pergeseran non-integer.
Elaborasi oleh OP:
Pilihan Anda k = [0, 1, 2, 3, 4, 5, 6, 7, 8] menghasilkan eksponensial kompleks asimetris:
Jika Anda menggunakan k = [0, 1, 2, 3, 4, -4, -3, -2, -1] sebagai gantinya, Anda mendapatkan eksponensial kompleks Hermite-simetris:
dan sekarang ketika Anda menggunakan rumus eksponensial yang sama untuk menggeser 0,5 atau 3,5 sampel, Anda mendapatkan hasil nyata:
sumber
k = [0, 1, 2, 3, 4]
, saya harus menggunakank = [0, 1, 2, -2, -1]