Thursday 10 August 2017

ถัว เฉลี่ยเคลื่อนที่ กรอง matlab


ดาวน์โหลด 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. I ต้องคำนวณค่าเฉลี่ยเคลื่อนที่ผ่านชุดข้อมูลภายใน loop for ฉันต้องได้รับค่าเฉลี่ยเคลื่อนที่มากกว่า 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 ช่วงค่าเริ่มต้นสำหรับค่าเฉลี่ยเคลื่อนที่คือตัวกรอง FIR, ตัวกรอง IIR และสมการความแตกต่างของค่าสัมประสิทธิ์เชิงเส้นคงที่ตัวกรองค่าเฉลี่ยเคลื่อนที่ (FIR) ที่กล่าวถึงระบบที่แต่ละตัวอย่างของผลลัพธ์เป็นผลรวมถ่วงน้ำหนักของ ) ตัวอย่างของอินพุท ให้ใช้ระบบผลรวมถดถอยเชิงสาเหตุที่สาเหตุหมายถึงตัวอย่างเอาต์พุตที่กำหนดขึ้นอยู่กับตัวอย่างอินพุตปัจจุบันและอินพุตอื่น ๆ ก่อนหน้าในลำดับ ทั้งระบบเชิงเส้นโดยทั่วไปหรือระบบตอบสนองต่อแรงกระตุ้นแน่นอนไม่จำเป็นต้องเป็นสาเหตุ อย่างไรก็ตามความเป็นเหตุเป็นผลจะเป็นประโยชน์สำหรับการวิเคราะห์ประเภทหนึ่งที่กำลังจะสำรวจในเร็ว ๆ นี้ ถ้าเราเป็นสัญญลักษณ์อินพุตเป็นค่าของเวกเตอร์ x และผลลัพธ์เป็นค่าที่สอดคล้องกันของเวกเตอร์ y แล้วระบบดังกล่าวสามารถเขียนเป็นที่ที่ค่า b เป็น quotweightsquot นำไปใช้กับตัวอย่างปัจจุบันและก่อนหน้านี้เพื่อให้ได้ตัวอย่างการส่งออกปัจจุบัน เราสามารถคิดนิพจน์เป็นสมการโดยใช้เครื่องหมายเท่ากับเท่ากับหรือเป็นคำสั่งขั้นตอนด้วยเครื่องหมายเท่ากับหมายถึงการกำหนด ให้เขียนนิพจน์สำหรับตัวอย่างผลลัพธ์แต่ละรายการเป็นลูป MATLAB ของ statement กำหนดโดยที่ x เป็นเวกเตอร์ความยาว N ของตัวอย่างอินพุทและ b คือเวกเตอร์ความยาว M ของน้ำหนัก เพื่อจัดการกับกรณีพิเศษเมื่อเริ่มต้นเราจะฝัง x ในเวกเตอร์ xhat ที่มีตัวอย่าง M-1 เป็นศูนย์ก่อน เราจะเขียนผลรวมถ่วงน้ำหนักสำหรับแต่ละ y (n) เป็นผลิตภัณฑ์ภายในและจะทำ manipulations บางส่วนของปัจจัยการผลิต (เช่นย้อนกลับข) เพื่อการนี้ ระบบประเภทนี้มักถูกเรียกว่าตัวกรองค่าเฉลี่ยเคลื่อนที่โดยมีเหตุผลที่ชัดเจน จากการอภิปรายก่อนหน้านี้เราควรจะเห็นได้ชัดว่าระบบดังกล่าวมีลักษณะเป็นเส้นตรงและไม่แปรเปลี่ยน แน่นอนว่าจะใช้ฟังก์ชัน convolution function ของ MATLAB conv () แทนการใช้ mafilt () ของเราได้เร็วกว่ามาก แทนที่จะพิจารณาตัวอย่าง M-1 แรกของอินพุทเป็นศูนย์เราสามารถพิจารณาให้เป็นเหมือนกับตัวอย่าง M-1 ล่าสุด เช่นเดียวกับการประมวลผลการป้อนข้อมูลเป็นระยะ ๆ ใช้ cmafilt () เป็นชื่อของฟังก์ชันการปรับเปลี่ยนเล็กน้อยของฟังก์ชัน mafilt () ก่อนหน้านี้ ในการระบุการตอบสนองของระบบของระบบปกติจะไม่มีความแตกต่างระหว่างทั้งสองเนื่องจากตัวอย่างที่ไม่ใช่ข้อมูลเริ่มต้นของข้อมูลทั้งหมดเป็นศูนย์: เนื่องจากระบบชนิดนี้มีลักษณะเป็นเชิงเส้นและมีการเปลี่ยนค่าคงที่เราทราบดีว่าผลกระทบใด ๆ sinusoid จะเป็นเพียงขนาดและเปลี่ยน นี่เป็นเรื่องสำคัญที่เราใช้เวอรเปอรเวอรเวอรเวอรเปนเวอรปวอยด (circularly-convolved version) ขยับขึ้นและปรับขนาดเล็กนอยในขณะที่เวอร์ชันที่มีการบิดเบือนสามัญจะบิดเบี้ยวเมื่อเริ่มตน ให้ดูว่าการปรับขนาดและการขยับคือการใช้ FFT: อินพุตและเอาต์พุตทั้งคู่มีความกว้างเพียงความถี่ 1 และ -1 ซึ่งเป็นไปตามที่ควรจะเป็นระบุว่าอินพุตเป็นไซน์โมและเป็นระบบเชิงเส้น ค่าที่ส่งออกมีค่ามากกว่าอัตราส่วน 10.62518 1.3281 นี่คือผลประโยชน์ของระบบ สิ่งที่เกี่ยวกับเฟสเราจำเป็นต้องมองที่แอมพลิจูดไม่ใช่ศูนย์: อินพุทมีเฟสของ pi2 ตามที่เราร้องขอ เฟสเอาท์พุทจะถูกปรับเพิ่มอีก 1.0594 (มีสัญญาณตรงกันข้ามกับความถี่เชิงลบ) หรือประมาณ 16 รอบด้านขวาตามที่เราเห็นในกราฟ ตอนนี้ขอลอง sinusoid ที่มีความถี่เดียวกัน (1) แต่แทน amplitude 1 และ phase pi2 ลองลอง amplitude 1.5 และ phase 0 เรารู้ว่าความถี่ 1 และ -1 จะมีค่า amplitude ไม่เป็นศูนย์ดังนั้นให้แค่มอง ที่พวกเขา: อีกครั้งอัตราส่วนความกว้าง (15.937712.0000) เป็น 1.3281 - และสำหรับเฟสจะเลื่อนอีกครั้งโดย 1.0594 ถ้าตัวอย่างเหล่านี้เป็นแบบอย่างเราสามารถทำนายผลกระทบของระบบของเรา (การตอบสนองต่ออิมพัล .1 .2 .3 .5) ในไซน์ไซด์ใด ๆ ที่มีความถี่ 1 - แอมพลิจูดจะเพิ่มขึ้นตามค่าเท่ากับ 1.3281 และเฟส (ความถี่บวก) จะเปลี่ยนไปตาม 1.0594 เราสามารถคำนวณหาผลของระบบนี้ในไซโครัมของความถี่อื่นด้วยวิธีการเดียวกัน แต่มีวิธีที่เรียบง่ายกว่ามากและเป็นจุดที่กำหนดจุดทั่วไป เนื่องจากการหมุนวน (วงกลม) ในโดเมนเวลาหมายถึงการคูณในโดเมนความถี่จากนั้นตามด้วยคำพูดอื่น ๆ DFT ของการตอบสนองอิมพัลคืออัตราส่วนของ DFT ของเอาท์พุทไปยัง DFT ของอินพุท ในความสัมพันธ์นี้สัมประสิทธิ์ DFT เป็นจำนวนเชิงซ้อน เนื่องจาก abs (c1c2) abs (c1) abs (c2) สำหรับจำนวนเชิงซ้อนทั้งหมด c1, c2 สมการนี้บอกเราว่าสเปกตรัมความกว้างของการตอบสนองอิมพัลส์จะเป็นอัตราส่วนของสเปกตรัมความกว้างของเอาท์พุทกับอินพุท . ในกรณีของเฟสสเปกตรัมมุม (c1c2) มุม (c1) - มุม (c2) สำหรับทุก c1, c2 (โดยมีเงื่อนไขว่าเฟสต่างกันโดย n2pi ถือว่าเท่ากัน) ดังนั้นสเปกตรัมเฟสของการตอบสนองของอิมพัลสึจะเป็นความแตกต่างระหว่างสเปกตรัมเฟสของเอาท์พุทและอินพุท (โดยมีการแก้ไขโดย 2pi เพื่อให้ผลระหว่าง - pi และ pi) เราสามารถเห็นผลของเฟสได้ชัดเจนมากขึ้นถ้าเรานำเสนอการแสดงเฟสเช่นถ้าเราเพิ่มการคูณจำนวน 2pi ตามที่ต้องการเพื่อลดการกระโดดที่เกิดขึ้นตามลักษณะของฟังก์ชันมุม () ถึงแม้ว่าความกว้างและเฟสมักใช้สำหรับงานนำเสนอแบบกราฟิกและแม้แต่ตารางเพราะเป็นวิธีการที่ง่ายในการคิดถึงผลกระทบของระบบในส่วนประกอบความถี่ต่างๆของอินพุทค่าสัมประสิทธิ์ฟูริเยร์ที่ซับซ้อนมีประโยชน์มากขึ้นเกี่ยวกับพีชคณิตเนื่องจากพวกมันยอมให้ การแสดงออกที่เรียบง่ายของความสัมพันธ์วิธีการทั่วไปที่เราเพิ่งเห็นจะทำงานร่วมกับตัวกรองที่กำหนดเองในแบบที่ร่างซึ่งในแต่ละตัวอย่างผลลัพธ์คือผลรวมถ่วงน้ำหนักของชุดตัวอย่างอินพุตบางชุด ดังที่ได้กล่าวมาก่อนหน้านี้มักเรียกว่าฟิลเตอร์ฟิลเตอร์ตอบสนองเนื่องจากการตอบสนองของอิมพัลซ์มีขนาด จำกัด หรือบางครั้งก็ใช้ตัวกรอง Moving Average เราสามารถกำหนดลักษณะการตอบสนองความถี่ของตัวกรองดังกล่าวจากการตอบสนองอิมพัลส์ของ FFT และเรายังสามารถออกแบบตัวกรองใหม่ที่มีลักษณะที่ต้องการโดย IFFT จากข้อกำหนดของการตอบสนองต่อความถี่ ตัวกรองแบบอัตถดถอย (IIR) จะมีจุดเล็ก ๆ น้อย ๆ ในการมีชื่อสำหรับตัวกรอง FIR เว้นแต่จะมีบางรูปแบบอื่น ๆ เพื่อแยกความแตกต่างออกไปดังนั้นผู้ที่ศึกษาเกี่ยวกับจริยธรรมจะไม่รู้สึกแปลกใจที่ทราบว่ามีความสำคัญอีกอย่างหนึ่ง ของตัวกรองเวลาไม่แปรเปลี่ยนเชิงเส้น ตัวกรองเหล่านี้บางครั้งเรียกว่า recursive เพราะค่าของเอาท์พุทก่อน ๆ (เช่นเดียวกับอินพุตก่อนหน้า) มีความสำคัญแม้ว่าอัลกอริทึมจะถูกเขียนขึ้นโดยใช้โครงสร้างแบบวนซ้ำ พวกเขาจะเรียกว่าตัวกรองการตอบสนองต่ออิมพัลส์อิมพัลส์ (IIR) โดยทั่วไปแล้วการตอบสนองต่อแรงกระตุ้นของพวกเขาจะไปตลอดกาล บางครั้งพวกเขายังถูกเรียกว่า autoregressive filters เนื่องจากค่าสัมประสิทธิ์สามารถคิดได้ว่าเป็นผลของการถดถอยเชิงเส้นเพื่อแสดงค่าสัญญาณตามหน้าที่ของค่าสัญญาณก่อนหน้า ความสัมพันธ์ของตัวกรอง FIR และ IIR สามารถมองเห็นได้ชัดเจนในสมการเชิงอนุพันธ์เชิงเส้นค่าคงที่เชิงเส้นนั่นคือการตั้งค่าผลรวมถ่วงน้ำหนักของเอาท์พุทเท่ากับจำนวนถัวเฉลี่ยของปัจจัยการผลิต นี่เป็นเหมือนสมการที่เราให้ไว้ก่อนหน้านี้สำหรับฟิลเตอร์ฟิวเจอร์ที่เป็นสาเหตุยกเว้นว่านอกเหนือจากการรวมน้ำหนักของอินพุตเรายังมีผลรวมถ่วงน้ำหนักของผลลัพธ์ด้วย ถ้าเราอยากจะคิดว่านี่เป็นขั้นตอนในการสร้างตัวอย่างเอาต์พุตเราจำเป็นต้องจัดเรียงสมการใหม่เพื่อให้ได้นิพจน์สำหรับตัวอย่างเอาต์พุต y (n) ปัจจุบันการนำแนวทางที่ว่า (1) 1 (เช่นโดยการปรับขนาดอื่น ๆ เช่น และ bs) เราสามารถกำจัดคำ 1a (1): y (n) b (1) x (n) b (2) x (n-1) b (Nb1) x (n-nb) - a (2) y (n-1) -. - a (Na1) y (n-na) ถ้าค่าทั้งหมด a (n) นอกเหนือจาก (1) เป็นศูนย์จะลดลงกับเพื่อนเก่าของเราที่เป็นสาเหตุของ FIR filter นี่เป็นกรณีทั่วไปของตัวกรอง LTI (สาเหตุ) และถูกใช้โดยตัวกรองฟังก์ชัน MATLAB ให้ดูกรณีที่ค่าสัมประสิทธิ์ b ไม่ใช่ b (1) เป็นศูนย์ (แทน FIR กรณีที่ a (n) เป็นศูนย์): ในกรณีนี้ตัวอย่างการส่งออกปัจจุบัน y (n) คำนวณเป็น a (n-1) y (n-2) ฯลฯ เพื่อให้ทราบว่าเกิดอะไรขึ้นกับตัวกรองดังกล่าวให้เริ่มต้นด้วยกรณีที่: นั่นคือตัวอย่างการส่งออกปัจจุบันคือผลรวมของตัวอย่างการป้อนข้อมูลปัจจุบันและครึ่งหนึ่งของตัวอย่างผลลัพธ์ก่อนหน้า ใช้แรงกระตุ้นอินพุทผ่านขั้นตอนเพียงไม่กี่ขั้นตอนทีละขั้นตอน ควรชัดเจนที่จุดนี้ว่าเราสามารถเขียนนิพจน์สำหรับค่าตัวอย่างเอาต์พุต nth: มันเป็นเพียง (ถ้า MATLAB นับจาก 0 จะเป็นเพียง. 5n) เนื่องจากสิ่งที่เรากำลังคำนวณคือการตอบสนองต่อแรงกระตุ้นของระบบเราได้แสดงให้เห็นด้วยตัวอย่างว่าการตอบสนองของแรงกระตุ้นสามารถมีตัวอย่างที่ไม่ใช่ศูนย์เป็นจำนวนอนันต์ได้ ในการใช้ตัวกรองลำดับแรกที่ไม่สำคัญนี้ใน MATLAB เราสามารถใช้ตัวกรอง การโทรจะมีลักษณะดังนี้: และผลลัพธ์คือ: ธุรกิจนี้ยังคงเป็นแบบเส้นตรงหรือไม่เราสามารถดูข้อมูลนี้ได้โดยสรุป: สำหรับวิธีทั่วไปให้พิจารณาค่าของตัวอย่างผลลัพธ์ y (n) โดยการทดแทนต่อเนื่องเราสามารถเขียนข้อความนี้ได้เช่นเดียวกับเพื่อนเก่าของเราที่มีรูปแบบการรวมกันของตัวกรอง FIR โดยมีการตอบสนองต่อแรงกระตุ้นด้วยการแสดงออก 5k และความยาวของการตอบสนองอิมพัลเป็นอนันต์ ดังนั้นอาร์กิวเมนต์เดียวกับที่เราใช้เพื่อแสดงให้เห็นว่าตัวกรอง FIR เป็นเส้นตรงจะใช้ที่นี่ จนถึงตอนนี้อาจดูเหมือนเป็นจำนวนมากเอะอะเกี่ยวกับไม่มาก การตรวจสอบทั้งหมดนี้มีประโยชน์อะไรสำหรับคำตอบที่ดีในคำถามนี้ในแต่ละขั้นตอนโดยเริ่มจากตัวอย่าง ไม่แปลกใจเลยที่เราสามารถคำนวณค่าเอกซ์ทอนโดยการคูณแบบไขว้ ให้ดูที่ตัวกรอง recursive ที่ทำสิ่งที่ไม่ชัดเจน คราวนี้ทำให้ตัวกรองลำดับที่สองเป็นตัวกรองเพื่อให้ตัวกรองสัญญาณเป็นแบบฟอร์มให้ตั้งค่าสัมประสิทธิ์การออกที่สอง a2 ถึง -2cos (2pi40) และค่าสัมประสิทธิ์การออกที่สาม a3 ถึง 1 และดูที่แรงกระตุ้น คำตอบ ไม่มีประโยชน์มากเป็นตัวกรองจริง แต่จะสร้างตัวอย่างคลื่นซายน์ (จากแรงกระตุ้น) ด้วยการคูณสามตัวต่อหนึ่งตัวอย่างเพื่อให้เข้าใจว่าเหตุใดจึงเกิดขึ้นและวิธีการออกแบบและวิเคราะห์ตัวกรองแบบไขว่คว้า กรณีทั่วไปมากขึ้นเราจำเป็นต้องย้อนกลับไปและดูที่คุณสมบัติอื่น ๆ ของตัวเลขที่ซับซ้อนระหว่างทางไปสู่ความเข้าใจในการแปลง z ต่อไปนี้เป็นตัวกรองค่าเฉลี่ยเคลื่อนที่แบบสมมาตรถ่วงน้ำหนัก 3 จุดที่มีการเข้ารหัสอย่างหนัก: ดังนั้นสมมติฐานของฉันสำหรับ วิธีตัวกรองค่าเฉลี่ยเคลื่อนที่แบบสมมาตรที่ถ่วงน้ำหนัก n จุดมีดังนี้: เป้าหมายสุดท้ายของฉันคือการสร้างตัวกรองอัตราการเคลื่อนที่สมมาตรถ่วงน้ำหนักที่มีจำนวนจุดจำเพาะมากกว่าซึ่งจะสามารถเฉลี่ยได้ ส่วนที่ได้รับจริงๆฉันคือน้ำหนักตัวเองและในขณะที่ Im แน่ใจว่าซ้อนกันสำหรับวงบางชนิดจะทำเคล็ดลับฉันลาดเทดูว่าฉันจะได้เริ่มต้นสิ่งที่ต้องการที่ ขอขอบคุณที่สละเวลาตรวจสอบคำถามของฉันข้อเสนอแนะใด ๆ จะได้รับการชื่นชมอย่างมาก เลือกประเทศของคุณ

No comments:

Post a Comment