Sunday 27 August 2017

Moving Average Example Matlab


29 September 2013.Moving rata-rata oleh konvolusi. Apa yang bergerak rata-rata dan apa gunanya. Bagaimana bergerak rata-rata dilakukan dengan menggunakan konvolusi. Moving average adalah operasi sederhana yang biasa digunakan untuk menekan noise dari sinyal yang kita tetapkan nilainya masing-masing. Arahkan ke rata-rata nilai di lingkungannya Dengan formula. Di sinilah x adalah input dan y adalah sinyal output, sedangkan ukuran jendela adalah w, seharusnya aneh Rumus di atas menggambarkan operasi simetris sampel diambil. Dari kedua sisi titik sebenarnya. Berikut adalah contoh kehidupan nyata Titik di mana jendela diletakkan sebenarnya adalah merah Nilai di luar x seharusnya nol. Untuk bermain-main dan melihat efek rata-rata bergerak, lihatlah ini. Demonstrasi interaktif. Bagaimana melakukannya dengan konvolusi. Seperti yang mungkin Anda ketahui, menghitung rata-rata pergerakan sederhana sama dengan konvolusi dalam kedua kasus, sebuah jendela tergelincir sepanjang sinyal dan elemen di jendela diringkas Jadi, cobalah Untuk melakukan Hal yang sama dengan menggunakan konvolusi Gunakan parameter berikut. Output yang diinginkan adalah. Sebagai pendekatan pertama, mari kita coba apa yang kita dapatkan dengan cara mengomunikasikan sinyal x dengan k kernel berikut. Keluarannya persis tiga kali lebih besar dari yang diharapkan. Bisa juga Terlihat, bahwa nilai keluaran adalah rangkuman ketiga elemen di jendela. Karena selama konvolusi jendela meluncur, semua elemen di dalamnya dikalikan dengan satu dan kemudian dirangkum. Yk 1 cdot x 1 cdot x 1 cdot x. Untuk mendapatkan nilai yang diinginkan dari output akan dibagi dengan 3. Dengan formula termasuk pembagiannya. Tapi bukankah optimal melakukan pembagian selama konvolusi. Inilah ide yang diberikan oleh Mengatur ulang persamaan. Jadi kita harus menggunakan k kernel berikut. Dengan cara ini kita akan mendapatkan output yang diinginkan. Secara umum jika kita ingin melakukan moving average dengan konvolusi yang memiliki ukuran jendela w kita akan menggunakan kernel k berikut. Fungsi melakukan moving average. Contoh penggunaan is. Download movAv m lihat juga movAv2 - versi update yang memungkinkan pembobotan. Matriks Matlab mencakup fungsi yang disebut movavg dan tsmovavg time-series moving average di Financial Toolbox, movAv dirancang untuk mereplikasi dasar. Fungsionalitas dari kode di sini memberikan contoh bagus untuk mengelola indeks di dalam loop, yang bisa membingungkan untuk dimulai dengan saya dengan sengaja menyimpan kode pendek dan sederhana agar proses ini tetap jelas. MovAv melakukan rata-rata bergerak sederhana yang dapat dilakukan. Digunakan untuk memulihkan data yang bising dalam beberapa situasi Bekerja dengan mengambil rata-rata masukan y di atas jendela waktu geser, ukuran yang ditentukan oleh n n yang lebih besar adalah, semakin besar jumlah perataan efek n adalah Relatif terhadap panjang vektor input y dan efektif dengan baik, semacam menciptakan filter frekuensi lowpass - lihat contoh dan bagian pertimbangan. Karena jumlah smoothing yang diberikan oleh setiap nilai n relatif terhadap panjang vektor input, maka S selalu layak untuk menguji nilai yang berbeda untuk melihat apa yang sesuai Ingat juga bahwa n poin hilang pada masing-masing rata-rata jika n adalah 100, 99 titik pertama vektor input tidak mengandung cukup data untuk rata-rata 100pt Hal ini dapat dihindari dengan cara menumpuk Rata, misalnya, kode dan grafik di bawah ini membandingkan sejumlah rata-rata panjang jendela yang berbeda Perhatikan seberapa halus 10 10pt dibandingkan dengan rata-rata 20pt tunggal Dalam kedua kasus, 20 titik data hilang total. Buat xaxis x 1 0 01 5 Menghasilkan noise noiseReps 4 noise repmat randn 1, ceil numel x noiseReps, noiseReps, 1 noise reshape noise, 1, noise noise panjang Menghasilkan suara ydata y exp x 10 noise 1 length x Perfrom averages y2 movAv y, 10 10 pt y3 movAv y2, 10 10 10 pt y4 movAv y, 20 20 pt y5 movAv y, 40 40 pt y6 movAv y, 100 100 pt Plot figure plot x, y, y2, y3, y4, y5, y6 legend Raw Data, 10pt moving average, 10 10pt, 20pt, 40pt, 100pt xlabel x ylabel y title Perbandingan moving averages. movAv m code fungsi run-through output movAv y, n Baris pertama mendefinisikan nama fungsi, input dan output Input X harus menjadi vektor data untuk melakukan rata-rata, n harus jumlah titik untuk melakukan rata-rata di atas output akan berisi data rata-rata yang dikembalikan oleh fungsi Preallocate output output NaN 1, numel y Temukan titik tengah ronde midPoint N 2 Tugas utama fungsi dilakukan di for loop, tapi sebelum memulai dua hal yang disiapkan Fir Secara kasar, outputnya sudah dialokasikan sebagai NaNs, ini melayani dua tujuan Pertama, preallokasi pada umumnya adalah praktik yang baik karena mengurangi juggling memori yang harus dilakukan Matlab, kedua, membuat data rata-rata menjadi keluaran dengan ukuran yang sama dengan Vektor input Ini berarti xaxis yang sama dapat digunakan kemudian untuk keduanya, yang sesuai untuk merencanakan, sebagai alternatif NaN dapat dilepas nanti dalam satu baris output output kode. Titik tengah variabel akan digunakan untuk menyelaraskan data pada vektor keluaran Jika n 10, 10 poin akan hilang karena, untuk 9 titik pertama dari vektor input, tidak ada cukup data untuk mengambil nilai rata-rata 10 poin. Karena outputnya akan lebih pendek daripada input, maka perlu diselaraskan dengan benar midPoint akan Digunakan sehingga jumlah data yang sama hilang pada awal dan akhir, dan input dijaga sejajar dengan output oleh buffer NaN yang dibuat saat preallocating output. untuk 1 panjang y - n Temukan rentang indeks untuk mengambil rata-rata di atas abban Hitung Berarti output a MidPoint mean yab end Dalam for loop itu sendiri, mean diambil alih setiap segmen berturut-turut dari input Lingkaran akan berjalan untuk yang didefinisikan sebagai 1 sampai dengan panjang input y, dikurangi data yang akan hilang n Jika Inputnya 100 titik dan n adalah 10, loop akan berjalan dari 1 sampai 90. Ini berarti indeks pertama dari segmen dirata-ratakan. Indeks kedua b hanyalah n-1 Jadi pada iterasi pertama, A 1 n 10 jadi b 11-1 10 Rata-rata pertama diambil di atas yab atau x 1 10 Rata-rata segmen ini, yang merupakan satu nilai, disimpan dalam output pada indeks titik tengah atau 1 5 6. Pada iterasi kedua , A 2 b 2 10-1 11 sehingga mean diambil alih x 2 11 dan disimpan dalam keluaran 7 Pada iterasi terakhir dari loop untuk masukan dengan panjang 100, a 91 b 90 10-1 100 maka meannya diambil. Lebih dari x 91 100 dan disimpan dalam output 95 Ini menghasilkan output dengan total n 10 nilai NaN pada indeks 1 5 dan 96 100. Contoh dan pertimbangan Moving averages berguna dalam beberapa situasi, namun keduanya Tidak selalu pilihan terbaik Berikut adalah dua contoh di mana mereka belum tentu optimal. Kalibrasi Mikrofon Kumpulan data ini mewakili tingkat setiap frekuensi yang dihasilkan oleh speaker dan dicatat oleh mikrofon dengan respons linier yang diketahui Output speaker bervariasi dengan Frekuensi, tapi kita bisa memperbaiki variasi ini dengan data kalibrasi - keluarannya dapat disesuaikan tingkatnya untuk menjelaskan fluktuasi dalam kalibrasi. Tidak seperti data mentah yang bising - ini berarti bahwa perubahan kecil pada frekuensi tampaknya memerlukan Besar, tidak menentu, perubahan tingkat untuk diperhitungkan Apakah ini realistis Atau apakah ini merupakan produk dari lingkungan rekaman? Hal ini wajar dalam hal ini untuk menerapkan rata-rata bergerak yang menghaluskan kurva frekuensi tingkat untuk memberikan kurva kalibrasi yang sedikit kurang tidak menentu. Tapi mengapa tidak optimal dalam contoh ini. Data lebih baik akan lebih baik - beberapa kalibrasi berjalan rata-rata bersama-sama akan menghancurkan kebisingan di sistem asalkan sudah habis. Dom dan memberikan kurva dengan detail yang kurang halus hilang Rata-rata bergerak hanya dapat memperkirakan hal ini, dan dapat menghilangkan beberapa penurunan frekuensi dan puncak yang lebih tinggi dari kurva yang benar-benar ada. Gelombang matahari Menggunakan rata-rata bergerak pada gelombang sinus menyoroti dua titik. Masalah memilih jumlah poin yang masuk akal untuk melakukan rata-rata di atas. Ini s sederhana, namun ada metode analisis sinyal yang lebih efektif daripada rata-rata sinyal osilasi dalam domain waktu. Pada grafik ini, gelombang sinus asli diplot dengan warna biru. Ditambahkan dan diplot sebagai kurva oranye Rata-rata bergerak dilakukan pada sejumlah titik yang berbeda untuk melihat apakah gelombang orisinal dapat dipulihkan 5 dan 10 poin memberikan hasil yang masuk akal, namun jangan menghilangkan suara sama sekali, dimana jumlah titik yang lebih banyak mulai Kehilangan detail amplitudo karena rata-rata meluas melebihi fase yang berbeda mengingat oscilat gelombang sekitar nol, dan mean -1 1 0.Sebuah pendekatan alternatif adalah dengan membangun filter lowpass daripada yang dapat dilakukan. Diterapkan pada sinyal di domain frekuensi Aku tidak akan pergi ke detail karena melampaui lingkup artikel ini, tetapi karena kebisingan adalah frekuensi yang jauh lebih tinggi daripada frekuensi dasar gelombang, akan cukup mudah dalam hal ini untuk membangun Filter lowpass daripada yang akan mengeluarkan noise frekuensi tinggi. Diciptakan pada hari Rabu, 08 Oktober 2008 20 04 Terakhir Diupdate pada Kamis, 14 Maret 2013 01 29 Ditulis oleh Batuhan Osmanoglu Hits 41586.Moving Average Di Matlab. Sering saya menemukan diri saya membutuhkan rata-rata Data saya harus mengurangi kebisingan sedikit aku menulis beberapa fungsi untuk melakukan apa yang saya inginkan, tapi matlab s dibangun di fungsi filter bekerja cukup bagus juga Disini saya akan menulis tentang 1D dan 2D rata-rata data.1D filter dapat Diwujudkan dengan menggunakan fungsi filter Fungsi filter memerlukan setidaknya tiga parameter masukan koefisien pembilang untuk filter b, koefisien penyebut untuk filter a, dan data X tentu saja. Filter rata-rata yang sedang berjalan dapat didefinisikan. D hanya dengan. Untuk data 2D kita dapat menggunakan fungsi filter2 Matlab s Untuk informasi lebih lanjut tentang bagaimana filter bekerja, Anda dapat mengetik. Berikut adalah implementasi cepat dan kotor dari 16 by 16 moving average filter Pertama kita perlu mendefinisikan filter Karena semua yang kita inginkan adalah kontribusi yang setara dari semua tetangga kita bisa menggunakan fungsi tersebut. Kita membagi semuanya dengan 256 16 16 karena kita tidak ingin mengubah amplitudo tingkat umum dari sinyal. Untuk menerapkan filter kita bisa mengatakan hal berikut. Berikut adalah hasil untuk fase interferogram SAR Dalam hal ini Range berada pada sumbu Y dan Azimuth dipetakan pada sumbu X Saringannya lebar 4 piksel dengan lebar Rentang dan 16 piksel di Azimuth.

No comments:

Post a Comment