Monday 7 August 2017

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


ตัวกรองข้อมูลการเข้าชมตามอัตราการเคลื่อนที่โดยเฉลี่ยตัวอย่างนี้แสดงวิธีทำให้ข้อมูลการจราจรไหลลื่นไหลโดยใช้ตัวกรองเฉลี่ยเคลื่อนที่โดยมีหน้าต่างเลื่อน 4 ชั่วโมง สมการความแตกต่างต่อไปนี้จะอธิบายตัวกรองที่คำนวณค่าเฉลี่ยของชั่วโมงปัจจุบันและข้อมูลที่ผ่านมาสามชั่วโมง นำเข้าข้อมูลการจราจรและกำหนดคอลัมน์แรกของการนับยานพาหนะไปยังเวกเตอร์ x สร้างตัวกรองสัมบูรณ์เวกเตอร์ คำนวณค่าเฉลี่ยเคลื่อนที่ 4 ชั่วโมงของข้อมูลและคัดลอกข้อมูลต้นฉบับและข้อมูลที่กรอง MATLAB และ Simulink เป็นเครื่องหมายการค้าจดทะเบียนของ The MathWorks, Inc. โปรดดู mathworkstrademarks สำหรับรายการเครื่องหมายการค้าอื่น ๆ ที่เป็นของ The MathWorks, Inc. ชื่อผลิตภัณฑ์หรือแบรนด์อื่น ๆ เป็นเครื่องหมายการค้าหรือเครื่องหมายการค้าจดทะเบียนของเจ้าของที่เกี่ยวข้อง เลือกประเทศของคุณดาวน์โหลด movAv. m (ดูเพิ่มเติมได้ที่ movAv2 - เป็นเวอร์ชันอัปเดตที่ช่วยให้การถ่วงน้ำหนัก) คำอธิบาย Matlab มีฟังก์ชันที่เรียกว่า movavg และ tsmovavg (ค่าเฉลี่ยเคลื่อนที่แบบเรียลไทม์) ในกล่องเครื่องมือทางการเงิน movAv ได้รับการออกแบบมาเพื่อทำซ้ำฟังก์ชันพื้นฐานของไฟล์เหล่านี้ โค้ดที่นี่เป็นตัวอย่างที่ดีในการจัดการดัชนีภายในลูปซึ่งอาจทำให้เกิดความสับสนในการเริ่มต้นด้วย Ive จงใจเก็บรหัสสั้นและง่ายเพื่อให้ขั้นตอนนี้ชัดเจน movAv มีค่าเฉลี่ยเคลื่อนที่โดยเฉลี่ยที่สามารถใช้เพื่อกู้คืนข้อมูลที่มีเสียงดังได้ในบางสถานการณ์ มันทำงานโดยการใช้ค่าเฉลี่ยของอินพุท (y) ในหน้าต่างเวลาเลื่อนซึ่งมีขนาดระบุโดย n n ที่มีขนาดใหญ่มากยิ่งขึ้นจำนวนของการทำให้ราบเรียบผลของ n สัมพันธ์กับความยาวของเวคเตอร์อินพุต y และมีประสิทธิภาพ (ดีจัดเรียง) สร้างตัวกรองความถี่ต่ำ - ดูตัวอย่างและส่วนพิจารณา เนื่องจากจำนวนการทำให้ราบเรียบที่ให้มาโดยแต่ละค่าของ n สัมพันธ์กับความยาวของเวกเตอร์อินพุตค่าของค่าที่ทดสอบจะแตกต่างกันไปเพื่อดูว่าอะไรเหมาะสม จำไว้ว่าจุด n จะสูญหายไปในแต่ละค่าเฉลี่ยหาก n เท่ากับ 100 จุดแรกของอินพุทเวกเตอร์ dont มีข้อมูลเพียงพอสำหรับค่าเฉลี่ย 100pt ซึ่งสามารถหลีกเลี่ยงได้โดยการวางซ้อนค่าเฉลี่ยตัวอย่างเช่นโค้ดและกราฟด้านล่างจะเปรียบเทียบค่าเฉลี่ยของหน้าต่างความยาวที่ต่างกัน แจ้งให้ทราบว่าเปรียบเทียบ 1010pt กับค่าเฉลี่ย 20pt เพียงอย่างเดียว ในทั้งสองกรณี 20 จุดของข้อมูลจะสูญหายไปทั้งหมด สร้าง xaxis x1: 0.01: 5 ก่อให้เกิด noise noise เกิดสัญญาณรบกวน 4 noise repmat (randn (1, ceil (numel (x) noiseReps)), noiseReps, 1) noise reshape (noise, 1, noise) noiseReps) สร้าง ydata noise yexp (y, 10) 10 pt y3 movAv (y2, 10) 1010 pt y4 movAv (y, 20) 20 pt y5 movAv (y, 40) 40 pt. 10noise (1: length (x)) รายละเอียดขั้นสูง: y2 movAv y6 movAv (y, 100) 100 pt พล็อตตัวเลขพล็อต (x, y, y2, y3, y4, y5, y6) (ข้อมูลดิบ, 10pt เฉลี่ยเคลื่อนที่, 1010pt, 20pt, 40pt, 100pt) xlabel (x) ylabel y) title (การเปรียบเทียบค่าเฉลี่ยเคลื่อนที่) movAv. m code run-through function output movAv (y, n) บรรทัดแรกกำหนดชื่อฟังก์ชันอินพุตและเอาต์พุต อินพุท x ควรเป็นเวกเตอร์ของข้อมูลที่จะใช้ค่าเฉลี่ยเมื่อ n ควรเป็นจำนวนจุดที่จะทำค่าเฉลี่ยมากกว่าเอาท์พุทจะมีข้อมูลเฉลี่ยที่ส่งกลับโดยฟังก์ชัน หาจุดกึ่งกลางของ n midPoint round (n2) งานหลักของฟังก์ชันจะทำในลูป for แต่ก่อนที่จะเริ่มเตรียมสองสิ่ง ประการแรกเอาต์พุตถูกจัดสรรล่วงหน้าเป็น NaN ซึ่งทำหน้าที่สองประการ preallocation แรกคือการปฏิบัติที่ดีโดยทั่วไปเนื่องจากลดการเล่นกลของหน่วยความจำ Matlab ต้องทำประการที่สองทำให้ง่ายในการวางข้อมูลเฉลี่ยเป็นเอาต์พุตขนาดเดียวกับเวกเตอร์อินพุท ซึ่งหมายความว่า xaxis เดียวกันสามารถใช้งานได้ในภายหลังทั้งสองแบบซึ่งเหมาะสำหรับการวางแผนหรือสามารถถอด NaN ออกได้ในหนึ่งบรรทัดของรหัส (เอาท์พุทเอาต์พุต (midpoint แบบแปรผันจะใช้เพื่อจัดตำแหน่งข้อมูลในเวกเตอร์การส่งออกถ้า n 10, 10 จุดจะหายไปเนื่องจากสำหรับ 9 จุดแรกของเวกเตอร์อินพุตมีข้อมูลไม่เพียงพอที่จะใช้ค่าเฉลี่ย 10 จุดเนื่องจากเอาท์พุทจะสั้นกว่าข้อมูลอินพุตจะต้องมีการจัดตำแหน่งอย่างถูกต้อง midPoint จะ ถูกนำมาใช้เพื่อให้จำนวนข้อมูลที่เท่ากันจะหายไปเมื่อเริ่มต้นและสิ้นสุดและอินพุตจะถูกจัดเก็บให้สอดคล้องกับผลลัพธ์โดยบัฟเฟอร์ NaN ที่สร้างขึ้นเมื่อตั้งค่าเอาต์พุตล่วงหน้าสำหรับความยาว 1: (y) - n ค้นหาช่วงของดัชนีโดยเฉลี่ย over (a: b) ห้ามคำนวณหาค่าเฉลี่ยเอาท์พุท (amidPoint) mean (y (a: b)) end ในลูปสำหรับตัวมันเองค่าเฉลี่ยจะถูกยึดเอาส่วนที่ต่อเนื่องกันของ input ห่วงจะทำงานสำหรับ a. ซึ่งเป็น หมายถึง 1 ถึงความยาวของอินพุท (y) ลบข้อมูลที่จะสูญหายไป (n) ถ้าอินพุทมีค่าเท่ากับ 100 จุด ng และ n คือ 10 ลูปจะทำงานจาก (a) 1 ถึง 90 ซึ่งหมายถึงมีดัชนีแรกของกลุ่มที่จะได้รับค่าเฉลี่ย ดัชนีที่สอง (b) เป็นเพียง -1 ดังนั้นในการทำซ้ำครั้งแรก a1 n10 ดังนั้นข 11-1 10. ค่าเฉลี่ยแรกจะได้รับมากกว่า y (a: b) หรือ x (1:10) ค่าเฉลี่ยของกลุ่มนี้ซึ่งเป็นค่าเดียวจะถูกเก็บไว้ในผลลัพธ์ที่ดัชนี amidPoint หรือ 156 เมื่อทำซ้ำที่สอง a2 b 210-1 11 ดังนั้นค่าเฉลี่ยจะถูกนำไป x (2:11) และเก็บไว้ในเอาต์พุต (7) เมื่อทำซ้ำครั้งสุดท้ายของลูปสำหรับอินพุทความยาว 100, a91 b 9010-1 100 ดังนั้นค่าเฉลี่ยจะถูกนำมาใช้ x (91: 100) และเก็บไว้ในเอาต์พุต (95) ใบนี้ให้ผลรวม n (10) ค่า NaN ที่ดัชนี (1: 5) และ (96: 100) ตัวอย่างและข้อควรคำนึงการย้ายค่าเฉลี่ยจะเป็นประโยชน์ในบางสถานการณ์ แต่ก็ไม่ใช่ทางเลือกที่ดีเสมอไป ต่อไปนี้คือตัวอย่างสองส่วนที่พวกเขาไม่จำเป็นต้องมีประสิทธิภาพสูงสุด การปรับเทียบไมโครโฟนชุดข้อมูลนี้แสดงถึงระดับของแต่ละความถี่ที่ผลิตโดยลำโพงและบันทึกโดยไมโครโฟนโดยมีการตอบสนองเชิงเส้นที่เป็นที่รู้จัก เอาท์พุทของลำโพงจะแตกต่างกันไปตามความถี่ แต่เราสามารถแก้ไขรูปแบบนี้ได้ด้วยข้อมูลการปรับเทียบ - เอาท์พุทสามารถปรับระดับให้เหมาะสมกับความผันผวนของการสอบเทียบได้ สังเกตว่าข้อมูลดิบมีเสียงดัง - นั่นหมายความว่าการเปลี่ยนแปลงเล็กน้อยในความถี่ดูเหมือนจะต้องมีการเปลี่ยนแปลงระดับที่มากผิดปกติ นี้สมจริงหรือเป็นผลิตภัณฑ์ของสภาพแวดล้อมการบันทึกที่สมเหตุสมผลในกรณีนี้เพื่อใช้ค่าเฉลี่ยเคลื่อนที่ที่คลี่ออกโค้งระดับความสูงเพื่อให้เส้นโค้งการปรับเทียบที่น้อยผิดปกติ แต่นี่ไม่ใช่เหตุผลที่ดีที่สุดในตัวอย่างนี้ข้อมูลเพิ่มเติมจะดีกว่า - การสอบเทียบหลายครั้งทำงานร่วมกันโดยเฉลี่ยจะทำลายเสียงในระบบ (ตราบเท่าที่มีการสุ่ม) และให้เส้นโค้งที่มีรายละเอียดน้อยลง ค่าเฉลี่ยเคลื่อนที่สามารถประมาณค่านี้ได้เท่านั้นและอาจลบส่วนที่ลดลงและยอดที่สูงขึ้นออกจากเส้นโค้งที่มีอยู่จริง คลื่นไซน์การใช้ค่าเฉลี่ยเคลื่อนที่บนคลื่นซายน์ไฮไลต์สองจุด: ประเด็นทั่วไปในการเลือกคะแนนที่เหมาะสมเพื่อให้มีค่าเฉลี่ยมากกว่า ง่าย แต่มีวิธีการวิเคราะห์สัญญาณที่มีประสิทธิภาพมากขึ้นกว่าค่าเฉลี่ยสัญญาณสั่นในโดเมนเวลา ในกราฟนี้คลื่นไซน์ดั้งเดิมจะถูกวาดด้วยสีฟ้า มีการเพิ่มเสียงรบกวนและวางแผนเป็นเส้นโค้งสีส้ม ค่าเฉลี่ยเคลื่อนที่จะถูกดำเนินการที่จุดต่างกันเพื่อดูว่าคลื่นต้นฉบับสามารถกู้คืนได้หรือไม่ 5 และ 10 จุดให้ผลลัพธ์ที่สมเหตุสมผล แต่อย่าเอาเสียงออกทั้งหมดซึ่งเป็นจุดเริ่มต้นของการสูญเสียรายละเอียดแอมพลิจูดมากขึ้นเมื่อค่าเฉลี่ยขยายไปในช่วงต่างๆ (จำ wave oscilates รอบศูนย์และ -1 หมายถึง 0) อีกทางเลือกหนึ่งคือการสร้างตัวกรองสัญญาณลอมพนด์ต่ำกว่าที่สามารถนำมาประยุกต์ใช้กับสัญญาณในโดเมนความถี่ได้ ฉันจะไม่ไปลงในรายละเอียดตามที่ไปเกินขอบเขตของบทความนี้ แต่เป็นเสียงเป็นความถี่สูงกว่าคลื่นความถี่พื้นฐานก็จะค่อนข้างง่ายในกรณีนี้เพื่อสร้างตัวกรอง lowpass กว่าจะลบความถี่สูง noise. The นักวิทยาศาสตร์และวิศวกรคู่มือการประมวลผลสัญญาณดิจิตอลโดย 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 แสดงโปรแกรมที่จะใช้ตัวกรองค่าเฉลี่ยเคลื่อนที่ที่สร้างขึ้นในวันพุธที่ 08 ตุลาคม 2008 เวลา 20:04 น. แก้ไขล่าสุดในวันพฤหัสบดีที่ 14 มีนาคม 2013 เวลา 01:29 น. เขียนโดย Batuhan Osmanoglu ผู้ชม: 41459 การย้ายค่าเฉลี่ยใน 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

No comments:

Post a Comment