Friday 18 August 2017

การย้าย ค่าเฉลี่ย กรอง matlab แปลง


29 กันยายน 2556 ค่าเฉลี่ยเคลื่อนที่โดยการหมุนตัวค่าเฉลี่ยเคลื่อนที่คือค่าเฉลี่ยเคลื่อนที่และเฉลี่ยเท่าใดสำหรับการเคลื่อนที่เฉลี่ยโดยใช้ convolution Moving average คือการดำเนินการง่ายๆโดยปกติจะใช้เพื่อลดสัญญาณรบกวนของสัญญาณ: เรากำหนดค่าของแต่ละจุดไปที่ ค่าเฉลี่ยของค่าในพื้นที่ใกล้เคียง โดยสูตร: นี่ x เป็นอินพุทและ y เป็นสัญญาณเอาต์พุตในขณะที่ขนาดของหน้าต่างเป็น w ซึ่งควรจะเป็นเลขคี่ สูตรข้างต้นอธิบายการทำงานแบบสมมาตร: ตัวอย่างจะถูกนำมาจากทั้งสองด้านของจุดจริง ด้านล่างเป็นตัวอย่างชีวิตจริง จุดที่หน้าต่างวางอยู่จริงเป็นสีแดง ค่าที่อยู่นอก x ควรเป็นศูนย์: เมื่อต้องการเล่นรอบ ๆ และดูผลกระทบของค่าเฉลี่ยเคลื่อนที่ให้ดูการสาธิตแบบโต้ตอบนี้ การคำนวณค่าเฉลี่ยเคลื่อนที่ที่เรียบง่ายมีความคล้ายคลึงกับ convolution: ในทั้งสองกรณีหน้าต่างจะถูกเลื่อนไปตามสัญญาณและองค์ประกอบต่างๆในหน้าต่างจะสรุปได้ ดังนั้นให้ลองทำสิ่งเดียวกันโดยใช้ convolution ใช้พารามิเตอร์ต่อไปนี้: ผลลัพธ์ที่ต้องการคือ: เป็นวิธีแรกให้เราลองทำสิ่งที่เราได้รับโดยการ convolving สัญญาณ x โดย k kernel ต่อไปนี้: ผลลัพธ์เป็นสามเท่ามากกว่าที่คาดไว้ นอกจากนี้ยังสามารถเห็นได้ว่าค่าที่ส่งออกคือส่วนสรุปของสามองค์ประกอบในหน้าต่าง เนื่องจากในระหว่างการบิดหน้าต่างจะเลื่อนตามองค์ประกอบทั้งหมดที่อยู่ในนั้นคูณด้วยหนึ่งและสรุปได้ดังนี้: yk 1 cdot x 1 cdot x 1 cdot x เพื่อให้ได้ค่าที่ต้องการของ y เอาท์พุทจะหารด้วย 3: โดยสูตรรวมถึงการหาร: แต่จะไม่ดีที่สุดที่จะทำส่วนในช่วง convolution นี่มาคิดโดยการจัดเรียงสมการ: ดังนั้นเราจะใช้ kernel ต่อไปนี้: ด้วยวิธีนี้เราจะ รับเอาท์พุทที่ต้องการ: โดยทั่วไป: ถ้าเราต้องการทำค่าเฉลี่ยเคลื่อนที่โดย convolution ที่มีขนาดหน้าต่าง w เราจะใช้เคอร์เนลต่อไปนี้: ฟังก์ชันง่ายๆที่ทำค่าเฉลี่ยเคลื่อนที่คือตัวอย่างการใช้งานคือฉันต้องคำนวณค่าเฉลี่ยเคลื่อนที่ในชุดข้อมูลภายในลูปสำหรับ ฉันต้องได้รับค่าเฉลี่ยเคลื่อนที่มากกว่า 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. การกรองโดเมนแบบเวลาใน Matlab การกวดวิชานี้เกี่ยวกับคำสั่ง Matlab ldquoconvrdquo หากต้องการทราบว่า ldquoconvrdquo ทำอะไรได้บ้างคุณสามารถลองอ่านความช่วยเหลือออนไลน์ของ Matlab ได้ และตรวจสอบคำอธิบาย (คุณอาจพบว่าง่ายที่สุดในการคัดลอกบรรทัดคำสั่งในตัวเอียงไปยังหน้าต่าง Comand Matlab โดยใช้การคัดลอกและวาง) อย่างไรก็ตามหากคุณไม่ทราบข้อมูลเกี่ยวกับคณิตศาสตร์วิศวกรรมคุณอาจพบ Matlab ldquohelprdquo มากขึ้น ldquoconvolutedrdquo กว่า ldquohelpfulrdquo ในสถานการณ์ที่ไม่น่าเชื่อว่าคุณ donrsquot มีปัญหาที่เกิดขึ้นดำเนินการกับส่วนที่เหลือของการออกกำลังกายเหล่านี้ (มิฉะนั้นอาจดูว่าหนึ่งในคนที่คุณแฟนซีในชั้นนี้ดูเหมือนจะหายไปและจะได้ประโยชน์จากข้อมูลเชิงลึกและเสน่ห์ของคุณหรือเพียงแค่ไปที่ ชายหาดสักพักหนึ่ง) ตอนนี้ ldquoconvolvingrdquo เป็นสิ่งที่เราทำเพื่อ ldquosignalsrdquo และในสัญญาณ Matlab เป็น vectors บ่อยครั้งที่ Itrsquos ควรเล่นด้วยเวกเตอร์สัญญาณเทียมน้อยมากก่อนจะเข้าใจว่าคำสั่งประมวลผลสัญญาณทำอะไรก่อนที่จะเปิดตัวสัญญาณขนาดใหญ่ ldquorealrdquo ใน Matlab Letrsquos ทำของเล่น ldquodatardquo vector d โดยใช้ค่าต่อไปนี้: ลองดูสิ่งต่อไปนี้อะไรที่คุณได้รับ Convolving vector ด้วย ldquoscalarrdquo (เช่นหมายเลขง่ายๆหรือเวกเตอร์ที่มีเพียงองค์ประกอบเดียว) ldquoscalesstrquo เวกเตอร์ (ตอนนี้คุณรู้ว่าทำไมเรียกพวกเขา scalars) ตอนนี้สำหรับบางสิ่งบางอย่างลึกลับมากขึ้นเล็กน้อย ลองทำตามขั้นตอนต่อไปนี้: Whatrsquos เกิดขึ้นที่นี่คิดถึงเวกเตอร์ที่เป็นศูนย์ทั้งหมดยกเว้นเพียงหนึ่งเดียวเท่านั้นที่ใช้เป็น ldquounit impulserdquo ตอนนี้ถ้าเราทำาการส่งสัญญาณด้วยแรงยูนิทเราก็จะเปลี่ยนสัญญาณ (ยกเว้นบางทีอาจจะเป็นจุดสิ้นสุดของมัน) แต่เราอาจจะล่าช้าออกไป (อย่างมีประสิทธิภาพโดยการเกาะค่าศูนย์หน้า) คุณสามารถคาดเดาได้ว่าอะไรจะเกิดขึ้นถ้าคุณลองทำลองคิดดูก่อนแล้วค่อยลองใช้เพื่อดูว่าคุณถูกต้องหรือไม่ สิ่งที่คุณควรได้พบคือคุณสามารถรวมการปรับขนาดและคุณสมบัติการหน่วงเวลาของคำสั่ง conv คุณควรมีสัญญาณสองครั้งใหญ่เท่ากับ d ซึ่งล่าช้าไปตามตัวอย่าง (หรือ ldquotapsrdquo) ก่อนที่เราจะเข้าใจว่าทั้งหมดนี้เกี่ยวข้องกับการกรองข้อมูลเราต้องการอะไรอีกบ้าง ไม่มีอะไรใหม่ที่นี่เราเพิ่งได้รับมอบหมายของเรา ldquoimpulsesrdquo ของการเปลี่ยนแปลงที่แตกต่างกันไปตัวแปร แต่ตอนนี้ถ้าฉันทำและสิ่งที่ดังนั้นสิ่งที่คุณควรจะเห็นคือ ab มีสองแรงกระตุ้นและที่ convolution จึงมีสองสำเนาของสัญญาณ d, หนึ่งที่มีศูนย์ล่าช้าและหนึ่งล่าช้าโดยหกก๊อก ถ้าเราทำให้ความล่าช้าเล็กลงและเล็กลงเราสามารถทำสำเนาของสัญญาณ ldquocolliderdquo หรือวางทับได้ ลองทำตามขั้นตอนต่อไปนี้: คุณจะเห็นว่าเป็นสำเนาล่าช้าของสัญญาณ ldquocolliderdquo พวกเขาเพิ่ม สรุปได้ว่าการผสานรวมการปรับขนาดการล่าช้าและการเพิ่มในแพ็คเกจที่มีประโยชน์ ตอนนี้สิ่งที่มีทั้งหมดนี้จะทำอย่างไรกับการกรอง Letrsquos พิจารณาตัวอย่างง่ายๆเช่น: ตัวกรองค่าเฉลี่ยเคลื่อนที่ ลองนึกภาพฉันต้องการได้รับสัญญาณที่กรอง f โดยการกรองค่าเฉลี่ยเคลื่อนที่สองจุดบนเวกเตอร์ d d (1) d (2) d (3) . สิ่งนี้หมายความว่าฉันต้องการให้จุดแรกของ f เป็นค่าเฉลี่ยของจุดสองจุดแรกของ d คือ f (1) d (1) 2 d (2) 2 ในทำนองเดียวกันฉันต้องการ f (2) d (2) 2d (3) 2 และอื่น ๆ จนกว่า f (n) d (n) 2d (n1) 2 ถ้าคุณคิดถึงเรื่องนี้คุณอาจสังเกตเห็นว่า f เป็นเพียงผลรวมของสำเนาสองชุดของสำเนา d โดยสำเนาที่สองล่าช้าโดยแตะหนึ่งครั้งและทั้งสองชุดจะถูกปรับขนาดโดยครึ่งหนึ่งและแทนที่จะทำองค์ประกอบนี้ในแต่ละครั้ง ปล่อยให้ conv ทำเพื่อเราจะให้คุณสองจุดย้ายเฉลี่ยกรอง (เรียบ) รุ่น d ตอนนี้คาดว่าการทำให้เรียบนี้สามารถช่วยลด ldquonoiserdquo Letrsquos ลองนี้ ครั้งแรก letrsquos ทำสัญญาณ sinusoidal ดี: ตอนนี้เราปนเปื้อนสัญญาณด้วยเสียง gaussian น่าเกลียดบางจะราบเรียบกับ conv กู้สัญญาณสะอาด Letrsquos ลอง: ดีดูพล็อตเป็นที่ชัดเจนว่าสองจุดย้ายเฉลี่ยกรองปรับปรุงเรื่อง เพียงเล็กน้อย วิธีการเกี่ยวกับตัวกรอง ldquomore aggressiverdquo ลองค่าเฉลี่ยเคลื่อนที่ห้าจุด (โดยวิธีการสำหรับ n-point moving average filter นานกว่า n5 การเขียนข้อมูลเหล่านี้ออกอย่างชัดเจนกลายเป็นเรื่องน่าเบื่อและคุณจะพบว่าง่ายต่อการเขียนข้อมูล (1, n) n แทนที่จะเป็นที่ชัดเจน 1n 1n 1n 1n) ที่ได้ลบบิตยุติธรรมของเสียง (โดยไม่ได้หมายความว่าทั้งหมด แต่ itrsquos ไม่ตรงไปข้างหน้าจะทำดีมากซึ่งเป็นเหตุผลที่ itrsquos ดีพยายามที่จะมีเป็นเสียงน้อย เป็นไปได้ที่จะเริ่มต้นด้วย) แต่ถ้าคุณดูอย่างรอบคอบคุณจะเห็นว่าสัญญาณที่ถูกกรองเป็นจริงเวลาเลื่อนเทียบกับสัญญาณเดิม (และมันเป็นอีกนิดด้วย) วิศวกรไฟฟ้ากล่าวว่าตัวกรองอัตราการไหลของน้ำประปาห้าตัวของเรามีความล่าช้าในการใช้งานของทั้งสองก๊อกและให้การออกกำลังกายก่อนหน้านี้ด้วยแรงกระตุ้นที่ล่าช้าคุณอาจมีสัญชาตญาณว่าความล่าช้าเหล่านี้มาจากไหน ความล่าช้าเหล่านี้อาจเป็นความรำคาญ ลองจินตนาการว่าคุณต้องการวัดเวลาที่ยอดเกิดขึ้น การกรองจะทำให้ยอดเขาสะอาดขึ้น แต่จะทำให้พวกเขาล่าช้า คุณสามารถกำจัดความล่าช้าโดยการโยนจุดแรก n2 ของ n-point moving average filtered signal Matlab มีตัวแปรที่ชาญฉลาดเรียกว่า filtfilt ซึ่งหลีกเลี่ยงความล่าช้าโดยเรียกใช้การกรอง ldquotwicerdquo เมื่อ ldquoforwardrdquo แล้ว ldquobackwardrdquo การกรองจะเป็นสองเท่าของ ldquoeffectiverdquo ด้วยเช่นกัน ลองนี้: มีความล่าช้าและสัญญาณที่กรองไม่ราบรื่น แต่ itrsquos จริงเริ่มที่จะลดลงในความกว้าง ตัวกรองจะเริ่มกินเข้าไปในสัญญาณเช่นเดียวกับเสียง อาจเป็นไปได้ว่าค่าเฉลี่ยเคลื่อนที่ห้าจุดมากเกินไปหากใช้สองครั้ง ไม่มีคำตอบเดียวที่ถูกต้องในเรื่องนี้และเพื่อให้ได้รับความชื่นชมอย่างถูกต้องว่าจะมีผลต่อความถี่ใดที่จะต้องใช้ความถี่ในการประมวลผลสัญญาณซึ่งอยู่นอกเหนือการออกกำลังกายแบบง่ายๆเหล่านี้ อย่างไรก็ตามคุณสามารถทำความเข้าใจได้ง่ายหากพิจารณาต่อไปนี้ ก่อนหน้านี้คุณเห็นว่า convolution fconv (s, a), โดยที่ n เป็น n tap ยาว, หมายความว่า f (i) s (i) a (1) s (i1) a (2) s (i2) a (3) . s (in-1) A (n) ดังนั้น f (i) คือผลิตภัณฑ์จุดหรือผลิตภัณฑ์ภายในของ vectors a และ s (i: in-1) ถ้าคุณได้ศึกษาเกี่ยวกับพีชคณิตเชิงเส้นคุณอาจจำได้ว่าผลิตภัณฑ์จุดจะวัด ldquoprojectionrdquo ของ s (i: in-1) ลงใน a. แม้ว่าคุณจะได้ศึกษาพีชคณิตเชิงเส้นถ้าคุณคิดถึงเรื่องนี้คุณอาจจะเห็นว่า f (i) เป็นตัววัดว่าส่วนของสัญญาณ s (i: in-1) มีความสัมพันธ์กับตัวกรองอย่างไร a. ดังนั้นจุดเวลา i-th ของสัญญาณที่กรอง f (i) บอกเราว่าส่วนของสัญญาณต้นฉบับ s (i: in-1) ตรงกับรูปแบบของตัวกรอง a. ในตัวอยางที่เราไดเห็นแลวตัวกรองเฉลี่ยถวงน้ําหนักของเราเปนสวนแบงทั้งหมด ความผันผวนของสัญญาณอย่างรวดเร็วในสัญญาณตรงกับเส้นตรงที่มีความผันผวนน้อยกว่าดังนั้นส่วนของเส้นตรงที่เราใช้ในการกรองเฉลี่ยคือตัวอย่างของตัวกรองความถี่ต่ำ พวกเขาเป็นบิตเช่น ldquoironsrdquo แบนที่ใช้ในการรีดออกริ้วรอยขนาดเล็กในสัญญาณ ถ้าคุณคิดอย่างนั้นอย่างชัดเจนว่า: ตัวกรองค่าเฉลี่ยเคลื่อนที่ n จะช่วยลดความผันผวนที่มีความยาวคลื่นน้อยกว่า n แต่จะมีผลน้อยมากกับความถี่ที่มีความยาวคลื่นมากกว่า n . Convolution สามารถใช้ได้ไม่เพียง แต่สำหรับ low pass filtering เท่านั้น ถ้าเราสร้างตัวกรองที่มีความผันผวนอย่างรวดเร็ว (ความถี่สูง) จะขยายความผันผวนและปราบปรามที่ต่ำลง Letrsquos ลองที่ ทำ n-point ldquohigh pass filterrdquo: ตัวกรอง a จะแกว่งเร็วที่สุดเท่าที่จะเป็นไปได้ที่อัตราการสุ่มตัวอย่างในปัจจุบัน สิ่งที่คุณควรเห็นคือความกว้างของ sinusoid จะลดลงมาก แต่ความผันผวนอย่างรวดเร็ว ldquosort ofrdquo ยังคงอยู่ (แม้ว่าจะไม่ได้รับผลกระทบ) ฉันมาถึง a1 -1 0 13 เดาตาบอดซึ่งเป็น ไม่ใช่สิ่งที่คุณเคยทำมาหากคุณได้รับการกรองสัญญาณเพื่อการวิจัยทางวิทยาศาสตร์ (นี่เป็นเพียงการนำของ principlerdquo) เพื่อให้ตัวกรอง ldquorealrdquo ที่คุณสามารถใช้กับสัญญาณ high-pass, band-pass หรือ low-pass ldquorealrdquo Matlab ให้คำสั่งที่มีประโยชน์เรียกว่า ldquofir2rdquo Letrsquos แสดงให้เห็นถึงการใช้งานกับข้อมูลนอกรีตบางตัวที่แท้จริง (คุณอาจต้องดาวน์โหลดไฟล์ auditory. mat ด้านล่างและคัดลอกลงในไดเร็กทอรีการทำงานของ Matlab) เพียงแค่จับสัญญาณเราจะเห็นความผันผวนที่มีขนาดใหญ่ประมาณ 120 วินาทีอาจเป็นเพราะปัจจัยการผลิตของ synaptic รวมถึง คลื่นเสียงความถี่สูงจำนวนเล็กน้อย สมมติว่าเราต้องการกรองสัญญาณความถี่ต่ำผ่านสัญญาณนี้เพื่อให้ความถี่ทั้งหมดต่ำกว่า 1 kHz ไม่ได้รับผลกระทบ แต่ความถี่สูงจะถูกระงับ คำสั่ง fir2 จะทำให้เราได้ตัวกรองดังกล่าว แต่ต้องใช้เวกเตอร์สองตัวคือ A และ F ซึ่งบอกว่า Amplitudes ต้องการที่ความถี่ใด น่าเสียดายที่เราสามารถระบุได้เฉพาะ F ใน kHz แต่ต้องให้เป็นเศษส่วนของความถี่ ldquoNyquistrdquo ซึ่งเท่ากับครึ่งหนึ่งของอัตราตัวอย่างของเรา ในตัวอย่างนี้อัตราการสุ่มตัวอย่างคือ 12000 ดังนั้นถ้าเราต้องการให้ความถี่ของเราถึง 2kHz แบนเราต้องการ A1 สำหรับทั้งหมด 0ltFlt20006000 และ A0 สำหรับ 20006000ltFlt1 ด้วยเหตุผลทางทฤษฎีไม่ควรพยายามทำให้ตัวกรองเกินไป ldquosteeprdquo ดังนั้นแทนที่จะพูดว่า F0 20006000 20016000 1 A1 1 0 0 เราจะแนะนำให้ใช้ Now letrsquos ทำให้เป็นตัวกรอง 20 ldquofinite impulse responserdquo filter สำหรับเหล่านี้ (เวลา, v), ค้างไว้ที่พล็อต (เวลา, vfiltered, 39r39) ถือปิดใช้คำสั่งซูมในหน้าต่างรูปเพื่อพล็อตทดลองใช้กับความถี่ตัดที่แตกต่างกัน คุณจะใช้คำสั่ง fir2 เพื่อสร้างตัวกรองความถี่สูงได้อย่างไรคุณจะทำฟิลเตอร์ filterFIR แบบ band-pass ตัวกรอง IIR และสมการความแตกต่างเชิงเส้นค่าไหวเชิงพานิชได้อย่างไร ของเอาท์พุทเป็นผลรวมถ่วงน้ำหนักของ (บางอย่าง) ตัวอย่างของอินพุท ให้ใช้ระบบผลรวมถดถอยเชิงสาเหตุที่สาเหตุหมายถึงตัวอย่างที่กำหนดให้ขึ้นอยู่กับตัวอย่างอินพุตปัจจุบันและอินพุตอื่น ๆ ก่อนหน้าในลำดับ ทั้งระบบเชิงเส้นโดยทั่วไปหรือระบบตอบสนองต่อแรงกระตุ้นแน่นอนไม่จำเป็นต้องเป็นสาเหตุ อย่างไรก็ตามความเป็นเหตุเป็นผลจะเป็นประโยชน์สำหรับการวิเคราะห์ประเภทหนึ่งที่กำลังจะสำรวจในเร็ว ๆ นี้ ถ้าเราเป็นสัญญลักษณ์อินพุตเป็นค่าของเวกเตอร์ x และผลลัพธ์เป็นค่าที่สอดคล้องกันของเวกเตอร์ y แล้วระบบดังกล่าวสามารถเขียนเป็นที่ที่ค่า b เป็น quotweightsquot นำไปใช้กับตัวอย่างปัจจุบันและก่อนหน้านี้เพื่อให้ได้ตัวอย่างการส่งออกปัจจุบัน เราสามารถคิดนิพจน์เป็นสมการโดยใช้เครื่องหมายเท่ากับเท่ากับหรือเป็นคำสั่งขั้นตอนด้วยเครื่องหมายเท่ากับหมายถึงการกำหนด ให้เขียนนิพจน์สำหรับตัวอย่างผลลัพธ์แต่ละรายการเป็นลูป MATLAB ของ statement กำหนดโดยที่ x เป็นเวกเตอร์ความยาว N ของตัวอย่างอินพุทและ b คือเวกเตอร์ความยาว M ของน้ำหนัก เพื่อจัดการกับกรณีพิเศษเมื่อเริ่มต้นเราจะฝัง x ในเวกเตอร์ xhat ที่มีตัวอย่าง M-1 เป็นศูนย์ก่อน เราจะเขียนผลรวมถ่วงน้ำหนักสำหรับแต่ละ y (n) เป็นผลิตภัณฑ์ภายในและจะทำ manipulations บางส่วนของปัจจัยการผลิต (เช่นย้อนกลับ b) เพื่อการนี้ ระบบประเภทนี้มักถูกเรียกว่าตัวกรองค่าเฉลี่ยเคลื่อนที่โดยมีเหตุผลที่ชัดเจน จากการอภิปรายก่อนหน้านี้เราควรจะเห็นได้ชัดว่าระบบดังกล่าวมีลักษณะเป็นเส้นตรงและไม่แปรเปลี่ยน แน่นอนว่าจะใช้ฟังก์ชัน 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 transform

No comments:

Post a Comment