การย้าย ค่าเฉลี่ย กรอง matlab รหัส ตัวอย่างเช่น


สร้างเมื่อวันพุธ, 08 ตุลาคม 2551 20 04 แก้ไขล่าสุดในวันพฤหัสบดี, 14 มีนาคม 2556 01 29 เขียนโดย Batuhan Osmanoglu ผู้ชม 41574.Moving Average ใน Matlab. Often ฉันพบว่าตัวเองต้องการค่าเฉลี่ยข้อมูลที่ฉันต้องลดเสียงเล็กน้อย ฉันเขียนฟังก์ชันคู่ที่จะทำสิ่งที่ฉันต้องการ แต่ matlab s สร้างขึ้นในการทำงานของตัวกรองที่ดีงามเช่นกันที่นี่ฉันจะเขียนเกี่ยวกับ 1D และ 2D เฉลี่ยของ data.1D ตัวกรองสามารถรับรู้การใช้ฟังก์ชั่นกรองฟังก์ชั่นการกรองต้องมีอย่างน้อย สามพารามิเตอร์การป้อนค่าสัมประสิทธิ์เศษสำหรับตัวกรองขค่าสัมประสิทธิ์ตัวหารสำหรับตัวกรองและข้อมูล X ของ course. A ใช้ตัวกรองเฉลี่ยสามารถกำหนดได้โดยง่ายสำหรับข้อมูล 2D เราสามารถใช้ฟังก์ชัน filter2 Matlab s สำหรับข้อมูลเพิ่มเติม เกี่ยวกับวิธีการทำงานของตัวกรองคุณสามารถพิมพ์ที่นี่มีการดำเนินการอย่างรวดเร็วและสกปรกของ 16 โดย 16 ย้ายเฉลี่ยกรองแรกที่เราจำเป็นต้องกำหนดตัวกรองเนื่องจากสิ่งที่เราต้องการมีส่วนร่วมเท่าเทียมกันของเพื่อนบ้านทั้งหมดที่เราสามารถใช้คนสนุก ction เราหารทุกอย่างด้วย 256 16 16 เนื่องจากเราไม่ต้องการเปลี่ยนความกว้างของสัญญาณในระดับทั่วไปเมื่อต้องการใช้ตัวกรองเราสามารถกล่าวได้ว่าต่อไปนี้คือผลลัพธ์ของเฟส SAR ในกรณีนี้ช่วงอยู่ใน แกน Y และ Azimuth จะถูกแมปกับแกน X ตัวกรองมีขนาดกว้าง 4 พิกเซลในช่วงกว้างและ 16 พิกเซลใน Azimuth. Download mov สามารถดูได้จาก movAv2 ซึ่งเป็นเวอร์ชันที่ปรับปรุงใหม่ซึ่งจะช่วยให้การถ่วงน้ำหนัก Matrix Matlab มีฟังก์ชันที่เรียกว่า movavg และ tsmovavg time-series moving average ในกล่องเครื่องมือทางการเงิน movAv ได้รับการออกแบบมาเพื่อจำลองการทำงานพื้นฐานของโค้ดเหล่านี้โค้ดที่นี่เป็นตัวอย่างที่ดีในการจัดการดัชนีภายในลูปซึ่งอาจทำให้เกิดความสับสนในการเริ่มต้นด้วยการเก็บรวบรวมรหัสไว้อย่างจงใจและสั้นเพื่อให้กระบวนการนี้ชัดเจน movAv มีค่าเฉลี่ยเคลื่อนที่ที่สามารถใช้ในการกู้คืนข้อมูลที่มีเสียงดังในบางสถานการณ์ได้โดยใช้ค่าเฉลี่ยของอินพุท y บนหน้าต่างเวลาเลื่อนซึ่งมีขนาดระบุโดย n n มีขนาดใหญ่กว่าจำนวนของการทำให้ราบเรียบผลของ n สัมพันธ์กับความยาวของเวกเตอร์อินพุต y และมีประสิทธิภาพดีการเรียงลำดับของการสร้างตัวกรองความถี่ลัดโหนด - ดูตัวอย่างและส่วนพิจารณาเนื่องจากจำนวนของการให้เรียบ โดยแต่ละค่าของ n จะสัมพันธ์กับความยาวของเวกเตอร์อินพุทค่าของค่าที่ทดสอบจะแตกต่างกันไปเสมอเพื่อดูว่ามีความเหมาะสมอย่างไรโปรดจำไว้ว่าจุด n จะสูญหายไปในแต่ละค่าเฉลี่ยถ้า n เท่ากับ 100 จุดแรกของอินพุตเวกเตอร์ don t มีข้อมูลเพียงพอสำหรับค่าเฉลี่ย 100pt นี้สามารถหลีกเลี่ยงได้บ้างโดยการวางซ้อนค่าเฉลี่ยเช่นโค้ดและกราฟด้านล่างเปรียบเทียบค่าเฉลี่ยของความยาวของหน้าต่างที่แตกต่างกันสังเกตว่าเรียบ 10 10pt เมื่อเทียบกับค่าเฉลี่ย 20pt เดียวในทั้งสองกรณี 20 จุดข้อมูลสูญหายไปทั้งหมด สร้าง xaxis x 1 0 01 5 สร้างเสียงรบกวนรบกวน 4 เสียงเรียกร้องผิดพลาด 1 เสียงเงียบเสียงรบกวน 1 เสียงเงียบเสียงรบกวน 1 เสียงรบกวนที่สร้างขึ้นใหม่ 1 เสียงรบกวนความยาวเสียงรบกวนก่อให้เกิดเสียง ydata y exp x 10 เสียง 1 ความยาว 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 พล็อตล็อตล็อต x, y, y2, y3, y4, y5, y6 ตำนาน Raw ข้อมูล, ค่าเฉลี่ยเคลื่อนที่ 10pt, 10 10pt, 20pt, 40pt, 100pt xlabel x yolabel y title การเปรียบเทียบการเคลื่อนที่โดยเฉลี่ย movAv รหัส m run-through function output movAv y, n บรรทัดแรกกำหนดชื่อฟังก์ชันอินพุทและเอาต์พุตอินพุท x ควรเป็นเวกเตอร์ของข้อมูลที่จะใช้ค่าเฉลี่ยเมื่อ n ควรเป็นจำนวนจุดที่จะทำค่าเฉลี่ยมากกว่าเอาต์พุตจะมีข้อมูลเฉลี่ยที่ส่งกลับโดยฟังก์ชัน Preallocate output output NaN 1, numel y หาจุดกึ่งกลางของ n midPoint round n 2 งานหลักของฟังก์ชั่นจะทำใน loop for แต่ก่อนที่จะเริ่มเตรียม 2 สิ่งคือ Fir stally output เป็น pre - จัดสรรเป็น NaNs นี้ทำหน้าที่สองวัตถุประสงค์ preallocation แรกคือการปฏิบัติที่ดีตามที่ลดหน่วยความจำเล่นกล Matlab ต้องทำประการที่สองก็ทำให้ง่ายในการวางข้อมูลเฉลี่ยเป็นเอาท์พุทขนาดเดียวกับ อินพุทเวกเตอร์หมายความว่า xaxis เดียวกันสามารถใช้งานได้ทั้งสองแบบซึ่งเหมาะสำหรับการวางแผนหรือสามารถถอด NaN ออกได้ในหนึ่งบรรทัดของเอาท์พุทเอาท์พุทแบบย่อส่วน midpoint ตัวแปรจะใช้เพื่อจัดตำแหน่งข้อมูลในเวกเตอร์การแสดงผล ถ้า n 10 จะหายไป 10 จุดเนื่องจากใน 9 จุดแรกของเวกเตอร์อินพุตไม่มีข้อมูลเพียงพอที่จะใช้ค่าเฉลี่ย 10 จุดเนื่องจากเอาท์พุทจะสั้นกว่าข้อมูลอินพุทจะต้องมีการปรับตำแหน่งอย่างถูกต้อง midPoint จะ จะใช้เพื่อให้จำนวนข้อมูลที่เท่ากันจะหายไปเมื่อเริ่มต้นและสิ้นสุดและอินพุตจะถูกเก็บให้สอดคล้องกับผลลัพธ์โดยบัฟเฟอร์ NaN ที่สร้างขึ้นเมื่อตั้งค่าเอาต์พุตล่วงหน้าสำหรับความยาว 1 n-n ค้นหาช่วงดัชนีที่จะใช้ค่าเฉลี่ยมากกว่า abban คำนวณ ผลลัพธ์เฉลี่ย a midPoint หมายถึง yab end ในลูปสำหรับตัวเองค่าเฉลี่ยจะถูกยึดในแต่ละส่วนติดต่อกันของการป้อนข้อมูลลูปจะทำงานสำหรับ a ซึ่งกำหนดไว้เป็น 1 ถึงความยาวของอินพุต y ลบข้อมูลที่จะสูญหาย n ถ้า ใส่เป็น 100 จุดยาวและ n คือ 10, ห่วงจะทำงานจาก 1 ถึง 90 ซึ่งหมายถึงให้ดัชนีแรกของกลุ่มที่จะเฉลี่ยดัชนีที่สอง b เป็นเพียง n - 1 ดังนั้นในการทำซ้ำครั้งแรก, 1 n 10 ดังนั้น b 11-1 10 ค่าเฉลี่ยแรกจะถูกยึด yab หรือ x 1 10 ค่าเฉลี่ยของส่วนนี้ซึ่งเป็นค่าเดียวจะถูกเก็บไว้ในเอาท์พุทที่จุดกึ่งกลางของจุดศูนย์หรือ 1 5 6. บนซ้ำที่สอง , 2 b 2 10-1 11 ดังนั้นค่าเฉลี่ยจะถูกยึด x 2 11 และเก็บไว้ในเอาต์พุต 7 ในรอบสุดท้ายของลูปสำหรับอินพุทที่มีความยาว 100, 91 b 90 10-1 100 ดังนั้นค่าเฉลี่ยจะถูกนำมา มากกว่า x 91 100 และเก็บไว้ในเอาท์พุท 95 ใบนี้จะส่งผลให้มีค่า N 10 nn ที่ดัชนี 1 5 และ 96 100 ตัวอย่างและข้อควรคำนึงการย้ายค่าเฉลี่ยจะเป็นประโยชน์ในบางสถานการณ์ นี่คือตัวอย่างสองแบบที่พวกเขาไม่จำเป็นต้องดีที่สุดการปรับเทียบของไมโครโฟนชุดข้อมูลนี้แสดงถึงระดับของแต่ละความถี่ที่ผลิตโดยลำโพงและบันทึกโดยไมโครโฟนโดยมีการตอบสนองเชิงเส้นที่เป็นที่รู้จักเอาท์พุทของลำโพงแตกต่างกันไป ความถี่ แต่เราสามารถแก้ไขรูปแบบนี้ด้วยข้อมูลการสอบเทียบได้ - เอาท์พุทสามารถปรับระดับได้เพื่อให้เกิดความผันผวนในการสอบเทียบข้อมูลที่ข้อมูลดิบมีเสียงดัง - นั่นหมายความว่าการเปลี่ยนแปลงเล็กน้อยในความถี่จะต้องเกิดขึ้น ขนาดใหญ่ผิดปกติการเปลี่ยนแปลงระดับในบัญชีสำหรับเป็นจริงหรือเป็นผลิตภัณฑ์ของสภาพแวดล้อมการบันทึกเป็นอย่างเหมาะสมในกรณีนี้เพื่อใช้ค่าเฉลี่ยเคลื่อนที่ที่คลี่ออกโค้งระดับความถี่เพื่อให้เส้นโค้งการสอบเทียบที่น้อยผิดปกติ แต่ทำไมไม่เหมาะกับกรณีนี้ในตัวอย่างนี้ข้อมูลอื่น ๆ จะดีกว่า - การสอบเทียบหลายครั้งทำงานโดยเฉลี่ยจะทำลายเสียงในระบบตราบเท่าที่ยังมีการวิ่ง dom และให้เส้นโค้งที่มีรายละเอียดปลีกย่อยน้อยลงค่าเฉลี่ยเคลื่อนที่สามารถประมาณค่านี้ได้เท่านั้นและอาจลบค่า dips และ peaks ที่สูงขึ้นบางส่วนออกจากเส้นโค้งที่เกิดขึ้นได้จริงคลื่น Sine การใช้ค่าเฉลี่ยเคลื่อนที่บนคลื่นซายน์ ปัญหาของการเลือกจำนวนที่เหมาะสมของจุดที่จะดำเนินการเฉลี่ย over. It มันง่าย แต่มีวิธีการที่มีประสิทธิภาพมากขึ้นในการวิเคราะห์สัญญาณมากกว่าค่าเฉลี่ยสัญญาณสั่นในโดเมนเวลาในกราฟนี้คลื่นไซน์เดิมเป็นพล็อตในเสียงสีฟ้าคือ เพิ่มและวางแผนเป็นเส้นโค้งสีส้มค่าเฉลี่ยเคลื่อนที่จะถูกดำเนินการที่จุดต่างกันเพื่อดูว่าคลื่นต้นฉบับสามารถฟื้นตัวได้ 5 และ 10 จุดให้ผลลัพธ์ที่สมเหตุสมผล แต่อย่าเอาเสียงออกทั้งหมดซึ่งเป็นจำนวนจุดเริ่มต้นมากขึ้น สูญเสียรายละเอียด amplitude เป็นค่าเฉลี่ยขยายไปในช่วงที่แตกต่างกันจำคลื่น oscilates รอบศูนย์และค่าเฉลี่ย -1 1 0.An ทางเลือกจะสร้างตัวกรอง lowpass กว่าสามารถ ใช้กับสัญญาณในโดเมนความถี่ I m จะไม่ไปลงในรายละเอียดตามที่ไปเกินขอบเขตของบทความนี้ แต่เป็นเสียงเป็นความถี่สูงกว่าคลื่นความถี่พื้นฐานก็จะค่อนข้างง่ายในกรณีนี้เพื่อสร้าง กรอง lowpass จะช่วยลดเสียงรบกวนจากความถี่สูงตัวอย่างนี้แสดงวิธีการใช้ตัวกรองเฉลี่ยแบบเคลื่อนไหวและ resampling เพื่อแยกแยะผลกระทบของส่วนประกอบที่เป็นระยะ ๆ ของเวลาในการอ่านอุณหภูมิรายชั่วโมงตลอดจนเอาเสียงรบกวนที่ไม่พึงประสงค์จาก open - การวัดแรงดันลูปตัวอย่างยังแสดงวิธีทำให้ระดับสัญญาณนาฬิกาลดลงในขณะที่รักษาขอบโดยใช้ตัวกรองค่ามัธยฐานตัวอย่างยังแสดงวิธีการใช้ตัวกรอง Hampel เพื่อขจัดข้อผิดพลาดที่มีนัยสำคัญการเลื่อนลอยคือวิธีที่เราค้นพบรูปแบบที่สำคัญในข้อมูลของเรา ในขณะที่ออกจากสิ่งที่ไม่สำคัญเช่นเสียงเราใช้กรองเพื่อดำเนินการเรียบนี้เป้าหมายของการทำให้ราบรื่นคือการผลิตการเปลี่ยนแปลงที่ช้าในค่าเพื่อให้ง่ายต่อการดู tr สิ้นสุดในข้อมูลของเราบางครั้งเมื่อคุณตรวจสอบข้อมูลการป้อนข้อมูลที่คุณอาจต้องการเรียบข้อมูลเพื่อดูแนวโน้มในสัญญาณในตัวอย่างของเราเรามีชุดของการอ่านอุณหภูมิในเซลเซียสถ่ายทุกชั่วโมงที่สนามบิน Logan สำหรับทั้งเดือนของ มกราคม 2011. โปรดทราบว่าเรามองเห็นผลกระทบที่เวลาในแต่ละวันมีต่อการอ่านค่าอุณหภูมิหากคุณสนใจเฉพาะการเปลี่ยนแปลงอุณหภูมิรายวันในแต่ละเดือนความผันผวนรายชั่วโมงจะมีส่วนทำให้เกิดเสียงรบกวนเท่านั้นซึ่งสามารถทำให้รูปแบบรายวันเป็นไปได้ยาก เพื่อแยกแยะผลกระทบของเวลาในวันนี้ตอนนี้เราต้องการให้ข้อมูลของเราราบรื่นโดยใช้ตัวกรองเฉลี่ยเคลื่อนที่ตัวกรองเฉลี่ยเคลื่อนที่ในรูปแบบที่ง่ายที่สุดตัวกรองค่าเฉลี่ยเคลื่อนที่ของระยะเวลา N จะใช้เวลาเฉลี่ยของทุก N ตัวอย่างต่อเนื่องของรูปคลื่นเพื่อใช้ตัวกรองค่าเฉลี่ยเคลื่อนที่กับแต่ละจุดข้อมูลเราจะสร้างค่าสัมประสิทธิ์ของตัวกรองของเราเพื่อให้แต่ละจุดมีการถ่วงน้ำหนักอย่างเท่าเทียมกันและมีส่วนช่วยให้ค่าเฉลี่ยของค่าเฉลี่ยเท่ากับ 24 ถึง 24 อุณหภูมิในแต่ละรอบ 24 ชั่วโมงความล่าช้าของตัวกรองโปรดทราบว่าผลลัพธ์ที่กรองออกจะล่าช้าประมาณสิบสองชั่วโมงนั่นคือความจริงที่ว่าตัวกรองค่าเฉลี่ยเคลื่อนที่ของเรามีความล่าช้าตัวกรองสมมาตรของ N จะมีความล่าช้าของ N-1 ตัวอย่างเราสามารถบัญชีสำหรับความล่าช้านี้ด้วยตนเองการดึงค่าเฉลี่ยความแตกต่างนอกจากนี้เรายังสามารถใช้ตัวกรองค่าเฉลี่ยเคลื่อนที่เพื่อให้ได้ค่าประมาณที่ดีขึ้นว่าช่วงเวลาของวันมีผลต่ออุณหภูมิโดยรวมอย่างไรโดยการทำเช่นนี้ก่อนอื่นให้ลบข้อมูลที่ราบรื่นออกจาก การวัดอุณหภูมิรายชั่วโมงจากนั้นให้แบ่งข้อมูลที่แตกต่างกันออกเป็นวันและใช้เวลาเฉลี่ยมากกว่า 31 วันในเดือนที่ผนวก Peak Envelope บางครั้งเรายังต้องการมีการประเมินความแตกต่างของความดังและอุณหภูมิต่ำของสัญญาณอุณหภูมิของเราได้อย่างราบรื่น daily การทำเช่นนี้เราสามารถใช้ฟังก์ชั่นซองจดหมายเพื่อเชื่อมต่อเสียงสูงและต่ำสุดที่ตรวจพบได้ในเซตย่อยของช่วงเวลา 24 ชั่วโมงในตัวอย่างนี้เรามั่นใจว่าจะมีเวลาอย่างน้อย 16 ชั่วโมงระหว่างแต่ละจุดสูงสุด และต่ำสุดเรายังสามารถรับรู้ได้ว่าเสียงสูงและต่ำมีแนวโน้มอย่างไรโดยการใช้ค่าเฉลี่ยระหว่างสองตัวกรองที่มีค่ายิ่งสุดตัวกรองที่มีอัตราการเคลื่อนที่เฉลี่ยอื่น ๆ ไม่ได้วัดค่าตัวกรองแต่ละตัวเท่า ๆ กันเช่นกัน การขยายตัวของตัวกรองชนิดนี้จะประมาณเส้นโค้งปกติสำหรับค่าที่มีขนาดใหญ่ n จะมีประโยชน์ในการกรองเสียงรบกวนความถี่สูงสำหรับ n เล็ก ๆ เพื่อหาค่าสัมประสิทธิ์สำหรับตัวกรองแบบทวินามให้หมุนวนด้วยตัวเองแล้วค่อยๆหมุนเอาท์พุทด้วยจำนวนที่กำหนด ครั้งในตัวอย่างนี้ให้ใช้การวนซ้ำทั้งหมดห้าครั้งตัวกรองอื่นคล้ายกับตัวขยายตัวแบบ Gaussian คือตัวกรองอัตราการเคลื่อนที่แบบเลขยกต่ำแบบละเอียดตัวกรองค่าเฉลี่ยเคลื่อนที่แบบถ่วงน้ำหนักชนิดนี้ใช้งานง่ายและไม่จำเป็นต้องมีขนาดหน้าต่างใหญ่คุณสามารถปรับการถ่วงน้ำหนักแบบทวีคูศ ตัวกรองเฉลี่ยเคลื่อนที่โดยใช้พารามิเตอร์อัลฟาระหว่างศูนย์กับหนึ่งค่าที่สูงขึ้นของอัลฟาจะทำให้การแสดงผลมีค่าน้อยลง วันหนึ่งเลือกประเทศของคุณ

Comments