Tuesday 11 July 2017

การย้าย ค่าเฉลี่ย recursive การดำเนินงาน


ฉันเป็นหลักมีอาร์เรย์ของค่าเช่นนี้อาร์เรย์ข้างต้นเป็น oversimplified ฉัน m เก็บ 1 ค่าต่อมิลลิวินาทีในรหัสจริงของฉันและฉันต้องดำเนินการออกในขั้นตอนฉันเขียนเพื่อหาจุดสูงสุดที่ใกล้เคียงที่สุดก่อนจุดในเวลา ตรรกะล้มเหลวเนื่องจากในตัวอย่างข้างต้นของฉัน 0 36 เป็นยอดจริง แต่อัลกอริทึมของฉันจะมองย้อนกลับไปและดูจำนวนสุดท้าย 0 25 เป็นยอดมากที่สุดเนื่องจากมี sa ลดลงเหลือ 0 24 ก่อนที่เป้าหมายจะใช้ค่าเหล่านี้ และใช้วิธีการที่พวกเขาซึ่งจะเรียบพวกเขาออก bit เพื่อให้ฉันมีค่าเชิงเส้นมากขึ้นเช่นฉันต้องการผลของฉันจะ curvy ไม่ jaggedy. I เคยได้รับการบอกให้ใช้ตัวกรองค่าเฉลี่ยชี้แจงค่าของฉันฉันจะ ทำอย่างนี้มันยากมากสำหรับผมที่จะอ่านสมการทางคณิตศาสตร์ผมจัดการที่ดีมากกับรหัสฉันจะประมวลผลค่าในอาร์เรย์ของฉันใช้การคำนวณค่าเฉลี่ยเคลื่อนที่ชี้แจงไปแม้พวกเขา out. asked กุมภาพันธ์ 8 12 ที่ 20 27 เมื่อต้องการคำนวณ ค่าเฉลี่ยเคลื่อนที่ที่ชี้แจงคุณต้องเก็บข้อมูลบางส่วนไว้รอบ ๆ และ คุณต้องการพารามิเตอร์การปรับค่านี้เรียกระดับเล็กน้อยสมมติว่าคุณกำลังใช้ Java 5 ขึ้นไประบุว่าพารามิเตอร์ที่สลายตัวที่คุณต้องการอาจใช้การปรับค่าควรอยู่ระหว่าง 0 ถึง 1 และใช้ค่าเฉลี่ยในการกรองเมื่ออ่านหน้าของคณิตศาสตร์บางส่วน สิ่งที่คุณจำเป็นต้องรู้จริงๆเมื่อเปลี่ยนเป็นรหัสเป็นที่ mathematicians ชอบเขียนดัชนีในอาร์เรย์และลำดับกับ subscripts พวกเขา ve notations อื่น ๆ ไม่กี่ที่ดีซึ่ง doesn t ช่วยอย่างไรก็ตาม EMA สวยง่ายๆตามที่คุณต้องการ เพื่อจำค่าเก่าหนึ่งไม่มีอาร์เรย์ของรัฐที่ซับซ้อน required. answered Feb 8 12 at 20 42 TKKocheran สวยมาก Isn t มันดีเมื่อสิ่งที่สามารถทำได้ง่ายถ้าเริ่มต้นด้วยลำดับใหม่ได้รับ averager ใหม่โปรดทราบว่าคำไม่กี่คำแรกใน ลำดับเฉลี่ยจะกระโดดไปรอบ ๆ เล็กน้อยเนื่องจากผลกระทบขอบเขต แต่คุณจะได้รับผู้ที่มีค่าเฉลี่ยเคลื่อนที่อื่น ๆ ด้วยอย่างไรก็ตามข้อได้เปรียบที่ดีคือคุณสามารถตัดตรรกะเฉลี่ยเคลื่อนที่ลงใน averager และทดสอบโดยไม่รบกวน t เขาส่วนที่เหลือของโปรแกรมของคุณมากเกินไป Donal Fellows กุมภาพันธ์ 9 12 ที่ 0 06.I am มีช่วงเวลาที่ยากเข้าใจคำถามของคุณ แต่ฉันจะพยายามตอบ anyway.1 หากอัลกอริทึมของคุณพบ 0 25 แทน 0 36 แล้วมันไม่ถูกต้อง มันไม่ถูกต้องเพราะสมมติว่าเพิ่มขึ้นหรือลดลง monotonic ที่มักจะขึ้นหรือเสมอไปลงถ้าคุณไม่เฉลี่ยข้อมูลทั้งหมดของคุณข้อมูลของคุณ --- จุดที่คุณนำเสนอพวกเขา --- เป็น nonlinear ถ้าคุณต้องการที่จะหาสูงสุด ค่าระหว่างสองจุดในเวลาแล้วชิ้นอาร์เรย์ของคุณจาก tmin เพื่อ tmax และหาสูงสุดของ subarray.2 ที่ตอนนี้แนวคิดของค่าเฉลี่ยเคลื่อนที่ง่ายมากคิดว่าฉันมีรายการต่อไปนี้ 1 4, 1 5, 1 4, 1 5, 1 5 ฉันสามารถเรียบออกโดยใช้ค่าเฉลี่ยของสองตัวเลข 1 45, 1 45, 1 45, 1 5 ขอให้สังเกตว่าหมายเลขแรกเป็นค่าเฉลี่ยของ 1 5 และ 1 4 วินาทีและหมายเลขแรกรายการใหม่ที่สอง เป็นค่าเฉลี่ยของ 1 4 และ 1 5 รายการเก่าที่สามและที่สองรายการใหม่ที่สามค่าเฉลี่ยของ 1 5 และ 1 4 4 และ 3 และอื่น ๆ ที่ฉันสามารถ ได้ทำให้มันเป็นระยะเวลาสามหรือสี่หรือ n สังเกตว่าข้อมูลมีความเรียบมากวิธีที่ดีในการดูค่าเฉลี่ยเคลื่อนที่ในที่ทำงานคือไปที่ Google Finance เลือกสต็อกลองใช้ Tesla Motors volatile TSLA ที่สวยและคลิกที่ technicals ที่ด้านล่างของ แผนภูมิเลือก Moving Average กับช่วงเวลาที่กำหนดและค่าเฉลี่ยเคลื่อนที่แบบ Exponential เพื่อเปรียบเทียบความแตกต่างของค่าเฉลี่ยของค่าเฉลี่ยที่เป็นค่าลบนี้เป็นเพียงการอธิบายเพิ่มเติมอีกประการหนึ่งจากข้อมูลนี้ แต่น้ำหนักข้อมูลเก่าน้อยกว่าข้อมูลใหม่นี้เป็นวิธีที่จะทำให้เกิดการปรับให้เรียบไปทางด้านหลัง โปรดอ่านรายการวิกิพีเดียดังนั้นนี่เป็นความคิดเห็นมากกว่าคำตอบ แต่กล่องความคิดเห็นเล็ก ๆ น้อย ๆ เป็นเพียงเล็กโชคดีถ้าคุณกำลังประสบปัญหาเกี่ยวกับคณิตศาสตร์คุณสามารถไปกับค่าเฉลี่ยเคลื่อนที่ที่เรียบง่ายแทนการแทนดังนั้น ผลลัพธ์ที่คุณได้รับจะเป็นเงื่อนไข x ล่าสุดหารด้วย x pseudocode ที่ยังไม่ได้ตรวจสอบโปรดทราบว่าคุณจะต้องจัดการกับจุดเริ่มต้นและจุดสิ้นสุดของข้อมูลเนื่องจากคุณสามารถ t เฉลี่ย 5 คำสุดท้ายเมื่อคุณอยู่ในจุดข้อมูลที่ 2 ของคุณได้ , เป็นวิธีการที่มีประสิทธิภาพมากขึ้นในการคำนวณผลรวมรวมเฉลี่ยเคลื่อนที่นี้ - เก่าแก่ที่สุดที่ใหม่ที่สุด แต่นี่คือเพื่อให้ได้แนวคิดของสิ่งที่เกิดขึ้นข้ามตอบ 8 ก. พ. 12 ที่ 20 41.The นักวิทยาศาสตร์และวิศวกรของคู่มือการประมวลผลสัญญาณดิจิตอลโดย Steven W Smith, Ph DA ข้อดีของตัวกรองค่าเฉลี่ยเคลื่อนที่คือสามารถนำมาใช้กับอัลกอริธึมที่รวดเร็วมากเข้าใจอัลกอริทึมนี้ลองจินตนาการผ่านสัญญาณอินพุท x ผ่านตัวกรองเฉลี่ย 7 จุดเพื่อสร้างสัญญาณเอาท์พุท , y ตอนนี้ดูว่าสองจุดส่งออกที่อยู่ติดกัน y 50 และ y 51 มีการคำนวณซึ่งเกือบจะมีจุดคำนวณเดียวกัน x 48 ถึง x 53 ต้องเพิ่มสำหรับ y 50 และอีกครั้งสำหรับ y 51 ถ้า y 50 ได้รับแล้ว คำนวณวิธีที่มีประสิทธิภาพมากที่สุดในการคำนวณ y 51 คือเมื่อ y 51 ได้รับการพบโดยใช้ y 50 แล้ว y 52 สามารถคำนวณได้จากตัวอย่าง y 51 และอื่น ๆ หลังจากที่จุดแรกถูกคำนวณใน y ทุกจุดอื่น ๆ สามารถพบได้ด้วยการบวกและลบเพียงครั้งเดียว ต่อจุดนี้สามารถแสดงออกได้ในสมการคำพูดที่ว่าสมการนี้ใช้ข้อมูลสองแหล่งในการคำนวณแต่ละจุดในจุดที่นำออกจากอินพุทและจุดคำนวณก่อนหน้านี้จากผลลัพธ์นี่เรียกว่าสมการเวียนเกิดซึ่งหมายความว่าผลลัพธ์ของหนึ่ง การคำนวณถูกนำมาใช้ในการคำนวณในอนาคตคำ recursive ยังมีความหมายอื่น ๆ โดยเฉพาะในวิทยาการคอมพิวเตอร์บทที่ 19 กล่าวถึงตัวกรองแบบ recursive ในรายละเอียดเพิ่มเติมโปรดทราบว่าตัวกรอง recursive ค่าสัมบูรณ์แตกต่างจากตัวกรอง recursive ทั่วไปโดยเฉพาะตัวกรอง recursive ส่วนใหญ่ มีการตอบสนองของอิมมูโนพัลส์ IIR อันยาวนานประกอบไปด้วย sinusoids และ exponentials การตอบสนองของอิมพัลส์ของค่าเฉลี่ยเคลื่อนที่คือการตอบสนองของ impuls pulse finax pulse หรือ FIR ขั้นตอนนี้เร็วกว่าตัวกรองแบบดิจิตอลอื่น ๆ ด้วยเหตุผลหลายประการประการแรกมีเพียงสองการคำนวณต่อหนึ่ง จุดโดยไม่คำนึงถึงความยาวของเคอร์เนลกรองที่สองการบวกและการลบเป็นคณิตศาสตร์เท่านั้น การดำเนินงานที่จำเป็นในขณะที่ตัวกรองดิจิทัลส่วนใหญ่ต้องใช้เวลานานคูณสามโครงร่างการจัดทำดัชนีเป็นเรื่องง่ายมากแต่ละดัชนีใน Eq 15-3 ถูกพบโดยการเพิ่มหรือลบค่าคงที่จำนวนเต็มที่สามารถคำนวณได้ก่อนที่การกรองจะเริ่มต้นขึ้นและ q Forth ทั้ง อัลกอริธึมสามารถดำเนินการกับการแทนจำนวนเต็มทั้งนี้ขึ้นอยู่กับฮาร์ดแวร์ที่ใช้จำนวนเต็มสามารถมากกว่าลำดับของขนาดได้เร็วกว่าจุดลอยแปลกใจการแสดงจำนวนเต็มทำงานได้ดีกว่าจุดลอยตัวด้วยอัลกอริทึมนี้นอกจากจะเร็วกว่า ข้อผิดพลาดจากเลขคณิตลอยตัวสามารถให้ผลลัพธ์ที่ไม่คาดคิดได้หากคุณไม่ระวังตัวอย่างเช่นลองนึกภาพตัวอย่างสัญญาณ 10,000 ตัวที่ถูกกรองด้วยวิธีนี้ตัวอย่างสุดท้ายในสัญญาณที่กรองมีข้อผิดพลาดสะสม 10,000 อันและลบออก 10,000 คำนี้จะปรากฏในสัญญาณเอาท์พุท เป็นจำนวนเต็มออฟเซ็ตดริฟท์ไม่มีปัญหานี้เนื่องจากไม่มีข้อผิดพลาดในการคำนวณ ถ้าคุณต้องใช้จุดลอยตัวด้วยอัลกอริทึมนี้โปรแกรมในตาราง 15-2 จะแสดงวิธีใช้เครื่องวัดความแม่นยำสองครั้งเพื่อลดการลอยตัวนี้ค่าเฉลี่ยเคลื่อนที่เป็นตัวกรองค่าเฉลี่ยเคลื่อนที่มักใช้สำหรับการทำให้ข้อมูลราบเรียบในที่ที่มี noise ค่าเฉลี่ยเคลื่อนที่ที่เรียบง่ายไม่ได้รับการยอมรับว่าเป็นตัวกรอง FIR Impulse Response FIR ที่มีอยู่ในขณะที่เป็นหนึ่งในตัวกรองที่พบบ่อยที่สุดในการประมวลผลสัญญาณการประมวลผลสัญญาณถือว่าเป็นตัวกรองที่ช่วยให้สามารถเปรียบเทียบได้เช่นตัวกรอง windowed sinc ดูบทความเกี่ยวกับตัวกรอง high-pass และ band-pass และ band-reject แบบ low-pass สำหรับตัวอย่างของข้อแตกต่างที่สำคัญกับตัวกรองเหล่านี้คือค่าเฉลี่ยเคลื่อนที่เหมาะสำหรับสัญญาณที่ข้อมูลที่เป็นประโยชน์มีอยู่ในโดเมนเวลาของ ซึ่งการวัดความเรียบโดยเฉลี่ยเป็นตัวอย่างที่สำคัญตัวกรอง Windowed-sinc ในทางกลับกันเป็นตัวแสดงที่มีประสิทธิภาพในโดเมนความถี่ที่มีการทำให้เท่าเทียมกันในการประมวลผลเสียงเป็นตัวอย่างทั่วไปนั่นคือ am การเปรียบเทียบแบบละเอียดของตัวกรองทั้งสองประเภทในโดเมนเวลาและประสิทธิภาพของตัวกรองความถี่ของตัวกรองถ้าคุณมีข้อมูลที่ทั้งเวลาและโดเมนความถี่มีความสำคัญคุณอาจต้องการดูรูปแบบต่างๆใน Moving Average ซึ่งแสดงถึง จำนวนรุ่นถ่วงน้ำหนักของค่าเฉลี่ยเคลื่อนที่ที่ดีกว่าที่ค่าเฉลี่ยเคลื่อนที่ของความยาว N สามารถกำหนด as. written ตามที่มีการดำเนินการโดยทั่วไปกับตัวอย่างการส่งออกในปัจจุบันเป็นค่าเฉลี่ยของก่อนหน้านี้ตัวอย่าง N ทำเป็นตัวกรอง, ค่าเฉลี่ยเคลื่อนที่ดำเนินการ convolution ของลำดับการป้อนข้อมูล xn กับชีพจรรูปสี่เหลี่ยมผืนผ้ายาว N และความสูง 1 N เพื่อให้พื้นที่ของชีพจรและดังนั้นกำไรของตัวกรองอย่างใดอย่างหนึ่งในทางปฏิบัติที่ดีที่สุดคือใช้เวลา N คาคาเฉลี่ยเคลื่อนที่ยังสามารถคํานวณไดโดยใชหมายเลขระหวางเทากับการใชคาคี่สําหรับ N มีขอดีที่ความหนวงของตัวกรองจะเปนจํานวนเต็มของตัวอยางเนื่องจากความลาชาของตัวกรอง y N-1 2 ค่าเฉลี่ยเคลื่อนที่สามารถจัดตำแหน่งให้สอดคล้องกับข้อมูลต้นฉบับโดยการขยับโดยจำนวนเต็มจำนวนตัวอย่างขณะที่ค่าเฉลี่ยเคลื่อนที่คือการหมุนด้วยชีพจรรูปสี่เหลี่ยมผืนผ้าการตอบสนองต่อความถี่เป็นฟังก์ชัน sinc ทำให้มันเหมือนสองตัวกรอง windowed sinc เนื่องจากเป็น convolution กับชีพจร sinc ที่ส่งผลให้มีการตอบสนองความถี่เป็นรูปสี่เหลี่ยมผืนผ้านี่คือการตอบสนองความถี่ sinc ซึ่งทำให้ค่าเฉลี่ยเคลื่อนที่ในสมรรถนะที่ไม่ดีในโดเมนความถี่ มันทำงานได้ดีในโดเมนเวลาดังนั้นจึงเหมาะกับข้อมูลที่ราบรื่นเพื่อขจัดเสียงรบกวนในขณะที่ยังคงให้การตอบสนองต่อขั้นตอนอย่างรวดเร็วรูปที่ 1. รูปที่ 1 ทำให้เรียบขึ้นโดยใช้ตัวกรองค่าเฉลี่ยที่เคลื่อนที่ได้สำหรับสัญญาณ Gaussian Noise AWGN ทั่วไปทั่วไป ค่าเฉลี่ยของตัวอย่าง N มีผลต่อการเพิ่มค่า SNR โดยปัจจัยของ sqrt N เนื่องจากเสียงสำหรับแต่ละตัวอย่างไม่มีความสัมพันธ์กันไม่มีเหตุผลที่จะปฏิบัติต่อตัวอย่างแต่ละแบบแตกต่างกัน ดังนั้นค่าเฉลี่ยเคลื่อนที่ซึ่งจะทำให้แต่ละตัวอย่างมีน้ำหนักเท่ากันจะกำจัดจำนวนเสียงสูงสุดสำหรับความคมชัดของการตอบสนองขั้นตอนที่กำหนดเนื่องจากเป็นตัวกรอง FIR ซึ่งค่าเฉลี่ยเคลื่อนที่สามารถนำมาใช้ผ่าน convolution ได้จากนั้นจะมีค่า ประสิทธิภาพเดียวกันหรือขาดมันเป็นตัวกรอง FIR อื่น ๆ แต่ก็ยังสามารถใช้ recursively ในทางที่มีประสิทธิภาพมากตามมาโดยตรงจากคำจำกัดความว่าสูตรนี้เป็นผลมาจากการแสดงออกสำหรับ yn และ yn 1, i e. ที่เราสังเกตเห็นว่าการเปลี่ยนแปลงระหว่าง yn 1 และ yn คือระยะพิเศษ xn 1 N ปรากฏที่ส่วนท้ายในขณะที่คำว่า x nN 1 N ถูกลบออกจากจุดเริ่มต้นในการใช้งานจริงมักเป็นไปได้ที่จะแยกส่วนออกจากกัน N สำหรับแต่ละระยะโดยการชดเชยผลกำไรที่ได้จาก N ในตำแหน่งอื่นการดำเนินการแบบทวนซ้ำนี้จะเร็วกว่า convolution แต่ละค่าใหม่ของ y สามารถคำนวณได้โดยมีเพียงสองส่วนแทนการเพิ่ม N ซึ่งจำเป็นสำหรับ str การใช้คำจำกัดความอย่างชัดเจนสิ่งหนึ่งที่ต้องคอยระวังในการใช้งานแบบเรียกซ้ำคือข้อผิดพลาดในการปัดเศษที่สะสมนี้อาจเป็นหรืออาจไม่ใช่ปัญหาสำหรับแอพพลิเคชันของคุณ แต่ก็อนุมานได้ว่าการใช้งานแบบรีสตาร์ทนี้จะทำงานได้ดีกว่าด้วยการใช้จำนวนเต็มมากกว่า กับตัวเลขลอยจุดนี้ค่อนข้างผิดปกติเนื่องจากการดำเนินการจุดลอยมักจะเรียบง่ายข้อสรุปของทั้งหมดนี้ต้องเป็นที่คุณไม่ควรประมาทประโยชน์ของตัวกรองเฉลี่ยที่เรียบง่ายในการใช้งานการประมวลผลสัญญาณเครื่องมือกรองออกแบบบทความนี้ ได้รับการเติมเต็มด้วยเครื่องมือการออกแบบตัวกรองการทดสอบด้วยค่าต่างๆสำหรับ N และแสดงผลตัวกรองที่เป็นผลลัพธ์ลองใช้เลย

No comments:

Post a Comment