Tuesday 18 July 2017

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


ฉันต้องคำนวณค่าเฉลี่ยเคลื่อนที่มากกว่าชุดข้อมูลภายในลูปสำหรับฉันต้องได้รับค่าเฉลี่ยเคลื่อนที่เหนือ N 9 วันอาร์เรย์ที่ฉันคำนวณเป็นชุดค่า 365 365 ซึ่งเป็นค่าเฉลี่ยของชุดอื่น ข้อมูลฉันต้องการพล็อตค่าเฉลี่ยของข้อมูลของฉันมีค่าเฉลี่ยเคลื่อนที่ในหนึ่ง plot. I googled bit เกี่ยวกับการย้ายค่าเฉลี่ยและคำสั่ง conv และพบสิ่งที่ฉันพยายามใช้ใน code. So ของฉันโดยทั่วไปฉันคำนวณค่าเฉลี่ยและพล็อตของฉัน มันมีค่าเฉลี่ยเคลื่อนที่ไม่ถูกต้องฉันเลือกค่า wts จากเว็บไซต์ mathworks เพื่อให้เป็นแหล่งที่ไม่ถูกต้องปัญหาของฉันว่าเป็นที่ฉันไม่เข้าใจสิ่งที่ wts นี้คือใครสามารถอธิบายหากมีบางอย่างจะทำอย่างไรกับน้ำหนักของ ค่าที่ไม่ถูกต้องในกรณีนี้ค่าทั้งหมดจะถูกถ่วงน้ำหนักเหมือนกันและถ้าฉันทำแบบนี้ผิดอย่างสิ้นเชิงฉันขอความช่วยเหลือบางอย่างกับมันขอแสดงความนับถือขอบคุณ 23 กันยายนที่ 19 05.Using conv เป็นวิธีที่ดีในการ ใช้ค่าเฉลี่ยเคลื่อนที่ในโค้ดที่คุณกำลังใช้ wts คือจำนวน y ou มีการชั่งน้ำหนักแต่ละค่าตามที่คุณคาดเดาผลรวมของเวกเตอร์นั้นควรมีค่าเท่ากับหนึ่งค่าถ้าคุณต้องการให้น้ำหนักแต่ละค่าเท่ากันและทำตัวกรองขนาด N ย้ายแล้วคุณจะต้องการใช้การใช้อาร์กิวเมนต์ที่ถูกต้องใน conv จะส่งผลให้ มีค่าน้อยกว่า Ms มากกว่าที่คุณมีใน M ใช้เหมือนกันถ้าคุณ don t ใจผลกระทบจากการ padding ศูนย์ถ้าคุณมีกล่องเครื่องมือการประมวลผลสัญญาณที่คุณสามารถใช้ cconv ถ้าคุณต้องการลองเป็นค่าเฉลี่ยเคลื่อนที่แบบวงกลม Something like. You ควรอ่าน conv และเอกสาร cconv สำหรับข้อมูลเพิ่มเติมหากคุณไม่สามารถใช้งานได้แล้วคุณสามารถใช้ตัวกรองเพื่อหาค่าเฉลี่ยในการทำงานได้โดยไม่ต้องใช้ loop สำหรับตัวอย่างนี้จะหาค่าเฉลี่ยที่รันของเวกเตอร์ 16 องค์ประกอบโดยใช้ขนาดหน้าต่าง 5.2 เรียบเป็นส่วนหนึ่งของ Curve Fitting Toolbox ซึ่งมีอยู่ในกรณีที่มีการใช้งานมากที่สุด y y เรียบเรียบข้อมูลในคอลัมน์เวกเตอร์ y โดยใช้ตัวกรองเฉลี่ยเคลื่อนที่ผลลัพธ์จะถูกส่งกลับในเวกเตอร์ของคอลัมน์ yy ช่วงค่าเริ่มต้นสำหรับค่าเฉลี่ยเคลื่อนที่คือ 5.Using MATLAB ฉันจะทำอย่างไร หา 3 วัน ค่าเฉลี่ยเคลื่อนที่ของคอลัมน์เฉพาะของเมตริกซ์และต่อค่าเฉลี่ยเคลื่อนที่กับเมตริกซ์นั้นฉันพยายามคำนวณค่าเฉลี่ยเคลื่อนที่ 3 วันจากด้านล่างจนถึงด้านบนของเมทริกซ์ฉันได้ระบุรหัสของฉันแล้วให้มีเมทริกซ์ต่อไปนี้และหน้ากาก ได้พยายามใช้ conv คำสั่ง แต่ฉันได้รับข้อผิดพลาดนี่คือคำสั่ง conv ฉันได้พยายามใช้ในคอลัมน์ที่ 2 ของ a. The matrix output ฉันต้องการจะได้รับใน matrix. If ต่อไปนี้หากคุณมีข้อเสนอแนะใด ๆ ฉันจะ ขอบคุณมากสำหรับคอลัมน์ 2 ของเมทริกซ์ฉันคำนวณค่าเฉลี่ยเคลื่อนที่ 3 วันดังต่อไปนี้และวางผลลัพธ์ในคอลัมน์ 4 ของเมทริกซ์ฉันเปลี่ยนชื่อเมทริกซ์เป็น desiredOutput สำหรับภาพประกอบค่าเฉลี่ย 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 รู้สึกว่า Jun 12 13 ที่ 1 28. โดยทั่วไปจะช่วยถ้าคุณจะแสดงข้อผิดพลาดในกรณีนี้คุณกำลังทำสองประการผิดครั้งแรกของคุณ convolution ต้องแบ่ง โดยสามหรือความยาวของค่าเฉลี่ยเคลื่อนที่ประการที่สองสังเกตขนาดของ c คุณไม่สามารถเพียงพอดีกับ c เป็นวิธีทั่วไปในการรับค่าเฉลี่ยเคลื่อนที่จะใช้ same. but ที่ doesn t มีลักษณะเหมือนสิ่งที่คุณ want. Instead คุณ ถูกบังคับให้ใช้คู่ของสายการดาวน์โหลด movAv m ดูยัง movAv2 - รุ่นปรับปรุงให้ weighting. Description Matlab มีฟังก์ชันที่เรียกว่า movavg และ tsmovavg เวลาชุดค่าเฉลี่ยเคลื่อนที่ในกล่องเครื่องมือทางการเงิน movAv ถูกออกแบบมาเพื่อทำซ้ำฟังก์ชันพื้นฐานของเหล่านี้ รหัสที่นี่เป็นตัวอย่างที่ดีในการจัดการดัชนีภายในลูปซึ่งอาจทำให้เกิดความสับสนในการเริ่มต้นด้วยการเก็บรวบรวมรหัสไว้อย่างจงใจและสั้นเพื่อให้ขั้นตอนนี้ clear. movAv มีค่าเฉลี่ยเคลื่อนที่ที่สามารถใช้ในการกู้คืนข้อมูลที่มีเสียงดังได้ ta ในบางสถานการณ์มันทำงานโดยการใช้ค่าเฉลี่ยของอินพุท y บนหน้าต่างเวลาบานเลื่อนที่มีขนาดระบุโดย n ยิ่ง n มีขนาดใหญ่เท่าใดจำนวนที่ราบเรียบของผลกระทบของ n จะสัมพันธ์กับความยาวของ เวกเตอร์อินพุต y และมีประสิทธิภาพดีการเรียงลำดับของการสร้างตัวกรองความถี่ lowpass - ดูตัวอย่างและส่วนพิจารณาเนื่องจากจำนวนของการปรับให้เรียบโดยแต่ละค่าของ n จะสัมพันธ์กับความยาวของเวกเตอร์อินพุต ค่าเพื่อดูสิ่งที่เหมาะสมจำไว้ว่าจุด n จะหายไปในแต่ละเฉลี่ยถ้า n คือ 100, 99 จุดแรกของ input vector don t มีข้อมูลเพียงพอสำหรับค่าเฉลี่ย 100pt นี้สามารถหลีกเลี่ยงได้บ้างโดยการวางซ้อนค่าเฉลี่ยเช่น โค้ดและกราฟด้านล่างเปรียบเทียบค่าเฉลี่ยของค่าเฉลี่ยความยาวของหน้าต่างที่แตกต่างกันสังเกตว่า 10 10pt เทียบกับค่าเฉลี่ย 20pt เพียงอย่างเดียวในทั้งสองกรณีข้อมูลทั้งหมดหายไปทั้งหมด 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