Inilah masalahnya. Saya memiliki data array 2D, kolom pertama mewakili data waktu dan kolom kedua mewakili data respons sinusoidal, berdasarkan data waktu. Saya menerapkan fft dan saya mendapatkan frekuensi saya (yang saya mulai dengan) di tempat sampah tertentu seperti yang saya harapkan dan saya menemukan amplitudo dan sudut fase dari tempat sampah itu. Sekarang masalahnya adalah saya memiliki pengaturan yang sama tetapi dengan lebih banyak titik data, saya menerapkan fft lagi dan perubahan nomor bin (yang normal dan itu yang saya harapkan), amplitudo sama tetapi sudut fase berbeda) pertama apakah ini normal? kedua, pendekatan apa yang harus saya ambil? Terima kasih
PS: tak satu pun dari set up (disebutkan di atas) memberikan data panjang daya 2, katakan yang pertama memberikan 1620 poin data dan yang kedua memberikan 1745 poin data, jadi harus mengambil kekuatan berikutnya 2 untuk keduanya dari awal?
Tidak ada yang secara inheren 'ajaib' tentang melakukan kekuatan 2 DFT, selain fakta bahwa melakukan kekuatan 2 DFT memungkinkan seseorang untuk melakukan DFT diO ( Nl o g( N) ) dari pada O (N2) . Jadi kekuatan 2 DFT, ( Algoritma yang melakukan ini dikenal sebagai FFT), memungkinkan Anda untuk hanya mempercepat perhitungan DFT Anda dengan faktor yang sangat besar.
Jika Anda melakukan DFT lebih besar dari vektor data Anda, pada dasarnya Anda akan melakukan interpolasi dalam domain frekuensi. Dengan demikian, puncak baru Anda mungkin bukan puncak setara lama yang pertama kali Anda deteksi, sebelum Anda mengambil DFT yang lebih besar. Dan karena tidak sama, Anda pada dasarnya memilih basis eksponensial kompleks (sinus plus kosinus) yang berbeda kali ini, artinya Anda kemungkinan memiliki nilai fase yang berbeda, ya.
Ya, jika Anda ingin mengambil kekuatan 2 FFT, maka Anda cukup memilih kekuatan FFT 2 panjang berikutnya yang lebih besar dari panjang catatan data Anda.
Anda tidak boleh mengambil FFT dengan panjang kurang dari panjang catatan Anda, kecuali jika Anda ingin membuang data. Pertanyaan "Seberapa besar kebutuhan FFT saya", dengan asumsi panjang FFT lebih besar dari panjang catatan data Anda, kemudian dengan cepat menjadi ketergantungan aplikasi. Biasanya Anda bisa lolos dengan panjang FFT sama dengan panjang catatan Anda. Namun, terkadang Anda ingin memilih puncak dari FFT yang 'lebih halus'. Dalam hal ini, Anda dapat mengambil panjang FFT yang lebih besar, (2 kali lebih banyak, 3 kali lebih banyak, 10 kali lebih banyak, dll), dan Anda akan menginterpolasi puncak Anda dalam domain frekuensi. Namun, tidak ada angka ajaib. Ingatlah bahwa rincian hasil FFT Anda selalufsN .
sumber
Menampilkan jawaban @ user4619:
Menggunakan IPython, yang mirip dengan Matlab
Jika Anda menggunakan bilangan prima, agak penting (faktor 50!). Jika Anda menggunakan angka yang memiliki faktor rendah, tidak penting. Tetapi melakukannya dengan hanya bilangan prima hanya melakukannya lebih cepat - itu tidak mengubah jawaban sama sekali.
sumber