Sunday 13 August 2017

Moving Average Matlab Nan


Dengan menggunakan MATLAB, bagaimana saya dapat menemukan rata-rata pergerakan 3-hari dari kolom matriks tertentu dan menambahkan rata-rata bergerak ke matriks tersebut. Saya mencoba menghitung rata-rata pergerakan 3 hari dari bawah ke atas matriks yang telah saya berikan Kode. Mengingat matriks berikut a dan mask. I telah mencoba menerapkan perintah konv tapi aku menerima kesalahan Berikut adalah perintah konv Saya telah mencoba untuk menggunakan pada kolom 2 matriks a. The output yang saya inginkan diberikan dalam Berikut matriksnya. 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 yang saya beri nama matriks 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 rata-rata 3 hari 8, 5, 2 adalah 5 Tidak ada nilai di baris 2 bawah untuk kolom ke-4 karena perhitungan untuk rata-rata pergerakan 3-hari dimulai pada Bagian bawah Hasil 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 akan menunjukkan kesalahannya Dalam hal ini Anda melakukan dua hal yang salah. Pertama konvolusi Anda perlu dibagi dengan tiga atau panjang rata-rata bergerak. Kedua, perhatikan ukuran c Anda tidak bisa hanya cocok c ke Cara yang khas untuk mendapatkan rata-rata bergerak akan menggunakan same. but yang doesn t Terlihat seperti apa yang Anda inginkan. Sebaliknya Anda terpaksa menggunakan beberapa baris. Download movAv m juga melihat movAv2 - versi terbaru yang memungkinkan pembobotan. Matlab termasuk fungsi yang disebut movavg dan tsmovavg time-series moving average di Financial Toolbox, movAv adalah Dirancang untuk mereplikasi fungsi dasar dari kode-kode ini di sini memberikan contoh bagus untuk mengelola indeks di dalam loop, yang dapat membingungkan untuk memulai dengan saya dengan sengaja membuat kode tetap pendek dan sederhana agar proses ini tetap bersih. Saya melakukan avera bergerak sederhana. Ge yang dapat 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 relatif terhadap panjang vektor masukan 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 input Vektor, 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 poin pertama dari vektor masukan tidak mengandung cukup data untuk rata-rata 100pt Ini dapat dihindari. Agak dengan menumpuk rata-rata, misalnya, kode dan grafik di bawah 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 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. Movmean A, k mengembalikan sebuah array dari nilai rata-rata k - point lokal, di mana masing-masing mean dihitung di atas jendela geser dengan panjang k pada elemen tetangga A Bila k aneh, Jendela berpusat pada elemen pada posisi saat ini. Bila k adalah genap, jendela berpusat pada elemen arus dan elemen sebelumnya. Ukuran jendela secara otomatis terpotong pada titik akhir bila tidak ada cukup elemen untuk mengisi jendela. Bila jendela terpotong, Rata-rata diambil alih hanya elemen yang mengisi jendela M adalah ukuran yang sama dengan A. If A adalah vektor, kemudian movmean beroperasi sepanjang vektornya. Jika A adalah array multidimensi, maka movmean beroperasi. Sepanjang dimensi array pertama yang ukurannya tidak sama dengan 1.M movmean A, kb kf menghitung mean dengan jendela panjang kb kf 1 yang mencakup elemen pada posisi saat ini, elemen kb mundur, dan elemen kf maju. Movmean, Redup kembali array rata-rata bergerak sepanjang dimensi redup untuk salah satu dari sintaks sebelumnya. Misalnya, jika A adalah matriks, maka movmean A, k, 2 beroperasi di sepanjang kolom A menghitung mean geser k-sederet untuk setiap baris. Movmean, nanflag menentukan apakah akan memasukkan atau menghilangkan nilai NaN dari perhitungan untuk salah satu dari sintaks sebelumnya movmean A, k, includenan mencakup semua nilai NaN dalam perhitungan sementara movmean A, k, omitnan mengabaikannya dan menghitung mean lebih sedikit poin. M movmean, Name, Value menentukan parameter tambahan untuk moving average menggunakan satu atau lebih argumen pasangan nilai nama Misalnya, jika x adalah vektor nilai waktu, maka movmean A, k, SamplePoints, x menghitung moving average relatif terhadap Kali di x. Sele C Negara Anda

No comments:

Post a Comment