Transformasi Fourier Tercepat Di Barat

Aspek yang menarik dari bentuk gelombang yang bervariasi terhadap waktu adalah bahwa dengan menggunakan trik yang disebut Transformasi Fourier (FT), bentuk gelombang tersebut dapat direpresentasikan sebagai penjumlahan dari frekuensi dasarnya. Wawasan matematis ini sangat membantu saat memproses sinyal secara digital, dan memungkinkan cara yang lebih sederhana untuk menerapkan filtrasi yang bergantung pada frekuensi dalam sistem digital. [klafyvel] membutuhkan kemampuan ini untuk sebuah proyek, jadi mulailah meneliti metode terbaik yang sesuai dengan Arduino Uno. Dalam upaya untuk memahami dengan tepat apa yang sedang terjadi, mereka telah meningkatkan secara signifikan ukuran kode, waktu eksekusi, dan keakuratan pemakai mahkota sebelumnya.

Transformasi Fourier real-time yang lengkap adalah operasi berat sumber daya yang membutuhkan lebih dari yang dapat ditawarkan Arduino Uno, sehingga perkiraan yang lebih cepat telah dikembangkan selama bertahun-tahun yang menukar presisi absolut dengan kecepatan dan ukuran. Ini dikenal sebagai Fast Fourier Transforms (FFTs). [klafyvel] ditetapkan setelah menyelam jauh ke dalam matematika yang terlibat, serta beberapa teknik pemrograman tingkat rendah untuk mengetahui apakah pertukaran yang ditawarkan dalam solusi yang ada telah dioptimalkan. Hasilnya mengesankan.

Pembandingan kode FFT tercepat menghasilkan ms
Hasil pembandingan menunjukkan kecepatan implementasi versus kompetisi (ApproxFFT)

Tidak puas dengan menghasilkan satu algoritme pemenang penghargaan baru, apa yang didokumentasikan di blog adalah kelas master dalam benar-benar memahami suatu masalah dan tidak kurang dari empat algoritme untuk dipilih tergantung pada bagaimana Anda memberi peringkat pentingnya kecepatan eksekusi, akurasi, kode ukuran atau ukuran array.

Sepanjang jalan, kami disuguhi beberapa pengalihan besar tentang cara memperkirakan float dengan eksponennya (teks Prancis), cara mengontrol, memprogram, dan mengumpulkan data dari Arduino menggunakan Julia, cara meningkatkan kecepatan kode secara besar-besaran dengan menggunakan trigonometri identitas dan bagaimana menangani luapan ketika variabel menjadi terlalu besar. Ada banyak hal yang perlu dicerna di sini, tetapi penjelasannya sangat jelas dan dibumbui dengan potongan kode agar lebih mudah dan jika Anda punya waktu untuk membacanya, Anda pasti akan belajar banyak! Kode ada di GitHub di sini.

Jika Anda tertarik dengan FFT, kami telah melihatnya sebelumnya di sekitar bagian ini. Isi sepatu bot Anda dengan tautan proyek yang diberi tag ini.