Matematika

Scilab FFT HOWTO

Scilab FFT HOWTO
Scilab adalah alat yang hebat untuk banyak kegunaan dalam pekerjaan ilmiah dan teknik engineering. Artikel ini akan membahas kasus khusus FFT, Fast Fourier Transform.

Pertama, mari kita perjelas apa itu Transformasi Fourier cepat dan mengapa Anda ingin menggunakannya. Matematika adalah tentang frekuensi. Transformasi Fourier adalah metode untuk memilih gelombang yang lebih kecil dalam gelombang yang kompleks. Itu terdengar rumit; ketika Anda mendengarkan musik, Anda mendengar banyak nada berbeda dari penyanyi, instrumen, dan sebagainya. Sebagai manusia, kita sering dapat mendengar gitar sendiri tetapi mencoba untuk memilihnya dengan teknologi dalam rekaman dan Anda mengalami masalah. Teknologi modern dapat melakukannya, berkat berbagai inkarnasi persamaan Fourier dasar yang dikembangkan selama bertahun-tahun. Penggunaan modern dari seri Fourier adalah kompresi gambar dan video, pemindaian GPS dan MRI. Semua ini membuat perkiraan sumber dan menggunakan seri Fourier untuk menghemat memori dan mendapatkan hasil yang lebih cepat.

Ahli matematika Jean-Baptiste Joseph Fourier sebenarnya mencoba memecahkan persamaan panas, untuk memungkinkan menghitung bagaimana panas merambat dalam benda padat. Apa yang dia temukan jauh lebih berguna dari itu, meskipun metodenya kemudian ditingkatkan ke versi yang lebih formal. Persamaan sekarang digunakan dalam berbagai bidang.

Untuk memilih frekuensi tertentu dalam sinyal kompleks, Anda dapat menggunakan beberapa perhitungan, Transformasi Fourier Cepat Fast. Dasar matematika untuk ini membutuhkan beberapa latihan. Khan Academy adalah tempat yang bagus untuk belajar matematika.

Saat Anda perlu menganalisis gelombang apa pun, Anda dapat menggunakan fungsi sinus untuk memperkirakan gelombang total dan mendapatkan semua sinyal terpisah dari gelombang campuran. Atau sebaliknya, Anda dapat membuat gelombang kompleks dari beberapa gelombang sinus. Ini adalah ide dasar di balik matematika.

Untuk memahami Transformasi Fourier Anda dengan lebih baik, praktik yang baik adalah menulisnya sendiri. Di Scilab Anda memiliki bahasa pemrograman sederhana yang dirancang dengan penekanan pada matematika.
Berbagai tugas yang Anda perlukan Transformasi Fourier dimulai dengan mencari koefisien transformasi. Alasannya adalah bahwa inilah yang digunakan untuk kompresi gambar dan banyak proses lainnya.

Saat Anda mempelajari dasar-dasar deret, hal pertama yang digunakan adalah koefisien. Persamaannya seperti ini:

Kode untuk menyelesaikannya cukup sederhana, dimulai dengan sebuah fungsi. Fungsi ini mengimplementasikan Transformasi Fourier dalam potongan-potongan kecil.
Untuk mendefinisikan suatu fungsi, Anda menggunakan konstruksi 'fungsi' yang jelas. Di bawah ini adalah deret fourier untuk gelombang persegi:

fungsi y=f(z)
y=4*sin(t)/1*%pi + 4*sin(3*t)/3*%pi + 4*sin(5*t)/5*%pi + 4*sin(7*t) /7*%pi
+ 4*sin(9*t)/9*%pi
fungsi akhir

Untuk membuat gelombang lebih persegi, ini adalah perkiraan, Anda harus terus meningkatkan jumlah suku number. Saat Anda ingin membuat ulang sebuah pola, katakanlah kartun, Anda menggunakan transformasi Fourier dengan cara yang sangat mirip. Anda hanya perlu mempertimbangkan periode sebagai tak terbatas.

Sederhana kan?? Yah, bukan tanpa pengetahuan matematika dasar. Cobalah beberapa contoh sendiri, menggunakan scilab.

Contoh ini menunjukkan kemungkinan kombinasi sinyal yang paling sederhana; dua sinyal frekuensi yang berbeda.

//Pilih ukuran sampel
 
N = 100;
 
// Atur urutannya, ini membuat array
 
n = 0:N-1;
 
//Buat frekuensi sinyal
 
w1 = %pi/4
 
w2 = %pi/8
 
//Buat sinyal sampel
 
s1 = cos(w1*n);// Komponen pertama dari sinyal
 
s2 = cos(w2*n);// Komponen kedua dari sinyal
 
//Gabungkan keduanya menjadi satu sinyal
//Dalam hal ini kita membuat sinyal bersih sederhana.
 
f = s1 + s2;
 
//Ini adalah sinyal yang dihasilkan siap untuk ditransformasikan.
 
angka (0);
plot(p);
 
// Transformasi Fourier dari sinyal ini seharusnya hanya menunjukkan frekuensi komponen.
 
F = ft(f);
 
F_abs = perut(F);
 
Gambar 1);
plot(n,F_abs);
 
Gambar 2);
plot(P);

Gunakan contoh di atas untuk mempraktikkan cara kerja transformasi. Pastikan Anda mengubahnya untuk memfilter dengan cara yang berbeda.

Tip adalah dengan menggunakan konsol Scilab untuk melihat variabel apa yang ada di setiap langkah program, dengan cara ini Anda juga dapat melihat bahwa 'F' memiliki konten imajiner. Cobalah untuk mengubah fä dengan cara lain untuk mendapatkan hasil yang lebih benar.

Dalam industri, penggunaan Transformasi Fourier yang paling umum adalah untuk menganalisis sinyal. Untuk menyaring frekuensi dari sinyal yang bising, Anda harus mulai dengan membuat, atau mengimpor sinyal.  Cuplikan kode berikut membuat sinyal campuran dari dua frekuensi, 50 dan 70 hz. Dalam kode Anda juga dapat melihat penggunaan 'grand', ini adalah panggilan scilab ke acak. Nilai acak ini ditambahkan untuk membuat sinyal sedikit lebih berisik, lebih mendekati kenyataan.

sample_rate=1000;
t = 0:1/laju_sampel:0.6;
N=ukuran(t,'*'); //jumlah sampel
s=sin(2*%pi*50*t)+sin(2*%pi*70*t+%pi/4)+grand(1,N,'nor',0,1);
Sekarang, Anda dapat memplot 's' sebagai fungsi dari 't' dan melihat grafiknya terlihat berantakan.
>> plot(t,s);

Di sini, saatnya untuk mencoba transformasi fourier yang paling sederhana, jadikan 'y' sebagai transformasi fourier dari s.

y=fft(s);

fft

Jika Anda memplot 'y' sebagai fungsi dari 't', Anda mendapatkan pola yang agak simetris mulai dari 0 hingga 0.6. Dua paku adalah apa yang kami cari tetapi kami sekarang melihatnya di domain waktu. Apa yang sebenarnya terjadi adalah hasilnya masih mengandung nilai-nilai imajiner. Untuk menemukan dua frekuensi dalam domain frekuensi, kita memerlukan beberapa operasi lagi untuk menemukan hanya bilangan real. Dan kemudian Anda mengambil nilai absolut dari hasilnya. Grafik dengan jelas menunjukkan frekuensi asli.

Berikut kodenya:

//s adalah nyata sehingga respons fft adalah simetris konjugasi dan kami hanya mempertahankan yang pertama
N/2 poin
f=kecepatan_sampel*(0:(N/2))/N; //vektor frekuensi terkait
n=ukuran(f,'*')
clf()
plot(f,absy(1:n)))

Ini adalah penggunaan paling umum dari transformasi Fourierier. Dengan menggunakan sistem ini, Anda dapat menemukan frekuensi apa pun dalam sinyal yang kompleks dan bising. Persamaan ini banyak digunakan di banyak industri saat ini.
Fungsi fft2 dari Scilab adalah versi dua dimensi dari transformasi fourier cepat.

Salah satu cara yang bagus untuk berlatih adalah memilih nada DTMF, membuat satu tekan tombol dan meminta scilab menemukan kunci yang benar.

Demo di Scilab sendiri berisi showcase file suara, pelajari itu.

Jika Anda ingin menggali lebih dalam, berikut adalah beberapa tautan untuk bacaan lebih lanjut.

Sastra tingkat lanjut:

https://cnx.org/contents/[email protected]/Implementing-FFTs-in-Practice#uid8

Wolfram…

http://demonstrasi.serigala.com/ComplexAndRealPlanesOfDiscreteFourierTransforms/

Menerapkan dalam bahasa lain:

https://www.nayuki.io/page/how-to-implement-the-discrete-fourier-transform

Untuk mendapatkan nuansa yang tepat untuk subjek:

https://terjelaskan.com/articles/an-interactive-guide-to-the-fourier-transform/

Shadow of the Tomb Raider untuk Tutorial Linux
Shadow of the Tomb Raider adalah tambahan kedua belas untuk seri Tomb Raider - waralaba game aksi-petualangan yang dibuat oleh Eidos Montreal. Permain...
Cara Meningkatkan FPS di Linux?
FPS adalah singkatan dari Bingkai per detik. Tugas FPS adalah mengukur kecepatan bingkai dalam pemutaran video atau pertunjukan game. Dengan kata sede...
Game Lab Aplikasi Oculus Teratas
Jika Anda adalah pemilik headset Oculus maka Anda harus tahu tentang sideloading. Sideloading adalah proses menginstal konten non-toko di headset Anda...