Monday 31 July 2017

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


สร้างเมื่อวันพุธที่ 08 ตุลาคม พ. ศ. 2551 20 04 แก้ไขล่าสุดในวันพฤหัสบดีที่ 14 มีนาคม 2013 เวลา 01:29 น. เขียนโดย Batuhan Osmanoglu ผู้ชม 41577.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 เมื่อใช้ MATLAB ฉันจะหาค่าเฉลี่ยเคลื่อนที่ 3 วันของคอลัมน์เฉพาะของเมทริกซ์และเพิ่มค่าเฉลี่ยเคลื่อนที่ได้อย่างไร ที่เมทริกซ์ฉันพยายามที่จะคำนวณค่าเฉลี่ยเคลื่อนที่ 3 วันจากด้านล่างไปด้านบนของเมทริกซ์ฉันได้ให้รหัสของฉันให้เป็นไปตามเมทริกซ์ต่อไปนี้และหน้ากากฉันได้ลองใช้คำสั่ง conv แต่ฉันได้รับข้อผิดพลาด conv คำสั่งฉันได้รับการพยายามที่จะใช้ในคอลัมน์ที่ 2 ของ a. The เมทริกซ์ผลผลิตฉันต้องการจะได้รับในเมทริกซ์ต่อไปนี้ถ้าคุณมีข้อเสนอแนะใด ๆ ฉันจะขอบคุณมันขอบคุณสำหรับคอลัมน์ 2 ของเมทริกซ์ฉัน คำนวณค่าเฉลี่ยเคลื่อนที่ 3 วันดังต่อไปนี้และวางค่า resul t ในคอลัมน์ที่ 4 ของเมทริกซ์ฉันเปลี่ยนชื่อเป็นเมทริกซ์ที่ต้องการเป็นไปได้สำหรับภาพประกอบค่าเฉลี่ย 3 วันของ 17, 14, 11 คือ 14 ค่าเฉลี่ย 3 วันของ 14, 11, 8 คือ 11 ค่าเฉลี่ย 3 วันที่ 11, 8, 5 คือ 8 และค่าเฉลี่ย 3 วันของ 8, 5, 2 คือ 5 ไม่มีค่าในแถวล่าง 2 แถวสำหรับคอลัมน์ที่ 4 เนื่องจากการคำนวณค่าเฉลี่ยเคลื่อนที่ 3 วันเริ่มต้นที่ด้านล่างผลลัพธ์ที่ถูกต้องจะ ไม่แสดงจนกว่าอย่างน้อย 17, 14, และ 11 หวังว่านี่จะทำให้รู้สึก Aaron 12 มิถุนายน 13 ที่ 1 28. โดยทั่วไปจะช่วยถ้าคุณจะแสดงข้อผิดพลาดในกรณีนี้คุณกำลังทำสองสิ่งผิดแรก convolution ของคุณต้องการ หารด้วยสามหรือความยาวของค่าเฉลี่ยที่เคลื่อนที่ได้ประการที่สองให้สังเกตขนาดของ c คุณไม่สามารถพอดีกับ c ได้โดยทั่วไปวิธีปกติในการหาค่าเฉลี่ยเคลื่อนที่จะใช้ค่าเท่ากัน แต่ก็ดูไม่เหมือนที่คุณต้องการ แทนคุณถูกบังคับให้ใช้คู่ของบรรทัดดาวน์โหลด movAv m ดูยัง movAv2 - รุ่นปรับปรุงให้ weighting. Description Matlab มีฟังก์ชันที่เรียกว่า movav g และ tsmovavg เป็นค่าเฉลี่ยเคลื่อนที่ในกล่องเครื่องมือทางการเงิน movAv ถูกออกแบบมาเพื่อจำลองการทำงานพื้นฐานของโค้ดเหล่านี้โค้ดที่นี่เป็นตัวอย่างที่ดีในการจัดการดัชนีภายในลูปซึ่งอาจทำให้เกิดความสับสนในการเริ่มต้นด้วยการเก็บรหัสไว้อย่างจงใจ และเรียบง่ายเพื่อให้ขั้นตอนนี้ clear. movAv ดำเนินการค่าเฉลี่ยเคลื่อนที่แบบง่ายๆที่สามารถใช้เพื่อกู้คืนข้อมูลที่มีเสียงดังในบางสถานการณ์ทำงานโดยการใช้ค่าเฉลี่ยของอินพุท y บนหน้าต่างเวลาเลื่อนซึ่งขนาดที่ระบุโดย n n มีขนาดใหญ่กว่าจำนวนของการทำให้ราบเรียบผลของ n สัมพันธ์กับความยาวของเวกเตอร์อินพุต y และมีประสิทธิภาพดีการเรียงลำดับของการสร้างตัวกรองความถี่ลัดโหนด - ดูตัวอย่างและส่วนพิจารณาเนื่องจากจำนวนของการให้เรียบ โดยแต่ละค่าของ n จะสัมพันธ์กับความยาวของเวกเตอร์อินพุทค่าของค่าต่างกันเสมอเพื่อดูว่ามีความเหมาะสมอย่างไรโปรดจำไว้ว่าจุด n จะสูญหายไปในแต่ละค่าเฉลี่ยหาก n เท่ากับ 100, rst 99 จุดของเวกเตอร์อินพุต don t มีข้อมูลเพียงพอสำหรับค่าเฉลี่ย 100pt นี้สามารถหลีกเลี่ยงได้โดยการวางซ้อนค่าเฉลี่ยตัวอย่างเช่นโค้ดและกราฟด้านล่างเปรียบเทียบค่าเฉลี่ยของความยาวของหน้าต่างที่แตกต่างกันสังเกตว่า 10 10pt เทียบกับ 10 เฉลี่ย 20.0 ครั้งในทั้งสองกรณีข้อมูลทั้งหมดจะหายไปทั้งหมด 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 จะไม่ไปลงในรายละเอียดตามที่ไปเกินขอบเขตของบทความนี้ แต่เป็นเสียงเป็นความถี่สูงกว่าคลื่นความถี่พื้นฐานก็จะค่อนข้างง่ายในกรณีนี้เพื่อสร้าง กรองความถี่ต่ำกว่าจะลบเสียงรบกวนที่มีความถี่สูง

No comments:

Post a Comment