Wednesday 2 August 2017

การย้าย ค่าเฉลี่ย ใน matlab พล็อต


ฉันต้องคำนวณค่าเฉลี่ยที่เคลื่อนที่เหนือชุดข้อมูลภายในลูปสำหรับ ฉันต้องได้รับค่าเฉลี่ยเคลื่อนที่มากกว่า 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.A วิธีง่ายๆ (ad hoc) คือการใช้ค่าเฉลี่ยถ่วงน้ำหนัก (ปรับได้โดย alpha) ที่แต่ละจุดกับเพื่อนบ้าน: หรือการเปลี่ยนแปลงบางอย่างดังกล่าว ใช่จะซับซ้อนมากขึ้นคุณสามารถ Fourier แปลงข้อมูลของคุณก่อนจากนั้นตัดความถี่สูง มีบางอย่างเช่นนี้ตัดออกสูงสุด 20 ความถี่ ระมัดระวังการตัดออกสมมาตรถ้าการแปลงผกผันไม่เป็นจริงอีกต่อไป คุณจำเป็นต้องเลือกความถี่ตัดที่เหมาะสมสำหรับการทำให้เรียบ นี่คือการกรองแบบง่ายๆ (การกรองช่องในโดเมนความถี่) ดังนั้นคุณสามารถลองลดความถี่ในการสั่งซื้อได้อย่างนุ่มนวลหากการบิดเบือนไม่ได้รับการยอมรับ #: 31567 FFT ไม่ได้เป็นความคิดที่ไม่ดี แต่อาจ overkill นี่. การวิ่งหรือการเคลื่อนที่โดยทั่วไปให้ผลลัพธ์ที่ไม่ดีโดยทั่วไปและควรหลีกเลี่ยงสิ่งอื่นใดนอกจากการบ้านที่ล่าช้า (และเสียงสีขาว) ใช้รหัส Savitzky-Golay (ใน Matlab sgolayfilt (.)) นี้จะให้ผลลัพธ์ที่ดีที่สุดสำหรับสิ่งที่คุณกำลังมองหาบางเรียบในประเทศในขณะที่รักษารูปร่างของเส้นโค้งที่สร้างขึ้นเมื่อพุธ 08 ตุลาคม 2008 20:04 แก้ไขล่าสุดในพฤหัสบดี 14 มีนาคม 2013 01:29 เขียนโดย Batuhan Osmanoglu ฮิต: 41480 Moving Average ใน 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.29 กันยายน 2013 ค่าเฉลี่ยเคลื่อนที่โดยการหมุนตัวค่าเฉลี่ยเคลื่อนที่คืออะไรและมีประโยชน์อย่างไรสำหรับการคำนวณค่าเฉลี่ยเคลื่อนที่โดยใช้ convolution ค่าเฉลี่ยเคลื่อนที่คือการดำเนินการง่ายๆโดยปกติแล้ว ลดสัญญาณรบกวนของสัญญาณ: เรากำหนดค่าของแต่ละจุดให้เป็นค่าเฉลี่ยของค่าในละแวกเดียวกัน โดยสูตร: นี่ 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 เราจะใช้ kernel k ดังต่อไปนี้: ฟังก์ชันง่ายๆทำค่าเฉลี่ยเคลื่อนที่คือ: การใช้ตัวอย่างคือ:

No comments:

Post a Comment