ฉันรู้ว่านี่เป็นไปได้ด้วยการเพิ่มตาม per. But ฉันต้องการหลีกเลี่ยงการใช้เพิ่มฉันมี googled และไม่พบตัวอย่างใด ๆ ที่เหมาะสมหรืออ่านได้โดยปกติฉันต้องการติดตามค่าเฉลี่ยเคลื่อนที่ของกระแสอย่างต่อเนื่องของกระแสของตัวเลขจุดลอย ใช้ตัวเลขล่าสุด 1000 เป็นตัวอย่างข้อมูลวิธีที่ง่ายที่สุดในการบรรลุนี้ฉันทดลองกับการใช้อาร์เรย์แบบวงกลมค่าเฉลี่ยเคลื่อนที่แบบเสวนาและค่าเฉลี่ยเคลื่อนที่ที่ง่ายขึ้นและพบว่าผลลัพธ์จากอาร์เรย์แบบวงกลมเหมาะกับความต้องการของฉันดีที่สุด 12 มิถุนายน 12 ที่ 4 38. ถ้าความต้องการของคุณง่ายคุณอาจลองใช้ค่าเฉลี่ยเคลื่อนที่แทนคุณก็สร้างตัวแปร accumulator และเมื่อโค้ดของคุณดูที่ตัวอย่างแต่ละโค้ดจะอัพเดต accumulator ด้วย ค่าใหม่คุณสามารถเลือกค่า alpha คงที่ระหว่าง 0 ถึง 1 และคำนวณค่านี้ได้คุณต้องหาค่า alpha ที่ผลของตัวอย่างที่กำหนดจะใช้เวลาประมาณ 1000 ตัวอย่างเท่านั้นฉันไม่แน่ใจว่านี่เป็น เหมาะสำหรับคุณตอนนี้ t หมวกฉันได้วางไว้ที่นี่ปัญหาคือ 1000 เป็นหน้าต่างยาวสวยสำหรับการเคลื่อนที่เฉลี่ยฉันไม่แน่ใจว่ามีอัลฟาที่จะกระจายเฉลี่ยมากกว่า 1000 หมายเลขโดยไม่ underflow ในการคำนวณจุดลอย แต่ถ้าคุณ ต้องการค่าเฉลี่ยที่เล็กกว่าเช่น 30 ตัวเลขหรือมากกว่านี้เป็นวิธีที่ง่ายและรวดเร็วในการทำ it. answered 12 มิถุนายน 12 ที่ 4 44 1 โพสต์ของคุณค่าเฉลี่ยเคลื่อนที่ชี้แจงสามารถให้ alpha เป็นตัวแปรดังนั้นนี้จะช่วยให้ ใช้เวลาในการคำนวณค่าเฉลี่ยของฐานเวลาเช่นไบต์ต่อวินาทีถ้าเวลานับตั้งแต่การอัปเดตสะสมครั้งสุดท้ายเป็นเวลามากกว่า 1 วินาทีคุณจะอนุญาตให้ alpha เป็น 1 0 มิฉะนั้นคุณสามารถปล่อยให้ alpha เป็น usecs นับตั้งแต่การอัปเดตครั้งล่าสุด 1000000 jxh มิ.ย. 12 12 ที่ 6 21 โดยปกติแล้วฉันต้องการติดตามค่าเฉลี่ยเคลื่อนที่ของสตรีมตัวเลขจุดลอยที่ต่อเนื่องโดยใช้ตัวเลข 1000 ครั้งล่าสุดเป็นตัวอย่างข้อมูลโปรดทราบว่าด้านล่างปรับปรุงชุดค่าผสมทั้งหมดเป็นองค์ประกอบแทนที่ถูกแทนที่โดยหลีกเลี่ยงการข้ามค่าใช้จ่ายในการคำนวณ ผลรวม - จำเป็นสำหรับ th e - ค่าเฉลี่ย - เมื่อต้องการ - ทั้งหมดจะทำพารามิเตอร์ที่แตกต่างจาก T เพื่อสนับสนุนเช่นใช้ยาวนานเมื่อรวม 1000 ยาว s, int สำหรับ char s หรือ double เพื่อ float ทั้งหมด s นี้เป็นบิตสมบูรณ์ใน numsamples ที่สามารถ ไปที่ผ่านมา INTMAX - ถ้าคุณสนใจคุณสามารถใช้ unsigned ยาวยาวหรือใช้สมาชิก bool ข้อมูลพิเศษเพื่อบันทึกเมื่อภาชนะบรรจุเป็นครั้งแรกในขณะที่การขี่จักรยาน numsamples รอบแถวที่ดีที่สุดแล้วเปลี่ยนชื่อสิ่งที่ไม่เป็นอันตรายเช่น pos. answered 12 มิถุนายน 12 ที่ 5 19 . สมมติว่าผู้ประกอบการโมฆะ T ตัวอย่างเป็นจริงโมฆะดำเนินการตัวอย่าง T oPless 8 มิถุนายน 14 ที่ 11 52. oPhtts ahhh เห็นดีจริงฉันหมายความว่ามันจะเป็นโมฆะดำเนินการ T ตัวอย่าง แต่แน่นอนคุณสามารถใช้สิ่งที่คุณต้องการจะแก้ไข, ขอบคุณ Tony D มิถุนายน 8 14 ที่ 14 27.Is เป็นไปได้ที่จะใช้ค่าเฉลี่ยเคลื่อนที่ใน C โดยไม่ต้องใช้หน้าต่างของ samples. I ve พบว่าฉันสามารถเพิ่มประสิทธิภาพบิตโดยเลือกขนาดหน้าต่างที่ sa อำนาจของสองเพื่อ อนุญาตให้มีการขยับบิตแทนการหาร แต่ไม่จำเป็นต้อง buf fer จะดีมีวิธีการแสดงผลเฉลี่ยเคลื่อนไหวใหม่เท่านั้นเป็นหน้าที่ของผลเก่าและตัวอย่างใหม่กำหนดตัวอย่างเฉลี่ยเคลื่อนที่ข้ามหน้าต่างของ 4 ตัวอย่างที่จะเพิ่มตัวอย่างใหม่ eA เฉลี่ยเคลื่อนที่ จะใช้ recursively แต่สำหรับการคำนวณที่แน่นอนของค่าเฉลี่ยเคลื่อนที่ที่คุณต้องจำตัวอย่างการป้อนข้อมูลที่เก่าแก่ที่สุดในการรวมเช่นในตัวอย่างของคุณสำหรับความยาวเฉลี่ย N คำนวณโดยเฉลี่ยคุณ compute. where yn เป็นสัญญาณขาออกและ xn เป็นอินพุต สัญญาณ Eq 1 สามารถเขียน recursively as ดังนั้นคุณจำเป็นต้องจำตัวอย่าง x nN เพื่อคำนวณ 2.As ชี้โดย Conrad Turner คุณสามารถใช้หน้าต่าง exponential infinitely long แทนซึ่งช่วยให้คุณสามารถคำนวณผลลัพธ์เท่านั้น จากการส่งออกที่ผ่านมาและ input. but ปัจจุบันนี้ไม่ได้เป็นค่าเฉลี่ยของค่าเฉลี่ยที่ไม่ได้เว้นแต่ค่าเฉลี่ยเคลื่อนที่แบบถ่วงน้ำหนักที่ชี้แจงซึ่งตัวอย่างต่อไปในอดีตจะมีน้ำหนักน้อยลง แต่อย่างน้อยก็ในทางทฤษฎีคุณไม่เคยลืมอะไรที่มีน้ำหนัก jus t รับขนาดเล็กและขนาดเล็กสำหรับตัวอย่างไกลในอดีตฉันใช้ค่าเฉลี่ยเคลื่อนที่โดยไม่ต้องหน่วยความจำรายการส่วนบุคคลสำหรับโปรแกรมติดตาม GPS ฉัน wrote. I เริ่มต้นด้วย 1 ตัวอย่างและหารด้วย 1 เพื่อให้ได้ avg. I ปัจจุบันแล้วเพิ่ม anothe ตัวอย่างและ แบ่งโดย 2 เพื่อ avg. This ปัจจุบันต่อไปจนกว่าฉันจะได้รับความยาวของ average. Each เวลาหลังจากนั้นผมเพิ่มในตัวอย่างใหม่ได้รับค่าเฉลี่ยและลบค่าเฉลี่ยที่จาก total. I ไม่นักคณิตศาสตร์ แต่นี้ ดูเหมือนจะเป็นวิธีที่ดีที่จะทำมันฉันคิดว่ามันจะเปิดท้องของคนที่แต่งตัวประหลาดคณิตศาสตร์จริง แต่ก็จะเปิดออกเป็นหนึ่งในวิธีที่ยอมรับในการทำมันและทำงานได้ดีเพียงจำไว้ว่าสูงกว่าความยาวของคุณช้าลงก็คือ ต่อไปนี้สิ่งที่คุณต้องการปฏิบัติตามนั่นอาจไม่สำคัญตลอดเวลา แต่เมื่อติดตามดาวเทียมถ้าคุณช้าเส้นทางอาจอยู่ไกลจากตำแหน่งจริงและจะดูไม่ดีคุณอาจมีช่องว่างระหว่างนั่งและจุดต่อท้าย ฉันเลือกความยาวของ 15 ปรับปรุง 6 ครั้งต่อนาทีเพื่อรับ ade quate เรียบและไม่ได้รับไกลจากตำแหน่งนั่งจริงกับเส้นทางเรียบ dots. answered 16 16 ที่ 23 03.initialize รวม 0, 0 นับแต่ละครั้งเห็นค่าใหม่จากนั้น scanf input หนึ่งหนึ่งเพิ่ม newValue ใหม่หนึ่ง การนับที่เพิ่มขึ้นหารหนึ่งค่าเฉลี่ยโดยเฉลี่ยซึ่งจะเป็นค่าเฉลี่ยที่เคลื่อนที่ผ่านปัจจัยการผลิตทั้งหมดหากต้องการคำนวณค่าเฉลี่ยมากกว่าเพียง 4 อินพุทสุดท้ายจะต้องมี 4 อินพุตตัวแปรอาจคัดลอกข้อมูลแต่ละอินพุทไปยังอินพุตตัวแปรเก่าแล้วคำนวณค่าเฉลี่ยเคลื่อนที่ใหม่ เป็นผลรวมของ inputvariables 4 หารด้วย 4 right shift 2 จะดีถ้า inputs ทั้งหมดเป็นบวกเพื่อคำนวณเฉลี่ย. ตอบ 3 กุมภาพันธ์ที่ 4 06.That จริงจะคำนวณค่าเฉลี่ยรวมและไม่เฉลี่ยเคลื่อนที่เป็นนับ ผลกระทบของตัวอย่างข้อมูลใหม่ ๆ จะลดลงเล็กน้อย Hilmar 3 ก. พ. 15 ที่ 13 53. คำตอบของคุณ 2017 Stack Exchange, Inc. ค่าเฉลี่ยเคลื่อนที่ที่ไม่ถูกต้องสำหรับชุดข้อมูลที่ไม่ต่อเนื่องซีรีส์ในการวิเคราะห์อนุกรมเวลามักต้องมีการทำให้เรียบ ฟังก์ชั่นที่ตอบสนองได้อย่างรวดเร็วต่อการเปลี่ยนแปลงของสัญญาณในแอพพลิเคชันทั่วไปคุณอาจกำลังประมวลผลสัญญาณอินพุตในแบบเรียลไทม์และต้องการคำนวณค่าต่างๆเช่นค่าเฉลี่ยที่ผ่านมาหรือรับค่าความลาดเอียงทันทีสำหรับสัญญาณโลกจริง มีเสียงดังตัวอย่างที่มีเสียงดังบางตัวจะทำให้ค่าปัจจุบันของสัญญาณหรือความลาดเอียงแตกต่างกันไปอย่างมากค่าเฉลี่ยที่เรียบง่ายฟังก์ชั่นการทำให้เรียบเป็นค่าเฉลี่ยเคลื่อนที่ที่เป็นไปตามหน้าต่างขณะที่ตัวอย่างมาให้คุณใช้ค่าเฉลี่ยของค่า N ล่าสุดล่าสุดนี้จะราบรื่น ค่าเฉลี่ยของคุณจะล่าช้าไปตามความกว้างของค่าเฉลี่ยที่เคลื่อนที่ของคุณตัวอย่างข้างต้นมีค่าใช้จ่ายในการคำนวณค่อนข้างสูงสำหรับแต่ละตัวอย่างคุณต้องย้ำไปตามขนาดทั้งหมดของหน้าต่าง แต่มีวิธีที่ถูกกว่า เก็บผลรวมของตัวอย่างทั้งหมดในหน้าต่างในบัฟเฟอร์และปรับผลรวมเป็นตัวอย่างใหม่เข้ามาอีกประเภทหนึ่งของค่าเฉลี่ยเคลื่อนที่คือค่าเฉลี่ยถ่วงน้ำหนักที่น้ำหนักสำหรับแต่ละตำแหน่งในตัวอย่าง w indow ก่อนเฉลี่ยคุณคูณแต่ละตัวอย่างโดยน้ำหนักของตำแหน่งหน้าต่างนั้นเทคนิคนี้เรียกว่า convolution. One ฟังก์ชันการถ่วงน้ำหนักทั่วไปใช้เส้นโค้งระฆังไปยังหน้าต่างตัวอย่างซึ่งจะให้สัญญาณที่ปรับขึ้นไปที่กึ่งกลางของหน้าต่างและยังคง ค่อนข้างน่าเชื่อถือของตัวอย่างที่มีเสียงดังในการวิเคราะห์ทางการเงินคุณมักจะใช้ฟังก์ชันการถ่วงน้ำหนักที่ให้ค่าตัวอย่างล่าสุดมากกว่าเพื่อให้ค่าเฉลี่ยเคลื่อนที่ที่ใกล้เคียงกับตัวอย่างล่าสุดตัวอย่างเก่าจะได้รับความก้าวหน้าน้อยลงน้ำหนักนี้จะช่วยลดผลกระทบของ latency ในขณะที่ยังให้เหตุผล smoothing. With เฉลี่ยถ่วงน้ำหนักคุณมักจะต้องย้ำผ่านขนาดหน้าต่างทั้งหมดสำหรับทุกตัวอย่างยกเว้นกรณีที่คุณสามารถ จำกัด น้ำหนักที่อนุญาตให้ฟังก์ชันบางอย่าง Exponential Moving Average ประเภทอื่น ๆ ของค่าเฉลี่ยคือค่าเฉลี่ยเคลื่อนที่เลขคณิตหรือ EMA นี้ มักใช้เวลาแฝงเป็นสิ่งสำคัญเช่นในการวิเคราะห์ทางการเงินแบบเรียลไทม์ค่าเฉลี่ยลดน้ำหนักลง nentially แต่ละตัวอย่างมีมูลค่าน้อยกว่าตัวอย่างถัดไปที่มีค่าน้อยที่สุดข้อ จำกัด นี้สามารถคำนวณค่าเฉลี่ยเคลื่อนที่ได้อย่างมีประสิทธิภาพเมื่อ alpha เป็นค่าคงที่ที่อธิบายถึงการลดน้ำหนักของหน้าต่างเมื่อเวลาผ่านไปตัวอย่างเช่นถ้าแต่ละตัวอย่างมีน้ำหนักที่ 80 ของค่าของตัวอย่างก่อนหน้านี้คุณจะตั้งค่า alpha 0 2 ค่า alpha ที่มีขนาดเล็กจะยาวกว่าค่าเฉลี่ยเคลื่อนที่ของคุณเช่นจะนุ่มนวล แต่ไม่ค่อยมีปฏิกิริยากับตัวอย่างใหม่น้ำหนักของ EMA ที่มี alpha 0 20. คุณสามารถ เห็นสำหรับตัวอย่างใหม่แต่ละคุณจะต้องเฉลี่ยกับค่าของค่าเฉลี่ยก่อนหน้าดังนั้นการคำนวณเป็นอย่างมาก fast. In ทฤษฎีตัวอย่างทั้งหมดก่อนหน้านี้นำไปสู่ค่าเฉลี่ยปัจจุบัน แต่ผลงานของพวกเขาจะกลายเป็นชี้แจงเล็กกว่าเวลานี้เป็นอย่างมาก เทคนิคที่มีประสิทธิภาพและอาจดีที่สุดถ้าคุณต้องการได้รับค่าเฉลี่ยเคลื่อนที่ที่ตอบสนองได้อย่างรวดเร็วเพื่อตัวอย่างใหม่มีคุณสมบัติการราบเรียบที่ดีและรวดเร็วในการคำนวณรหัสเป็น trivial. EMA สำหรับ T ไม่สม่ำเสมอ ime Series มาตรฐาน EMA ใช้ได้ดีเมื่อมีการสุ่มตัวอย่างสัญญาณในช่วงเวลาปกติ แต่จะทำอย่างไรถ้าตัวอย่างของคุณมาที่ช่วงเวลาที่ไม่ต่อเนื่องลองนึกภาพสัญญาณอย่างต่อเนื่องซึ่งเป็นตัวอย่างในช่วงเวลาที่ไม่ต่อเนื่องนี่เป็นสถานการณ์ปกติในการวิเคราะห์ทางการเงิน ฟังก์ชั่นต่อเนื่องสำหรับค่าของตราสารทางการเงินใด ๆ แต่คุณสามารถตัวอย่างสัญญาณนี้เมื่อใดก็ตามที่มีคนทำการค้าจริงดังนั้นกระแสข้อมูลของคุณประกอบด้วยค่าบวกเวลาที่มันถูกตั้งข้อสังเกตวิธีหนึ่งในการจัดการกับนี้คือการแปลง สัญญาณผิดปกติไปเป็นสัญญาณปกติโดย interpolating ระหว่างการสังเกตและ resampling แต่ข้อมูลนี้สูญเสียและอีกครั้งแนะนำ latency. เป็นไปได้ในการคำนวณ EMA สำหรับชุดเวลาไม่สม่ำเสมอโดยตรงในฟังก์ชันนี้คุณผ่านในปัจจุบัน ตัวอย่างจากสัญญาณของคุณและตัวอย่างก่อนหน้านี้และระยะเวลาที่ผ่านไประหว่างสองและค่าก่อนหน้านี้ที่ส่งกลับโดยฟังก์ชันนี้ดังนั้นวิธีการที่ดีในการทำงานนี้เพื่อแสดงให้เห็นยีน I ve ได้รับการจัดอันดับเป็นคลื่นซายน์จากนั้นจึงสุ่มตัวอย่างในช่วงเวลาที่ผิดปกติและเปิดตัวสัญญาณรบกวนประมาณ 20 สัญญาณนั่นคือสัญญาณจะแตกต่างกันไปแบบสุ่ม - 20 จากสัญญาณไซน์จริงแท้ ๆ แล้วค่าเฉลี่ยเคลื่อนที่ที่ไม่สม่ำเสมอ คลื่นสีน้ำเงินเป็นสัญญาณที่มีการเพิ่มเสียงรบกวนสายสีน้ำเงินเป็นสัญญาณเดียวที่ EMA เห็นเส้นสีเขียวคือ EMA ที่ราบเรียบคุณสามารถเห็นสัญญาณนี้ฟื้นตัวได้ดีขึ้นเล็กน้อยสั่น แต่สิ่งที่สามารถทำได้ คุณคาดหวังจากแหล่งสัญญาณดังกล่าว signal. It จะเปลี่ยนประมาณ 15 ด้านขวาเนื่องจาก EMA จะแนะนำ latency บางเรียบคุณต้องการมัน latency เพิ่มเติมคุณจะเห็น แต่จากนี้คุณสามารถเช่นคำนวณความลาดชันทันทีสำหรับ สัญญาณไม่สม่ำเสมอที่มีเสียงดังคุณสามารถทำอะไรกับ Hmm ได้
No comments:
Post a Comment