Konjugat kompleks dan IFFT

8

Saya mengajukan pertanyaan pada stack overflow .

Namun saya mengalami sedikit masalah. Seperti yang disarankan oleh Paul RI sedang mencerminkan bagian bawahkun/2nampan ke nampan atas.n/2

Namun saya punya beberapa pertanyaan.

  • Saya berasumsi adalah ? Jadi untuk pesanan 10 IFFT saya akan mencerminkan tempat frekuensi 512 bawah ke 512 teratas? Ini juga akan menghasilkan saya 1024 sampel nyata pada akhirnya?n2fftHAIrder
  • Ketika mirroring apakah ini berarti bahwa bin 0 akan pergi ke bin , bin 1 ke bin dan seterusnya?n-1n-2
  • Saya tampaknya mendapatkan semacam refleksi pada seperempat frekuensi pengambilan sampel saya? Ini berarti bahwa bagian atas dari rentang frekuensi saya sebenarnya muncul di bagian bawah. Adakah yang tahu mengapa?
  • Adakah yang tahu mengapa saya mendapatkan efek striping di mana saya mendapatkan 512 sampel satu magnitudo dan 512 berikutnya yang berbeda? (Ini "bisa" dari mana mirroring saya berasal)

Saya pikir itu untuk saat ini. Bantuan apa pun akan sangat membantu !!

Sunting: Memberi Anda gambar refleksi akan cukup dekat mustahil karena sangat sulit untuk dilihat! Pada dasarnya saya mengambil sampel pada 22 kHz dan mendapatkan apa-apa selain "noise" di atas 11 kHz. Apa yang "seharusnya" (walaupun jelas saya melakukan sesuatu yang salah) berada di atas 11 kHz tampaknya tercermin dari 11 kHz ke 0. Sangat aneh.

Adapun gambar garis-garis mereka dapat dilihat di sini

Setiap strip, saya percaya, memiliki lebar 512 sampel.

Goz
sumber
Saya tidak jelas apa yang Anda maksud dengan: 1) beberapa bentuk refleksi di fs / 4 dan 2) efek striping ... Bisakah Anda memberikan gambar yang menunjukkan plot spektrogram / fft Anda menunjukkan apa yang Anda maksud dengan ini ? Saya dapat mengasumsikan apa yang Anda maksudkan, tetapi itu tidak akan sangat membantu.
Lorem Ipsum
Saya dengan yoda gagal memahami deskripsi Anda, tetapi mirroring bin 0 to n-1 jelas terdengar salah. Bin 0 mewakili DC dan tidak boleh dicerminkan di mana saja. Jika n bahkan, maka Bin n / 2 juga membutuhkan penanganan khusus. Juga, saya akan menyarankan untuk tidak memanggil 1024-point IFFT order-10 IFFT karena terminologi ini lebih cenderung membingungkan daripada membantu.
Dilip Sarwate
@ yoda: Diperbarui.
Goz
@Dilip Sarwate: Permintaan maaf, sangat sulit untuk dijelaskan dan bahkan lebih sulit untuk dilihat.
Goz
@ Adakah kapak?
Lorem Ipsum

Jawaban:

4

Saya tidak yakin apa yang Anda maksud dengan "refleksi" atau "striping," tetapi Anda ingin menduplikasi poin data Anda sedemikian rupa sehingga sinyal domain frekuensi (input ke IFFT) adalah konjugat simetris konjugat. Itu artinya, untukN bahkan:

X[k]=X[N-k],k=1,2,...,N2-1

Catat itu kberbasis nol; elemen pertama dalam vektor adalahX[0]. Di atas menunjukkan bahwa Anda tidak menduplikat nol danN2elemen -th dalam vektor input. Hubungan ini didasarkan pada periodisitas transformasi Fourier diskrit ; bagian pertama dari vektor domain frekuensi berhubungan dengan frekuensi "positif" yang mencakup rentang frekuensi sudut0 untuk (N-1)πN. Babak kedua mencakup dariπ untuk (N-1)2πN, yang, mengambil keuntungan dari 2π periodisitas dalam domain frekuensi, setara dengan -π untuk -2πN. Agar vektor domain frekuensi memiliki simetri konjugat, maka dapat dengan mudah ditunjukkan bahwa hubungan di atas harus benar.

Berbicara dengan tujuan awal Anda untuk mengubah spektogram menjadi sinyal audio yang terdengar bermakna, tidak ada jaminan bahwa apa yang Anda dapatkan akan dengan cara apa pun menyenangkan. Seperti yang ditunjukkan pada Stack Overflow, spektrogram tidak memiliki informasi fase; metode yang disarankan di sana mengasumsikan fase dari setiap nampan domain frekuensi adalah nol (sehingga operasi konjugasi yang ditunjukkan di atas berlebihan). Sementara telinga manusia tidak terlalu peka terhadap distorsi fase dalam audio, Anda mungkin harus melakukan hal lain tergantung pada apa yang ingin Anda capai.

Jason R
sumber
3

Indeks [0] Anda adalah komponen DC dan tidak boleh dicerminkan. Titik refleksi harus (N / 2) +1

Dan Barry
sumber
1

Katakanlah Anda memiliki urutan nyata 1024 poin. FFT kompleks mengubahnya menjadi 1024 bilangan kompleks. Namun X [0] (DC) dan X [512] Nyuist adalah nyata dan X [1] .. X [511] adalah konjugat simetris sehingga seluruh spektrum masih dapat diwakili dengan angka 1024 (2 real dan 511 kompleks). Katakanlah Anda memiliki spektrum setengah sisi X [0] ... x [512] dan ingin membuat versi simetris konjugatnya Y [0] ... Y [1023]. Lakukan yang berikut

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])

Jika Anda menggunakan Matlab, Anda perlu menambahkan "1" ke semua indeks karena Matlab mulai menghitung pada 1 (bukan pada 0).

Hilmar
sumber
0

Refleksi normal: Ini disebut aliasing, atau lipat frekuensi, dan itu terjadi ketika sinyal yang Anda sampel melebihi apa yang disebut frekuensi Nyquist, yang kebetulan setengah frekuensi pengambilan sampel Anda. Idealnya, Anda ingin frekuensi sampling setidaknya dua kali frekuensi sinyal yang Anda sampling, untuk alasan inilah.

Thomas Lust
sumber