Monday 28 August 2017

ชี้แจง เคลื่อนไหว เฉลี่ย Cuda


สำหรับวิธีการอื่นคุณสามารถตัดทอนหน้าต่างเฉลี่ยที่ชี้แจงได้และคำนวณสัญญาณที่กรองแล้วโดยการทำ convolution ระหว่างสัญญาณกับเลขชี้กำลังแบบมีหน้าต่าง คอมเพล็กซ์สามารถคำนวณได้โดยการใช้ CUDA FFT library (CFFT) ฟรีเนื่องจากคุณอาจทราบว่า convolution สามารถแสดงเป็นตัวคูณจุดที่สองของสัญญาณในโดเมน Fourier (ซึ่งเป็นชื่อทฤษฎีสังวัตนา Convolution, ซึ่งทำงานด้วยความซับซ้อนของ O (n log (n))) วิธีการนี้จะลดรหัสเคอร์เนล CUDA ของคุณและทำงานได้อย่างรวดเร็วแม้ใน GeForce 570 โดยเฉพาะดังนั้นหากคุณสามารถคำนวณทั้งหมดด้วยความแม่นยำแบบเดี่ยว (float) ตอบเมษายน 30 14 ที่ 17:04 ฉันจะเสนอเพื่อจัดการกับสมการความแตกต่างดังที่ระบุไว้ด้านล่างและใช้ CUDA Thrust primitives รูปแบบที่แตกต่างของรูปแบบความแตกต่างโดยพีชคณิตง่ายๆคุณสามารถหาข้อมูลต่อไปนี้: ด้วยเหตุนี้แบบฟอร์มที่ชัดเจนมีดังต่อไปนี้: CUDA THRUST IMPLEMENTATION คุณสามารถใช้รูปแบบที่ชัดเจนข้างต้นได้โดยทำตามขั้นตอนต่อไปนี้: เริ่มต้นลำดับการป้อนข้อมูล dinput alpha ยกเว้น dinput0 1. กำหนดเวกเตอร์ d1overbetatothen เท่ากับ 1, 1beta, 1beta2, 1beta3 คูณ dinput elementwise โดย d1overbetatothen ดำเนินการ inclusivescan เพื่อให้ได้ลำดับของ yn betan แบ่งลำดับข้างต้นโดย 1, 1beta, 1beta2, 1beta3 วิธีการข้างต้นสามารถแนะนำสำหรับระบบ Linear Time-Varying (LTV) สำหรับระบบ Linear Time-Invariant (LTI) ควรใช้แนวทาง FFT ที่ Paul กล่าวถึง Im ให้ตัวอย่างของวิธีการที่โดยใช้ CUDA แรงขับและ cuFFT ในคำตอบของฉันเพื่อกรอง FIR ใน CUDA ฉันมีอาร์เรย์ของค่าเช่นนี้อาร์เรย์ข้างต้นเป็น oversimplified, Im เก็บ 1 ค่าต่อมิลลิวินาทีในรหัสจริงของฉันและฉัน ต้องประมวลผลผลลัพธ์บนอัลกอริทึมที่ฉันเขียนเพื่อหาจุดสูงสุดใกล้เคียงที่สุดก่อนจุดในเวลา ตรรกะของฉันล้มเหลวเนื่องจากในตัวอย่างข้างต้นของฉัน 0.36 เป็นยอดจริง แต่อัลกอริทึมของฉันจะมองย้อนกลับไปและดูจำนวนสุดท้าย 0.25 เป็นยอดสูงสุดเนื่องจาก theres ลดลงเหลือ 0.24 ก่อนหน้านี้ เป้าหมายคือการใช้ค่าเหล่านี้และใช้อัลกอริธึมกับข้อมูลเหล่านี้ซึ่งจะทำให้บิตเหล่านั้นเรียบขึ้นเพื่อให้มีค่าเชิงเส้นมากขึ้น (เช่น: Id เช่นผลของฉันจะ curvy ไม่ jaggedy) Ive ได้รับการบอกให้ใช้ตัวกรองค่าเฉลี่ยที่ชี้แจงค่าเฉลี่ยกับค่าของฉัน ฉันจะทำเช่นนี้จริงๆมันยากสำหรับฉันที่จะอ่านสมการทางคณิตศาสตร์ที่ฉันจัดการดีมากกับรหัส ฉันจะประมวลผลค่าในอาร์เรย์ของฉันโดยใช้การคำนวณค่าเฉลี่ยเคลื่อนที่แบบเสวนาเพื่อให้พวกมันออกไปถาม 8 ก. พ. 2 เวลา 20:27 เพื่อคำนวณค่าเฉลี่ยเคลื่อนที่แบบเสวนา คุณต้องเก็บข้อมูลบางส่วนไว้รอบ ๆ และคุณต้องใช้พารามิเตอร์การปรับค่า (สมมติว่าคุณกำลังใช้ Java 5 ขึ้นไป): เริ่มต้นด้วยพารามิเตอร์การสลายตัวที่คุณต้องการ (อาจใช้การปรับค่าระหว่าง 0 ถึง 1) และใช้ค่าเฉลี่ย () เพื่อกรอง เมื่ออ่านหน้าเว็บเกี่ยวกับการกลับเป็นซ้ำคณิตศาสตร์บางสิ่งที่คุณจำเป็นต้องรู้จริงๆเมื่อเปลี่ยนเป็นรหัสก็คือนักคณิตศาสตร์ต้องการเขียนดัชนีเป็นอาร์เรย์และลำดับด้วยดัชนีย่อย (พวกเขายังมีโน้ตอื่น ๆ อีกเช่นกันซึ่งไม่ได้ช่วยอะไร) อย่างไรก็ตาม EMA ใช้งานได้ง่ายเพียงเท่านี้คุณจะต้องจำค่าเดิมที่ไม่มีอาร์เรย์สถานะที่ซับซ้อน ตอบกุมภาพันธ์ 8 12 เวลา 20:42 TKKocheran: Pretty much. (ถ้าเริ่มต้นด้วยลำดับใหม่ให้หาค่าเฉลี่ยใหม่) โปรดสังเกตว่าคำไม่กี่คำแรกในลำดับเฉลี่ยจะกระโดดไปรอบ ๆ เล็กน้อยเนื่องจากผลกระทบขอบเขต แต่คุณจะได้รับค่าเฉลี่ยเคลื่อนที่ที่เคลื่อนที่ได้ เกินไป. อย่างไรก็ตามข้อได้เปรียบที่ดีคือคุณสามารถตัดค่าตรรกะเฉลี่ยที่เคลื่อนที่ไปเป็นค่าเฉลี่ยและการทดสอบได้โดยไม่รบกวนส่วนที่เหลือของโปรแกรมมากเกินไป ndash Donal Fellows ก. พ. 9 12 เวลา 0:06 ฉันกำลังมีปัญหาในการทำความเข้าใจคำถามของคุณ แต่ฉันจะพยายามตอบคำถามต่อไป 1) ถ้าอัลกอริทึมของคุณพบ 0.25 แทน 0.36 แล้วมันก็ไม่ถูกต้อง ผิดเพราะสมมติว่ามีการเพิ่มขึ้นหรือลดลงเล็กน้อย (ซึ่งมักจะขึ้นหรือลงไปตลอดเวลา) เว้นแต่คุณจะเฉลี่ยข้อมูลทั้งหมดของคุณจุดข้อมูลของคุณ --- ตามที่คุณนำเสนอ --- ไม่เป็นเชิงเส้น ถ้าคุณต้องการหาค่าสูงสุดระหว่างสองจุดในเวลาจากนั้นแบ่งอาร์เรย์จาก tmin ไปเป็น tmax และหาค่าสูงสุดของอาร์เรย์ย่อยนั้น 2) ตอนนี้แนวคิดเกี่ยวกับค่าเฉลี่ยเคลื่อนที่จะง่ายมาก: สมมติว่าฉันมีรายการต่อไปนี้: 1.4, 1.5, 1.4, 1.5, 1.5 ฉันสามารถเรียบออกโดยใช้ค่าเฉลี่ยของสองตัวเลข: 1.45, 1.45, 1.45, 1.5 สังเกตว่าตัวเลขแรกเป็นค่าเฉลี่ย 1.5 และ 1.4 (ตัวเลขที่สองและหมายเลขแรก) ส่วนที่สอง (รายการใหม่) คือค่าเฉลี่ย 1.4 และ 1.5 (รายการเก่าที่สามและสอง) อันดับที่สาม (รายการใหม่) เฉลี่ย 1.5 และ 1.4 (สี่และสาม) และอื่น ๆ ฉันสามารถทำให้มันเป็นระยะเวลาสามหรือสี่หรือ n สังเกตว่าข้อมูลมีความนุ่มนวลมากขึ้น วิธีที่ดีในการดูค่าเฉลี่ยเคลื่อนที่ในที่ทำงานคือไปที่ Google Finance เลือกสต็อค (ลองใช้ Tesla Motors volatile สวย (TSLA)) และคลิก technicals ที่ด้านล่างของแผนภูมิ เลือก Moving Average โดยใช้ระยะเวลาที่กำหนดและค่าเฉลี่ยเคลื่อนที่แบบเสวนาเพื่อเปรียบเทียบความแตกต่าง ค่าเฉลี่ยเคลื่อนที่แบบเสวนาเป็นเพียงการอธิบายเพิ่มเติมอีกประการหนึ่งจากข้อมูลนี้ แต่ให้น้ำหนักข้อมูลเก่าน้อยกว่าข้อมูลใหม่นี่เป็นวิธีที่จะทำให้เกิดการปรับให้เรียบไปทางด้านหลัง โปรดอ่านรายการวิกิพีเดีย นี่เป็นความคิดเห็นมากกว่าคำตอบ แต่กล่องความคิดเห็นเล็ก ๆ น้อย ๆ ก็เล็กไป โชคดี. หากคุณมีปัญหาเกี่ยวกับคณิตศาสตร์คุณอาจไปกับค่าเฉลี่ยเคลื่อนที่ที่เรียบง่ายแทนที่จะเป็นเลขชี้กำลัง ดังนั้นผลลัพธ์ที่ได้จะเป็นเงื่อนไข x ล่าสุดหารด้วย x Pseudocode ที่ไม่ได้ตรวจสอบ: โปรดทราบว่าคุณจะต้องจัดการกับจุดเริ่มต้นและจุดสิ้นสุดของข้อมูลเนื่องจากคุณไม่สามารถเฉลี่ย 5 เทอมสุดท้ายเมื่ออยู่ในจุดข้อมูลที่ 2 ได้ นอกจากนี้ยังมีวิธีที่มีประสิทธิภาพในการคำนวณค่าเฉลี่ยเคลื่อนที่นี้ (ผลรวมรวม - เก่าที่สุดที่เก่าที่สุด) แต่นี่เป็นแนวคิดที่จะเกิดอะไรขึ้น ตอบเมื่อ 8 ก. พ. 55 ที่ 20: 41 เมื่อคำนวณค่าเฉลี่ยเคลื่อนที่ที่ใช้งานอยู่การวางค่าเฉลี่ยในช่วงเวลากลางหมายความว่าในตัวอย่างก่อนหน้านี้เราคำนวณค่าเฉลี่ยของช่วงเวลา 3 ช่วงแรกและวางไว้ข้างงวด 3 เราสามารถวางได้ ค่าเฉลี่ยในช่วงกลางของช่วงเวลาสามช่วงคือถัดจากช่วงเวลา 2 ซึ่งทำงานได้ดีกับช่วงเวลาแปลก ๆ แต่ไม่ค่อยดีเท่าช่วงเวลาที่เท่ากัน เราจะวางค่าเฉลี่ยเคลื่อนที่ครั้งแรกเมื่อ M 4 ในทางเทคนิคค่า Moving Average จะลดลงที่ 2.5, 3.5 เพื่อหลีกเลี่ยงปัญหานี้เราจะราบรื่นขึ้นโดยใช้ M 2 ดังนั้นเราจึงเรียบค่าที่ราบเรียบถ้าเราใช้ค่าเฉลี่ยจำนวนที่เท่ากันเราจำเป็นต้องเรียบค่าที่เรียบขึ้นตารางต่อไปนี้แสดงผลลัพธ์โดยใช้ M 4

No comments:

Post a Comment