Thursday 20 July 2017

วิธี การ คำนวณ เฉลี่ยเคลื่อนที่ ใน Matlab


ฉันต้องคำนวณค่าเฉลี่ยที่เคลื่อนที่เหนือชุดข้อมูลภายในลูปสำหรับ ฉันต้องได้รับค่าเฉลี่ยเคลื่อนที่มากกว่า N9 วัน การคำนวณ Im array เป็นค่า 365 ค่า (M) ซึ่งเป็นค่าเฉลี่ยของชุดข้อมูลอื่น ฉันต้องการคำนวณค่าเฉลี่ยของข้อมูลโดยมีค่าเฉลี่ยเคลื่อนที่ในพล็อตเดียว ฉัน googled เล็กน้อยเกี่ยวกับการย้ายเฉลี่ยและคำสั่ง conv และพบสิ่งที่ฉันพยายามใช้ในรหัสของฉัน: ดังนั้นโดยทั่วไปฉันคำนวณค่าเฉลี่ยของฉันและพล็อตมันด้วยค่าเฉลี่ยเคลื่อนที่ (ผิด) ฉันเลือกค่า wts จากเว็บไซต์ mathworks เพื่อที่ไม่ถูกต้อง (source: mathworks. nlhelpeconmoving-average-trend-estimation. html) ปัญหาของฉันแม้ว่าเป็นที่ฉันไม่เข้าใจสิ่งที่เป็น wts นี้ ทุกคนสามารถอธิบายได้ถ้ามีบางสิ่งที่เกี่ยวข้องกับน้ำหนักของค่า: นั่นคือไม่ถูกต้องในกรณีนี้ ค่าทั้งหมดมีน้ำหนักเท่ากัน ถ้าฉันทำผิดอย่างนี้ฉันขอความช่วยเหลือด้วยความจริงใจขอบคุณ ถาม 23 กันยายนเวลา 14.00 น. เวลา 19:05 น. การใช้ Conv คือวิธีที่ยอดเยี่ยมในการใช้ค่าเฉลี่ยเคลื่อนที่ ในรหัสที่คุณกำลังใช้ wts คือจำนวนที่คุณชั่งน้ำหนักแต่ละค่า (ตามที่คุณคาดเดา) ผลรวมของเวกเตอร์นั้นควรมีค่าเท่ากับหนึ่ง ถ้าคุณต้องการที่จะให้น้ำหนักแต่ละค่าเท่ากันและทำตัวกรองการเคลื่อนย้าย N ขนาดแล้วคุณจะต้องการใช้การใช้อาร์กิวเมนต์ที่ถูกต้องใน conv จะทำให้มีค่าน้อยกว่า Ms มากกว่าที่คุณมีใน M. ใช้เหมือนกันถ้าคุณไม่ทราบผลกระทบของ ศูนย์ padding หากคุณมีกล่องเครื่องมือในการประมวลผลสัญญาณคุณสามารถใช้ cconv ถ้าต้องการลองใช้ค่าเฉลี่ยเคลื่อนที่แบบวงกลม สิ่งที่ต้องการคุณควรอ่านเอกสาร conv และ cconv เพื่อดูข้อมูลเพิ่มเติมหากยังไม่ได้ทำ คุณสามารถใช้ตัวกรองเพื่อหาค่าเฉลี่ยในการทำงานโดยไม่ใช้ลูปสำหรับ ตัวอย่างนี้จะหาค่าเฉลี่ยการทำงานของเวกเตอร์ 16 องค์ประกอบโดยใช้ขนาดหน้าต่างเป็น 5 2) เรียบเป็นส่วนหนึ่งของ Curve Fitting Toolbox (ซึ่งมีให้บริการในกรณีส่วนใหญ่) yy smooth (y) ทำให้ข้อมูลในเวกเตอร์ของคอลัมน์เรียบ y โดยใช้ตัวกรองค่าเฉลี่ยเคลื่อนที่ ผลลัพธ์จะถูกส่งกลับในเวกเตอร์ของคอลัมน์ yy ช่วงค่าเริ่มต้นสำหรับค่าเฉลี่ยเคลื่อนที่คือ 5.Created on Wednesday, 08 October 2008 20:04 แก้ไขล่าสุดในวันพฤหัสบดีที่ 14 มีนาคม 2013 เวลา 01:29 น. เขียนโดย Batuhan Osmanoglu ผู้ชม: 41499 Moving Average ใน Matlab บ่อยครั้งฉันพบว่าตัวเองต้องการค่าเฉลี่ย ข้อมูลที่ฉันต้องลดเสียงเล็กน้อย ฉันเขียนฟังก์ชันคู่ที่จะทำสิ่งที่ฉันต้องการ แต่ MATLABs สร้างขึ้นในฟังก์ชั่นกรองทำงานได้ดีเช่นกัน ที่นี่ฉันเขียนเกี่ยวกับ 1D และ 2D เฉลี่ยของข้อมูล สามารถใช้ตัวกรองแบบ 1D ได้โดยใช้ตัวกรอง ฟังก์ชั่นการกรองจำเป็นต้องใช้พารามิเตอร์ป้อนข้อมูลอย่างน้อยสามตัว ได้แก่ ค่าสัมประสิทธิ์การนับสำหรับตัวกรอง (b) ค่าสัมประสิทธิ์ตัวหารสำหรับตัวกรอง (a) และข้อมูล (X) แน่นอน ตัวกรองค่าเฉลี่ยที่ใช้งานได้สามารถกำหนดได้โดย: สำหรับข้อมูล 2D เราสามารถใช้ฟังก์ชัน Matlabs filter2 ได้ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการทำงานของตัวกรองคุณสามารถพิมพ์ได้: นี่คือการใช้ตัวกรองเฉลี่ย 16 ถึง 16 ที่รวดเร็วและสกปรก ขั้นแรกเราต้องกำหนดตัวกรอง เนื่องจากสิ่งที่เราต้องการคือการมีส่วนร่วมเท่าเทียมกันของเพื่อนบ้านทั้งหมดเราจึงสามารถใช้ฟังก์ชันเหล่านี้ได้ เราแบ่งทุกอย่างด้วย 256 (1616) เนื่องจากเราไม่ต้องการเปลี่ยนระดับทั่วไป (amplitude) ของสัญญาณ ในการใช้ตัวกรองเราสามารถพูดได้ว่าด้านล่างนี้เป็นผลลัพธ์ของระยะ interferogram ของ SAR ในกรณีนี้ Range อยู่ในแกน Y และ Azimuth จะถูกแมปกับแกน X ตัวกรองมีความกว้าง 4 พิกเซลในช่วงและกว้าง 16 พิกเซลใน Azimuth. Ive มีเวกเตอร์และฉันต้องการคำนวณค่าเฉลี่ยเคลื่อนที่ของ (ใช้หน้าต่างกว้าง 5) ตัวอย่างเช่นถ้าเวกเตอร์ที่เป็นปัญหา 1,2,3,4,5,6,7,8 จากนั้นรายการแรกของเวกเตอร์ผลลัพธ์ควรเป็นผลรวมของรายการทั้งหมดใน 1,2,3,4,5 (เช่น 15) รายการที่สองของเวกเตอร์ที่ได้ควรเป็นผลรวมของรายการทั้งหมดใน 2,3,4, 5,6 (เช่น 20) เป็นต้นในท้ายที่สุดเวกเตอร์ที่ได้ควรเป็น 15,20,25,30 ฉันจะทำอย่างไรได้ฟังก์ชั่น conv จะอยู่ที่ซอยของคุณ: สามคำตอบสามวิธีที่ต่างกัน นี่คือเกณฑ์มาตรฐานอย่างรวดเร็ว (ขนาดอินพุตต่างกันความกว้างของหน้าต่างคงที่เท่ากับ 5) โดยใช้ timeit สามารถเจาะรูในนั้นได้ (ในความคิดเห็น) ถ้าคุณคิดว่าจำเป็นต้องได้รับการขัดเกลา conv ปรากฏเป็นวิธีที่เร็วที่สุดประมาณสองเท่าของวิธีเหรียญ (ใช้ตัวกรอง) และประมาณสี่ครั้งเร็วเท่าวิธี Luis Mendos (ใช้ cumsum) นี่คือเกณฑ์มาตรฐานอื่น (ขนาดอินพุตคงที่ที่ 1e4 ความกว้างของหน้าต่างที่ต่างกัน) ที่นี่วิธีการ Luis Mendos cumsum โผล่ออกมาเป็นผู้ชนะที่ชัดเจนเพราะความซับซ้อนของมันเป็นหลักควบคุมโดยความยาวของอินพุทและไม่รู้สึกไวต่อความกว้างของหน้าต่าง สรุปสรุปคุณควรใช้วิธี conv ถ้าหน้าต่างของคุณมีขนาดค่อนข้างเล็กให้ใช้วิธี cumsum ถ้าหน้าต่างของคุณมีขนาดค่อนข้างใหญ่ คำนวณค่าเฉลี่ยเคลื่อนที่โดยใช้ฟังก์ชัน MATLAB เท่านั้นตัวอย่างนี้แสดงวิธีการคำนวณค่าเฉลี่ยเคลื่อนที่ของสัญญาณโดยใช้ฟังก์ชัน movmean ฟังก์ชัน movmean คำนวณค่าเฉลี่ยเคลื่อนที่ 10 จุดของข้อมูลที่มีเสียงดังจาก accelerometer สามคอลัมน์ในข้อมูลนี้แสดงถึงการเร่งแบบเชิงเส้นของเครื่องวัดความเร่งใน X - axis, Y - axis และ Z - axis ตามลำดับ ข้อมูลทั้งหมดมีอยู่ในไฟล์ MAT พล็อตค่าเฉลี่ยเคลื่อนที่ของข้อมูล X - ax ข้อมูลไม่ใหญ่มาก (7140 ตัวอย่างในแต่ละคอลัมน์) และมีทั้งสำหรับการประมวลผล ฟังก์ชัน movmean ได้รับการออกแบบมาเพื่อจัดการกับการคำนวณแบบครั้งเดียวดังกล่าว อย่างไรก็ตามหากข้อมูลมีขนาดใหญ่เช่นในคำสั่งของ GB หรือถ้าข้อมูลเป็นสตรีมแบบสดที่ต้องผ่านการประมวลผลแบบเรียลไทม์จากนั้นให้ใช้วัตถุระบบ อ็อบเจ็กต์ System แบ่งข้อมูลออกเป็นส่วนที่เรียกว่าเฟรมและประมวลผลแต่ละเฟรมในลูปวนซ้ำ ๆ กัน วิธีนี้เป็นหน่วยความจำที่มีประสิทธิภาพเพราะมีการประมวลผลข้อมูลเพียงหนึ่งเฟรมในเวลาใดก็ตาม นอกจากนี้อ็อบเจ็กต์ System จะปรับให้เหมาะสมกับสถานะภายใน MATLAB และ Simulink เป็นเครื่องหมายการค้าจดทะเบียนของ The MathWorks, Inc. โปรดดู mathworkstrademarks สำหรับรายการเครื่องหมายการค้าอื่น ๆ ที่เป็นของ The MathWorks, Inc. ชื่อผลิตภัณฑ์หรือแบรนด์อื่น ๆ เป็นเครื่องหมายการค้าหรือเครื่องหมายการค้าจดทะเบียนของเจ้าของที่เกี่ยวข้อง เลือกประเทศของคุณ

No comments:

Post a Comment