Tuesday 25 July 2017

Rata Rata Tertimbang Filter Matlab


Saya perlu menghitung rata-rata bergerak di atas rangkaian data, dalam satu untuk loop. Saya harus mendapatkan rata-rata bergerak selama N9 hari. Komputasi Im array adalah 4 seri dari 365 nilai (M), yang merupakan nilai rata-rata dari seperangkat data lainnya. Saya ingin merencanakan nilai rata-rata data saya dengan rata-rata bergerak dalam satu plot. Aku googled sedikit tentang bergerak rata-rata dan perintah konv dan menemukan sesuatu yang saya mencoba menerapkan dalam kode saya .: Jadi pada dasarnya, saya menghitung maksud saya dan plot dengan moving average (salah). Aku mengambil nilai wts langsung dari situs mathworks, jadi itu tidak benar. (Sumber: mathworks. nlhelpeconmoving-average-trend-estimateation. html) Masalah saya adalah, saya tidak mengerti apa ini. Bisakah ada yang menjelaskan Jika ada kaitannya dengan bobot nilai: itu tidak benar dalam kasus ini. Semua nilai tertimbang sama. Dan jika saya melakukan ini sepenuhnya salah, bisakah saya mendapatkan pertolongan dengan itu Terima kasih yang tulus. Tanya 23 September 19:05 Menggunakan konv adalah cara terbaik untuk menerapkan moving average. Dalam kode yang Anda gunakan, wts adalah berapa banyak Anda menimbang setiap nilai (seperti yang Anda duga). Jumlah vektor itu harus selalu sama dengan satu. Jika Anda ingin memberi bobot pada setiap nilai secara merata dan lakukan filter bergerak N ukuran maka Anda ingin melakukannya Dengan menggunakan argumen valid dalam konv akan menghasilkan nilai lebih sedikit pada Ms daripada yang Anda miliki di M. Gunakan sama jika Anda tidak keberatan dengan efek dari Nol padding Jika Anda memiliki toolbox pemrosesan sinyal, Anda dapat menggunakan cconv jika Anda ingin mencoba moving average melingkar. Sesuatu seperti Anda harus membaca dokumentasi conv dan cconv untuk informasi lebih lanjut jika Anda belum melakukannya. Anda dapat menggunakan filter untuk menemukan rata-rata yang sedang berjalan tanpa menggunakan for loop. Contoh ini menemukan rata-rata arus dari vektor 16 elemen, dengan menggunakan ukuran jendela 5. 2) mulus sebagai bagian dari Toolbox Kurva Fitting (yang tersedia dalam banyak kasus) yy smooth (y) menghaluskan data pada vektor kolom Y menggunakan filter rata-rata bergerak. Hasil dikembalikan pada vektor kolom yy. Rentang default untuk rata-rata bergerak adalah 5. Download movAv. m (lihat juga movAv2 - versi terbaru yang memungkinkan pembobotan) Deskripsi Matlab mencakup fungsi yang disebut movavg dan tsmovavg (time-series moving average) di Financial Toolbox, movAv dirancang untuk mereplikasi Fungsi dasar ini. Kode di sini memberikan contoh bagus untuk mengelola indeks di dalam loop, yang bisa membingungkan untuk memulai. Saya sengaja menyimpan kode pendek dan sederhana agar proses ini tetap jelas. MovAv melakukan moving average sederhana yang dapat digunakan untuk memulihkan data yang bising dalam beberapa situasi. Ia bekerja dengan mengambil rata-rata input (y) di atas jendela waktu geser, ukurannya ditentukan oleh n. Semakin besar n, semakin besar jumlah perataan efek n relatif terhadap panjang vektor masukan y. Dan efektif (baik, semacam) menciptakan filter frekuensi lowpass - lihat contoh dan bagian pertimbangan. Karena jumlah smoothing yang diberikan oleh masing-masing nilai n relatif terhadap panjang vektor input, nilainya selalu bernilai 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 input tidak berisi data yang cukup untuk rata-rata 100pt. Hal ini dapat dihindari agak oleh rata-rata susun, misalnya, kode dan grafik di bawah membandingkan sejumlah rata-rata jendela panjang yang berbeda. Perhatikan bagaimana kelancaran 1010pt dibandingkan dengan rata-rata 20pt tunggal. Dalam kedua kasus tersebut 20 titik data hilang secara total. Buat xaxis x1: 0,01: 5 Menghasilkan noise noiseReps 4 noise repmat (randn (1, ceil (numel (x) noiseReps)), noiseReps, 1) noise reshape (noise, 1, length (noise) noiseReps) Menghasilkan ydata noise yexp X) 10noise (1: length (x)) Perfrom averages: y2 movAv (y, 10) 10 pt y3 movAv (y2, 10) 1010 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) legenda (data mentah, 10pt moving average, 1010pt, 20pt, 40pt, 100pt) xlabel (x) ylabel Y) judul (Perbandingan moving averages) movAv. m kode fungsi run-through output movAv (y, n) Baris pertama mendefinisikan nama fungsi, input dan output. Masukan x harus berupa 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 fungsinya. Preallocate output outputNaN (1, numel (y)) Temukan titik tengah n ruas tengah (n2) Pekerjaan utama fungsi dilakukan dalam loop, tapi sebelum memulai dua hal disiapkan. Pertama, keluarannya adalah pra-alokasi sebagai NaN, ini melayani dua tujuan. Pertama, preallokasi pada umumnya adalah praktik yang baik karena mengurangi juggling memori yang harus dilakukan Matlab, kedua, sangat memudahkan untuk menempatkan data rata-rata ke dalam output 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 kode (output output (Variabel midPoint akan digunakan untuk menyelaraskan data pada vektor output. N 10, 10 poin akan hilang karena, untuk 9 titik pertama vektor masukan, tidak ada cukup data untuk mengambil nilai rata-rata 10 poin. Karena outputnya akan lebih pendek dari pada input, maka perlu diselaraskan dengan benar. 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: length (y) - n Temukan kisaran indeks untuk mengambil rata-rata Over (a: b) ban Menghitung mean output (amidPoint) mean (y (a: b)) end Dalam for loop itu sendiri, mean diambil alih setiap segmen berturut-turut dari input. Loop akan berjalan untuk a. Didefinisikan sebagai 1 sampai dengan panjang input (y), minus data yang akan hilang (n). Jika input 100 point lo Ng dan n adalah 10, loop akan berjalan dari (a) 1 sampai 90. Ini berarti indeks pertama dari segmen akan dirata-ratakan. Indeks kedua (b) hanya satu-1. Jadi pada iterasi pertama, a1. N10. Jadi b 11-1 10. Rata-rata pertama diambil alih y (a: b). Atau x (1:10). Rata-rata segmen ini, yang merupakan satu nilai tunggal, disimpan dalam output di indeks amidPoint. Atau 156. Pada iterasi kedua, a2. B 210-1 11. Jadi mean diambil alih x (2:11) dan disimpan dalam output (7). Pada iterasi terakhir dari loop untuk input dengan panjang 100, a91. B 9010-1 100 sehingga mean diambil alih 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, tapi tidak selalu pilihan terbaik. Berikut adalah dua contoh dimana mereka belum tentu optimal. Kalibrasi Mikrofon Kumpulan data ini mewakili tingkat masing-masing frekuensi yang dihasilkan oleh speaker dan dicatat oleh mikrofon dengan respons linier yang diketahui. Output speaker bervariasi dengan frekuensi, namun kami dapat memperbaiki variasi ini dengan data kalibrasi - output dapat disesuaikan secara level untuk menjelaskan fluktuasi dalam kalibrasi. Perhatikan bahwa data mentahnya berisik - ini berarti bahwa perubahan kecil pada frekuensi tampaknya memerlukan perubahan level yang besar dan tidak menentu. Apakah ini realistis Atau apakah ini merupakan produk dari lingkungan rekaman Yang masuk akal dalam hal ini untuk menerapkan rata-rata bergerak yang menghaluskan kurva tingkat frekuensi untuk memberikan kurva kalibrasi yang sedikit kurang tidak menentu. Tapi mengapa tidak optimal dalam contoh ini Data lebih banyak akan lebih baik - beberapa kalibrasi berjalan rata-rata akan menghancurkan kebisingan di sistem (selama acak) 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 sinus Menggunakan rata-rata bergerak pada gelombang sinus menyoroti dua poin: Masalah umum memilih sejumlah titik yang masuk akal untuk melakukan rata-rata di atas. Yang sederhana, tapi ada metode analisis sinyal yang lebih efektif daripada rata-rata sinyal osilasi dalam domain waktu. Dalam grafik ini, gelombang sinus asli diplot dengan warna biru. Kebisingan ditambahkan dan diplot sebagai kurva oranye. Rata-rata bergerak dilakukan pada berbagai titik untuk melihat apakah gelombang asli dapat dipulihkan. 5 dan 10 poin memberikan hasil yang masuk akal, namun jangan menghilangkan noise seluruhnya, karena jumlah titik yang lebih banyak mulai kehilangan detail amplitudo karena rata-rata meluas melebihi fase yang berbeda (ingat oscilat gelombang sekitar nol, dan rata-rata (-1 1) 0).Sebuah pendekatan alternatif adalah dengan membangun filter lowpass daripada yang bisa diterapkan pada sinyal di domain frekuensi. Im tidak akan membahas detail karena melampaui lingkup artikel ini, namun karena suaranya jauh lebih tinggi daripada frekuensi dasar gelombang, akan sangat mudah jika membuat filter lowpass daripada yang akan mengeluarkan frekuensi tinggi. Noise Weighted Moving Averages: Dasar-dasar Selama bertahun-tahun, teknisi telah menemukan dua masalah dengan rata-rata bergerak sederhana. Masalah pertama terletak pada kerangka waktu moving average (MA). Sebagian besar analis teknikal percaya bahwa aksi harga. Harga saham pembukaan atau penutupan, tidak cukup untuk mengandalkan prediksi apakah membeli atau menjual sinyal dari tindakan crossover MA. Untuk mengatasi masalah ini, analis sekarang menetapkan bobot lebih banyak pada data harga terbaru dengan menggunakan rata-rata pergerakan rata-rata yang dipercepat secara eksponensial (EMA). (Pelajari lebih lanjut dalam Menjelajahi Nilai Pindah Yang Dipengaruhi Secara Eksponensial) Contoh Misalnya, menggunakan MA 10 hari, seorang analis akan mengambil harga penutupan pada hari ke 10 dan memperbanyak angka ini dengan angka 10, hari kesembilan dengan pukul sembilan, kedelapan Hari ke delapan dan seterusnya ke MA yang pertama. Setelah total telah ditentukan, analis kemudian akan membagi jumlahnya dengan penambahan pengganda. Jika Anda menambahkan pengganda contoh MA 10 hari, jumlahnya adalah 55. Indikator ini dikenal sebagai rata-rata bergerak tertimbang linear. (Untuk bacaan terkait, lihat Simple Moving Averages Making Trends Stand Out.) Banyak teknisi percaya diri dengan rata-rata moving average yang dipercepat secara eksponensial (EMA). Indikator ini telah dijelaskan dengan berbagai cara sehingga membingungkan para siswa dan investor. Mungkin penjelasan terbaiknya berasal dari John J. Murphys Technical Analysis Of The Financial Markets, (diterbitkan oleh New York Institute of Finance, 1999): Rata-rata moving average yang dipercepat secara eksponensial membahas kedua masalah yang terkait dengan moving average sederhana. Pertama, rata-rata merapikan secara eksponensial memberi bobot lebih besar pada data yang lebih baru. Oleh karena itu, ini adalah rata-rata bergerak tertimbang. Tapi sementara itu memberi informasi yang kurang penting untuk data harga terakhir, itu termasuk dalam perhitungan semua data dalam kehidupan instrumen. Selain itu, pengguna dapat menyesuaikan bobot untuk memberi bobot lebih besar atau lebih kecil ke harga hari terakhir, yang ditambahkan ke persentase nilai hari sebelumnya. Jumlah dari kedua nilai persentase tersebut menambahkan hingga 100. Misalnya, harga hari terakhir dapat diberi bobot 10 (0,10), yang ditambahkan ke hari sebelumnya dengan berat 90 (0,90). Ini memberi hari terakhir 10 dari total bobot. Ini setara dengan rata-rata 20 hari, dengan memberikan harga hari terakhir dengan nilai lebih kecil dari 5 (0,05). Gambar 1: Rata-rata Moving Exponentially Moving Bagan di atas menunjukkan Indeks Komposit Nasdaq dari minggu pertama di bulan Agustus 2000 sampai 1 Juni 2001. Seperti yang dapat Anda lihat dengan jelas, EMA, yang dalam kasus ini menggunakan data harga penutupan selama suatu Periode sembilan hari, memiliki sinyal jual yang pasti pada 8 September (ditandai dengan panah bawah hitam). Ini adalah hari dimana indeks menembus di bawah level 4.000. Panah hitam kedua menunjukkan kaki lain yang benar-benar diharapkan teknisi. Nasdaq tidak bisa menghasilkan volume dan minat yang cukup dari para investor ritel untuk menembus angka 3.000. Kemudian turun lagi ke bawah pada 1619.58 pada 4 April. Uptrend 12 Apr ditandai dengan panah. Di sini indeks ditutup pada 1.961,46, dan teknisi mulai melihat fund manager institusional mulai mengambil beberapa penawaran seperti Cisco, Microsoft dan beberapa isu terkait energi. (Baca artikel terkait kami: Memindahkan Amplop Rata-rata: Menyempurnakan Alat Perdagangan Populer dan Memindahkan Rata-rata Bounce.)

No comments:

Post a Comment