ฉัน ve มีเวกเตอร์และฉันต้องการคำนวณค่าเฉลี่ยเคลื่อนที่ของมันโดยใช้หน้าต่างของความกว้าง 5.For เช่นถ้าเวกเตอร์ในคำถาม 1,2,3,4,5,6,7,8 แล้ว then. the แรก. รายการของเวกเตอร์ที่ได้ควรเป็นผลรวมของรายการทั้งหมดใน 1,2,3,4,5 เช่น 15. รายการที่สองของเวกเตอร์ที่ได้ควรเป็นผลรวมของรายการทั้งหมดใน 2,3,4,5,6 เช่น 20. ในท้ายที่สุดเวกเตอร์ที่เป็นผลลัพธ์ควรเป็น 15,20,25,30 ฉันจะทำอย่างไรได้ฟังก์ชัน conv นั้นขึ้นอยู่กับซอยของคุณคำตอบ 3 วิธีที่แตกต่างกัน ความกว้างของ 5 โดยใช้ timeit รู้สึกฟรีเพื่อ poke หลุมในความคิดเห็นถ้าคุณคิดว่ามันต้อง refined. conv โผล่ออกมาเป็นวิธีที่เร็วที่สุดมันเกี่ยวกับสองครั้งเร็วเท่าวิธีเหรียญ s โดยใช้ตัวกรองและประมาณสี่ครั้งเร็ว Luis วิธีการใช้เมนบอร์ด cumsum นี่คือมาตรฐานการป้อนข้อมูลมาตรฐานอื่น ๆ ที่กำหนดไว้สำหรับความกว้างของหน้าต่างที่แตกต่างกัน 1e4 ที่นี่วิธีการ cumsum ของ Luis Mendo กลายเป็นผู้ชนะที่ชัดเจนเนื่องจากความซับซ้อนของมันเป็นหลัก ควบคุมโดยความยาวของอินพุทและไม่ไวต่อความกว้างของหน้าต่างหากต้องการสรุปคุณควรใช้แนวทาง conv ถ้าหน้าต่างของคุณค่อนข้างเล็กใช้วิธี cumsum ถ้าหน้าต่างของคุณมีขนาดใหญ่มากโค้ดสำหรับ benchmarks. I ต้องคำนวณค่าเฉลี่ยเคลื่อนที่ในชุดข้อมูลภายในลูปสำหรับฉันต้องได้รับค่าเฉลี่ยเคลื่อนที่เหนือ N 9 วันอาร์เรย์ที่ฉันคำนวณเป็นชุดค่า 365 จำนวน M ซึ่งเป็นค่าเฉลี่ยของชุดข้อมูลอื่น ฉันต้องการพล็อตค่าเฉลี่ยของข้อมูลของฉันกับค่าเฉลี่ยเคลื่อนที่ใน plot. I googled เล็กน้อยเกี่ยวกับการย้ายค่าเฉลี่ยและคำสั่ง conv และพบสิ่งที่ฉันพยายามใช้ใน code. So ของฉันโดยทั่วไปฉันคำนวณค่าเฉลี่ยของฉันและพล็อตมัน กับค่าเฉลี่ยเคลื่อนที่ผิดฉันเลือกค่า wts ขวาปิดเว็บไซต์ mathworks เพื่อให้เป็นแหล่งที่ไม่ถูกต้องปัญหาของฉันว่าเป็นที่ฉันไม่เข้าใจสิ่งที่ wts นี้คือใครสามารถอธิบายหากมีบางอย่างจะทำอย่างไรกับน้ำหนักของค่า ที่ไม่ถูกต้องในกรณีนี้ค่าทั้งหมด es จะถ่วงน้ำหนักเหมือนกันและถ้าฉันทำอย่างนี้ผิดทั้งหมดฉันขอความช่วยเหลือกับมันขอแสดงความนับถือ thank. asked กันยายน 23 กันยายนที่ 19 05.Using conv เป็นวิธีที่ดีที่จะใช้ค่าเฉลี่ยเคลื่อนที่ในรหัสที่คุณ ใช้วัตต์เป็นเท่าใดคุณจะชั่งน้ำหนักแต่ละค่าตามที่คุณคาดเดาผลรวมของเวกเตอร์ที่ควรจะเท่ากับหนึ่งถ้าคุณต้องการน้ำหนักแต่ละค่าเท่ากันและทำขนาด N ย้ายตัวกรองแล้วคุณจะต้องการทำใช้ อาร์กิวเมนต์ที่ถูกต้องใน conv จะทำให้มีค่าน้อยกว่า Ms มากกว่าที่คุณมีใน M ใช้เหมือนกันถ้าคุณ don t ใจผลกระทบจากการ padding ศูนย์ถ้าคุณมีกล่องเครื่องมือการประมวลผลสัญญาณที่คุณสามารถใช้ cconv ถ้าคุณต้องการลองเป็นค่าเฉลี่ยเคลื่อนที่แบบวงกลม Something เช่นคุณควรอ่านเอกสาร conv และ cconv เพื่อดูข้อมูลเพิ่มเติมหากคุณยังไม่ได้ใช้งานคุณสามารถใช้ตัวกรองเพื่อค้นหาค่าเฉลี่ยที่ใช้งานได้โดยไม่ต้องใช้ loop สำหรับตัวอย่างนี้ใช้หาค่าเฉลี่ยของเวกเตอร์ 16 องค์ประกอบโดยใช้ขนาดของหน้าต่าง 5.2 ราบรื่นเป็นส่วนหนึ่งของ Curve Fitting Toolbox ซึ่งมีอยู่ในกรณีที่มีการใช้งานมากที่สุด y y เรียบราบรื่นข้อมูลในคอลัมน์เวกเตอร์ y โดยใช้ตัวกรองเฉลี่ยที่เคลื่อนที่ผลลัพธ์จะถูกส่งกลับในเวกเตอร์ของคอลัมน์ yy ช่วงค่าเริ่มต้นสำหรับค่าเฉลี่ยเคลื่อนที่คือ 5.Download movAv m ดู movAv2 - รุ่นที่ช่วยให้การถ่วงน้ำหนักคำอธิบาย Matlab รวมถึงฟังก์ชันที่เรียกว่า Movavg และ tsmovavg ซึ่งเป็นค่าเฉลี่ยเคลื่อนที่แบบเรียลไทม์ในกล่องเครื่องมือทางการเงิน movAv ได้รับการออกแบบมาเพื่อจำลองการทำงานพื้นฐานของโค้ดเหล่านี้โค้ดที่นี่เป็นตัวอย่างที่ดีในการจัดการดัชนีภายในลูปซึ่งอาจทำให้เกิดความสับสนได้ เริ่มต้นด้วย I ve จงใจเก็บรหัสสั้นและง่ายเพื่อให้กระบวนการนี้ clear. movAv ดำเนินการเฉลี่ยเคลื่อนที่ง่ายที่สามารถใช้ในการกู้คืนข้อมูลที่มีเสียงดังในบางสถานการณ์ทำงานโดยการหมายถึงการป้อนข้อมูล y ผ่านหน้าต่างเวลาบานเลื่อน ขนาดที่ระบุโดย n ขนาดใหญ่ n คือจำนวนที่มากขึ้นของการทำให้ราบเรียบผลของ n สัมพันธ์กับความยาวของเวกเตอร์อินพุต y และมีประสิทธิภาพดีการจัดเรียงของ c อ้างถึงตัวกรองความถี่ lowpass - ดูตัวอย่างและส่วนพิจารณาเนื่องจากจำนวนของการปรับให้เรียบโดยแต่ละค่าของ n จะสัมพันธ์กับความยาวของเวกเตอร์อินพุตค่าของค่าที่ทดสอบจะแตกต่างกันเสมอไปเพื่อดูว่ามีความเหมาะสมอย่างไรโปรดจำไว้ว่า n จุดจะสูญหายไปในแต่ละค่าเฉลี่ยหาก n เท่ากับ 100 จุดแรกของอินพุทเวกเตอร์ 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