การย้าย ค่าเฉลี่ย กรอง บิด
ค่าเฉลี่ยเคลื่อนที่เป็นตัวกรองค่าเฉลี่ยเคลื่อนที่มักใช้สำหรับการทำให้ข้อมูลมีความราบรื่นในที่ที่มีเสียงรบกวน ค่าเฉลี่ยเคลื่อนที่ที่เรียบง่ายไม่ได้รับการยอมรับว่าเป็นตัวกรองฟิลลิ่งอิมพัลส์ตอบ (FIR) ในขณะที่เป็นหนึ่งในตัวกรองที่พบมากที่สุดในการประมวลผลสัญญาณ การรักษาด้วยฟิลเตอร์ช่วยให้สามารถเปรียบเทียบได้เช่นตัวกรอง windowed-sinc (ดูบทความเกี่ยวกับ low-pass high-pass และตัวกรอง band-pass และ band-reject สำหรับตัวอย่าง) ความแตกต่างสำคัญกับตัวกรองเหล่านี้คือค่าเฉลี่ยเคลื่อนที่เหมาะสำหรับสัญญาณที่มีข้อมูลที่เป็นประโยชน์ในโดเมนเวลา ซึ่งการวัดความเรียบโดยการเฉลี่ยเป็นตัวอย่างที่สำคัญ ตัวกรอง Windowed-sinc เป็นอีกทางเลือกหนึ่งที่มีประสิทธิภาพสูงในโดเมนความถี่ ด้วยการปรับเสียงในการประมวลผลเสียงเป็นตัวอย่างทั่วไป มีการเปรียบเทียบประเภทของตัวกรองทั้งสองประเภทในโดเมนเวลากับประสิทธิภาพของโดเมนความถี่ของตัวกรอง หากคุณมีข้อมูลที่ทั้งเวลาและโดเมนความถี่มีความสำคัญคุณอาจต้องการดูรูปแบบต่างๆใน Moving Average ซึ่งแสดงจำนวนรุ่นถ่วงน้ำหนักของค่าเฉลี่ยเคลื่อนที่ที่ดีกว่าที่ ค่าเฉลี่ยเคลื่อนที่ของความยาว (N) สามารถกำหนดเป็นลายลักษณ์อักษรได้ตามปกติโดยใช้ตัวอย่างการส่งออกปัจจุบันเป็นค่าเฉลี่ยของตัวอย่างก่อนหน้า (N) ค่าเฉลี่ยเคลื่อนที่จะมีการสลับของลำดับการป้อนข้อมูล (xn) กับชีพจรรูปสี่เหลี่ยมผืนผ้าที่มีความยาว (N) และความสูง (1N) (เพื่อทำให้พื้นที่ของชีพจรและจากนั้นได้รับการกรอง , หนึ่ง) ในทางปฏิบัติที่ดีที่สุดคือใช้ (N) แปลก แม้ว่าค่าเฉลี่ยเคลื่อนที่สามารถคำนวณได้โดยใช้จำนวนคู่ตัวอย่างโดยใช้ค่าแปลก ๆ สำหรับ (N) มีข้อได้เปรียบที่ความล่าช้าของตัวกรองจะเป็นจำนวนเต็มจำนวนตัวอย่างเนื่องจากความล่าช้าของตัวกรองด้วย (N) ตัวอย่างคือ (N-1) 2) ค่าเฉลี่ยเคลื่อนที่สามารถจัดตำแหน่งให้ตรงกับข้อมูลเดิมโดยการขยับโดยจำนวนเต็มจำนวนตัวอย่าง Time Domain เนื่องจากค่าเฉลี่ยเคลื่อนที่เป็นสวิทซ์ที่มีชีพจรรูปสี่เหลี่ยมผืนผ้าการตอบสนองต่อความถี่เป็นฟังก์ชัน sinc นี้ทำให้สิ่งที่ต้องการคู่ของตัวกรอง windowed sinc เนื่องจากเป็น convolution กับชีพจร sinc ที่ทำให้เกิดการตอบสนองความถี่เป็นรูปสี่เหลี่ยมผืนผ้า เป็นการตอบสนองความถี่ sinc ที่ทำให้ค่าเฉลี่ยเคลื่อนที่มีประสิทธิภาพต่ำในโดเมนความถี่ อย่างไรก็ตามจะทำงานได้ดีในโดเมนเวลา ดังนั้นจึงเหมาะที่จะทำข้อมูลให้ราบรื่นเพื่อขจัดเสียงรบกวนในขณะเดียวกันยังทำให้การตอบสนองต่อขั้นตอนอย่างรวดเร็ว (รูปที่ 1) สำหรับตัวอย่างเสียงแบบ Gaussian Noise (AWGN) ทั่วไปซึ่งมักจะสันนิษฐานโดยค่าเฉลี่ย (N) ตัวอย่างจะมีผลต่อการเพิ่ม SNR ด้วยปัจจัย (sqrt N) เนื่องจากเสียงสำหรับแต่ละตัวอย่างไม่มีความสัมพันธ์กันไม่มีเหตุผลที่จะปฏิบัติต่อแต่ละตัวอย่างแตกต่างกัน ดังนั้นค่าเฉลี่ยเคลื่อนที่ซึ่งจะทำให้แต่ละตัวอย่างมีน้ำหนักเท่ากันจึงจะสามารถกำจัดเสียงรบกวนได้สูงสุดสำหรับความคมชัดในการตอบสนองขั้นตอนที่กำหนด การดำเนินการเนื่องจากเป็นตัวกรอง FIR ค่าเฉลี่ยเคลื่อนที่สามารถนำมาใช้งานผ่านการบิด จากนั้นจะมีประสิทธิภาพเท่ากัน (หรือไม่มี) เช่นเดียวกับตัวกรอง FIR อื่น ๆ อย่างไรก็ตามสามารถนำมาใช้ซ้ำได้อย่างมีประสิทธิภาพ สูตรนี้เป็นผลมาจากนิพจน์สำหรับ (yn) และ (yn1) นั่นคือเมื่อเราสังเกตว่าการเปลี่ยนแปลงระหว่าง (yn1) และ (yn) คือคำว่าพิเศษ (xn1N) ปรากฏขึ้นที่ สิ้นสุดขณะที่คำ (xn-N1N) ถูกลบออกจากจุดเริ่มต้น ในทางปฏิบัติมักเป็นไปได้ที่จะออกไปหารด้วย (N) สำหรับแต่ละระยะโดยการชดเชยผลกำไรของ (N) ในที่อื่น การใช้งานแบบรีสตาร์ทนี้จะเร็วกว่า convolution แต่ละค่าใหม่ของ (y) สามารถคำนวณได้ด้วยการเพิ่มเพียงสองแบบแทนการเพิ่ม (N) ที่จำเป็นสำหรับการใช้คำจำกัดความที่ตรงไปตรงมา สิ่งหนึ่งที่มองออกไปด้วยการใช้งานแบบวนซ้ำคือข้อผิดพลาดในการปัดเศษจะสะสม ปัญหานี้อาจเป็นปัญหาสำหรับแอพพลิเคชันของคุณ แต่ก็หมายความว่าการใช้งานแบบรีสตาร์ทนี้จะทำงานได้ดีกว่าด้วยการใช้จำนวนเต็มมากกว่าที่มีเลขทศนิยม นี่เป็นเรื่องผิดปกติมากเนื่องจากการใช้งาน floating point มักจะง่ายกว่า ข้อสรุปของสิ่งนี้คือคุณไม่ควรประมาทประโยชน์ของตัวกรองค่าเฉลี่ยที่เคลื่อนที่ง่ายในการประมวลผลสัญญาณ เครื่องมือออกแบบตัวกรองบทความนี้ประกอบขึ้นด้วยเครื่องมือการออกแบบตัวกรอง ทดลองกับค่าที่แตกต่างกันสำหรับ (N) และให้เห็นภาพตัวกรองที่เป็นผลลัพธ์ ลองใช้ตอนนี้ 29 กันยายน 2013 ค่าเฉลี่ยเคลื่อนที่โดย convolution ค่าเฉลี่ยเคลื่อนที่และค่าเฉลี่ยอะไรคือค่าเฉลี่ยของการเคลื่อนที่โดยใช้ convolution Moving average คือการดำเนินการง่ายๆที่ใช้เพื่อลดสัญญาณรบกวนของสัญญาณ: เรากำหนดค่าของแต่ละจุด ค่าเฉลี่ยของค่าในพื้นที่ใกล้เคียง โดยสูตร: นี่ x เป็นอินพุทและ y เป็นสัญญาณเอาต์พุตในขณะที่ขนาดของหน้าต่างเป็น w ซึ่งควรจะเป็นเลขคี่ สูตรข้างต้นอธิบายการทำงานแบบสมมาตร: ตัวอย่างจะถูกนำมาจากทั้งสองด้านของจุดจริง ด้านล่างเป็นตัวอย่างชีวิตจริง จุดที่หน้าต่างวางอยู่จริงเป็นสีแดง ค่าที่อยู่นอก x ควรเป็นศูนย์: เมื่อต้องการเล่นรอบ ๆ และดูผลกระทบของค่าเฉลี่ยเคลื่อนที่ให้ดูการสาธิตแบบโต้ตอบนี้ การคำนวณค่าเฉลี่ยเคลื่อนที่ที่เรียบง่ายมีความคล้ายคลึงกับ convolution: ในทั้งสองกรณีหน้าต่างจะถูกเลื่อนไปตามสัญญาณและองค์ประกอบต่างๆในหน้าต่างจะสรุปได้ ดังนั้นให้ลองทำสิ่งเดียวกันโดยใช้ convolution ใช้พารามิเตอร์ต่อไปนี้: ผลลัพธ์ที่ต้องการคือ: เป็นวิธีแรกให้เราลองทำสิ่งที่เราได้รับโดยการ convolving สัญญาณ x โดย k kernel ต่อไปนี้: ผลลัพธ์เป็นสามเท่ามากกว่าที่คาดไว้ นอกจากนี้ยังสามารถเห็นได้ว่าค่าที่ส่งออกคือส่วนสรุปของสามองค์ประกอบในหน้าต่าง เนื่องจากในระหว่างการบิดหน้าต่างจะเลื่อนตามองค์ประกอบทั้งหมดที่อยู่ในนั้นคูณด้วยหนึ่งและสรุปได้ดังนี้: yk 1 cdot x 1 cdot x 1 cdot x เพื่อให้ได้ค่าที่ต้องการของ y เอาท์พุทจะหารด้วย 3: โดยสูตรรวมถึงการหาร: แต่จะไม่ดีที่สุดที่จะทำส่วนในช่วง convolution นี่มาคิดโดยการจัดเรียงสมการ: ดังนั้นเราจะใช้ kernel ต่อไปนี้: ด้วยวิธีนี้เราจะ รับเอาท์พุทที่ต้องการ: โดยทั่วไป: ถ้าเราต้องการทำค่าเฉลี่ยเคลื่อนที่โดย convolution ที่มีขนาดหน้าต่าง w เราจะใช้ kernel k ดังต่อไปนี้: ฟังก์ชันง่ายๆที่ทำค่าเฉลี่ยเคลื่อนที่คือ: การใช้ตัวอย่างคือ: นักวิทยาศาสตร์และวิศวกรคู่มือการประมวลผลสัญญาณดิจิตอลโดย Steven W. Smith, Ph. D. ตัวกรองค่าเฉลี่ยเคลื่อนที่จะทำงานโดยเฉลี่ยจำนวนจุดจากสัญญาณอินพุทเพื่อให้แต่ละจุดในสัญญาณเอาท์พุท ในรูปแบบสมการนี้จะถูกเขียน: สัญญาณอินพุทอยู่ที่ไหนคือสัญญาณเอาท์พุทและ M คือจำนวนจุดในค่าเฉลี่ย ตัวอย่างเช่นในตัวกรองเฉลี่ย 5 จุดจุด 80 ในสัญญาณเอาท์พุทจะได้จาก: เป็นทางเลือกกลุ่มของจุดจากสัญญาณขาเข้าสามารถเลือกสมมาตรรอบ ๆ จุดที่เอาต์พุต: นี่หมายถึงการเปลี่ยนแปลงการรวมในสมการ . 15-1 จาก: j 0 ถึง M -1, ถึง: j - (M -1) 2 ถึง (M -1) 2. ตัวอย่างเช่นในตัวกรองเฉลี่ย 10 จุดที่เคลื่อนที่ดัชนี j. สามารถทำงานได้ตั้งแต่ 0 ถึง 11 (ค่าเฉลี่ยด้านหนึ่ง) หรือ -5 ถึง 5 (ค่าเฉลี่ยสมมาตร) สมมุติฐานเฉลี่ยสมมาตรต้องการให้ M เป็นเลขคี่ การเขียนโปรแกรมทำได้ง่ายกว่าเล็กน้อยเมื่อใช้จุดบนด้านเดียว แต่จะสร้างความสัมพันธ์ระหว่างสัญญาณเข้าและสัญญาณเอาต์พุต คุณควรตระหนักว่าตัวกรองค่าเฉลี่ยเคลื่อนที่เป็น convolution โดยใช้เคอร์เนลกรองที่ง่ายมาก ตัวอย่างเช่นตัวกรอง 5 จุดมีเคอร์เนลตัวกรอง: 82300, 0, 15, 15, 15, 15, 15, 0, 08230 นั่นคือตัวกรองค่าเฉลี่ยเคลื่อนที่เป็นสัญญาณของสัญญาณอินพุตที่มีรูปสี่เหลี่ยมผืนผ้ามีพัลส์ พื้นที่หนึ่ง ตารางที่ 15-1 แสดงโปรแกรมที่จะใช้ตัวกรองค่าเฉลี่ยเคลื่อนที่โดยใช้ MATLAB ฉันจะหาค่าเฉลี่ยเคลื่อนที่ 3 วันของคอลัมน์เฉพาะของเมทริกซ์และต่อท้ายค่าเฉลี่ยเคลื่อนที่กับเมตริกซ์นั้นได้ฉันกำลังคำนวณค่า 3- วันโดยเฉลี่ยจากด้านล่างจนถึงด้านบนของเมทริกซ์ ฉันได้ให้รหัสของฉัน: กำหนดเมทริกซ์ต่อไปนี้และหน้ากาก: ฉันได้ลองใช้คำสั่ง conv แต่ฉันได้รับข้อผิดพลาด นี่คือ conv คำสั่งฉันได้พยายามใช้ในคอลัมน์ที่ 2 ของ matrix a: เอาต์พุตฉันต้องการจะได้รับในเมทริกซ์ต่อไปนี้: ถ้าคุณมีคำแนะนำใด ๆ ฉันจะขอบคุณมากมัน ขอขอบคุณสำหรับคอลัมน์ 2 ของ matrix a ฉันคำนวณค่าเฉลี่ยเคลื่อนที่ 3 วันดังนี้และใส่ผลลัพธ์ในคอลัมน์ 4 ของ matrix a (เปลี่ยนชื่อเมทริกซ์เป็น 39desiredOutput39 เพื่อแสดงภาพประกอบ) ค่าเฉลี่ย 3 วันเฉลี่ย 17, 14, 11 คือ 14 เฉลี่ย 3 วันจาก 14, 11, 8 คือ 11 เฉลี่ย 3 วันที่ 11, 8, 5 คือ 8 และค่าเฉลี่ย 3 วันของ 8, 5, 2 คือ 5. ไม่มีค่าในแถวล่าง 2 แถวสำหรับคอลัมน์ที่ 4 เนื่องจากการคำนวณค่าเฉลี่ยเคลื่อนที่ 3 วันเริ่มต้นที่ด้านล่าง ผลลัพธ์ 39valid39 จะไม่ปรากฏขึ้นจนกว่าอย่างน้อย 17, 14, และ 11. หวังว่านี่จะทำให้เกิดความรู้สึก Aaron Aaron 12 มิถุนายน 13 เวลาโดยทั่วไปแล้วจะช่วยได้ถ้าคุณจะแสดงข้อผิดพลาด ในกรณีนี้คุณกำลังทำผิดพลาด 2 ประการประการแรกต้องแบ่งความสามัคคีเป็นสามส่วน (หรือความยาวของค่าเฉลี่ยเคลื่อนที่) ประการที่สองให้สังเกตขนาดของ c คุณไม่สามารถเพียงพอดีกับ c ใน a. วิธีทั่วไปในการรับค่าเฉลี่ยเคลื่อนที่จะใช้เหมือนกัน: แต่ที่ไม่ได้มีลักษณะเหมือนที่คุณต้องการ แต่คุณต้องถูกบังคับให้ใช้สายคู่:
Comments
Post a Comment