Moving Average Data Matlab
Saya perlu menghitung rata-rata bergerak di atas deret data, dalam sebuah for loop saya harus mendapatkan rata-rata bergerak di atas N 9 hari Array yang saya gunakan adalah 4 seri dari 365 nilai M, yang nilainya rata-rata adalah satu set dari Data Saya ingin merencanakan nilai rata-rata dari data saya dengan rata-rata bergerak dalam satu plot. Saya googled sedikit tentang moving averages dan perintah konv dan menemukan sesuatu yang saya coba implementasikan di kode saya. Jadi pada dasarnya, saya menghitung mean dan plot saya. Itu dengan rata-rata bergerak yang salah saya mengambil nilai wts langsung dari situs mathworks, jadi itu sumber yang salah Masalah saya, adalah bahwa saya tidak mengerti apa wts ini Mungkinkah ada yang menjelaskan Jika ada kaitannya dengan bobot Nilai yang tidak benar dalam kasus ini Semua nilai tertimbang sama. Dan jika saya melakukan ini sepenuhnya salah, dapatkah saya mendapatkan pertolongan dengan itu. Terima kasih saya yang tulus. Ikuti 23 September pukul 19 05. Menggunakan konv adalah cara terbaik untuk melakukannya. Menerapkan rata-rata bergerak Dalam kode yang Anda gunakan, wts adalah berapa banyak y Ou menimbang setiap nilai saat Anda menebak jumlah vektor itu harus selalu sama dengan satu Jika Anda ingin memberi bobot setiap nilai secara merata dan lakukan filter bergerak N ukuran maka Anda ingin melakukannya. Dengan menggunakan argumen yang valid dalam konv akan menghasilkan Memiliki nilai lebih sedikit pada Ms daripada yang Anda miliki di M Gunakan sama jika Anda tidak memikirkan efek padding nol Jika Anda memiliki kotak peralatan pemrosesan sinyal, Anda dapat menggunakan cconv jika Anda ingin mencoba rata-rata bergerak melingkar. Misalnya. Anda harus membaca konv Dan dokumentasi cconv untuk informasi lebih lanjut jika Anda belum melakukannya. Download movAv m lihat juga movAv2 - versi terbaru yang memungkinkan pembobotan. Matlab menjelaskan 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 memulai dengan saya dengan sengaja membuat kode tetap pendek dan sederhana agar proses ini tetap bersih. Rforms moving average sederhana yang dapat digunakan untuk memulihkan data yang bising dalam beberapa situasi Ia bekerja dengan cara mengambil rata-rata input y di atas jendela waktu geser, ukurannya ditentukan oleh n n yang lebih besar adalah, semakin besar jumlah Dari smoothing efek n relatif terhadap panjang vektor input y dan efektif dengan baik, semacam menciptakan filter frekuensi lowpass - lihat contoh dan bagian pertimbangan. Karena jumlah perataan yang diberikan oleh setiap nilai n relatif terhadap Panjang vektor input, itu 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 masukan tidak mengandung cukup data untuk rata-rata 100pt Hal ini dapat dihindari agak oleh rata-rata susun, misalnya, kode dan grafik di bawah ini membandingkan sejumlah rata-rata jendela panjang yang berbeda Perhatikan seberapa halus 10 10pt dibandingkan dengan rata-rata 20pt tunggal Dalam kedua kasus, 20 titik data hilang. secara keseluruhan. 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 akan menghilangkan noise frekuensi tinggi. Menggunakan MATLAB, bagaimana saya bisa menemukan rata-rata pergerakan 3 hari dari kolom matriks tertentu dan menambahkan rata-rata bergerak ke matriks itu Saya mencoba untuk menghitung rata-rata pergerakan 3 hari Dari bawah ke atas matriks saya telah memberikan kode saya. Mengingat matriks berikut dan mask. I telah mencoba menerapkan perintah konv tapi saya menerima kesalahan Berikut adalah perintah konv Saya telah mencoba untuk menggunakan pada kolom 2 Matriks a. Output yang saya inginkan diberikan dalam matriks berikut. Jika Anda memiliki saran, saya akan sangat menghargainya. Terima kasih. Untuk kolom 2 dari matriks a, saya menghitung rata-rata pergerakan 3 hari sebagai berikut dan menempatkan hasilnya. Di kolom 4 dari matriks a I rena Matriks med sebagai yang diinginkanOutput hanya untuk ilustrasi Rata-rata 3 hari 17, 14, 11 adalah 14 rata-rata 3 hari 14, 11, 8 adalah 11 rata-rata 3 hari 11, 8, 5 adalah 8 dan 3 Rata rata-rata 8, 5, 2 adalah 5 Tidak ada nilai di baris 2 bawah untuk kolom ke-4 karena penghitungan untuk rata-rata pergerakan 3-hari mulai dari bawah Output yang valid tidak akan ditampilkan sampai setidaknya 17, 14, dan 11 Semoga ini masuk akal Aaron 12 Jun 13 at 1 28. Secara umum akan membantu jika Anda menunjukkan kesalahan Dalam kasus ini Anda melakukan dua hal yang salah. Pertama, konvolusi Anda perlu dibagi tiga atau panjang Rata bergerak. Kedua, perhatikan ukuran c Anda tidak bisa begitu saja memasukkan c ke Cara khas untuk mendapatkan rata-rata bergerak adalah dengan menggunakan same. but yang doesn t terlihat seperti apa yang Anda inginkan. Sebaliknya Anda dipaksa untuk menggunakan pasangan Garis.
Comments
Post a Comment