Wednesday 26 July 2017

เฉลี่ยเคลื่อนที่ Linq


เพื่อให้บรรลุสมรรถนะเชิงรุกของ O n ในรูปแบบของการแก้ปัญหาด้วยมือคุณสามารถใช้ฟังก์ชัน Aggregate ได้เช่นเดียวกับในค่าสะสมที่ใช้งานเป็นประเภทแบบไม่ระบุตัวตนประกอบด้วยสองช่องผลลัพธ์ประกอบด้วยรายการผลการค้นหาที่สร้างขึ้นจนถึงตอนนี้การทำงานประกอบด้วยรายการล่าสุด period-1 elements ฟังก์ชัน aggregate เพิ่มค่าปัจจุบันลงใน Working List สร้างค่าเฉลี่ยปัจจุบันและเพิ่มค่าลงในผลลัพธ์แล้วลบค่าที่เก่าแก่ที่สุดตัวแรกออกจากรายการที่ทำงานเช่น seed คือค่าเริ่มต้นสำหรับการสะสมคือ build โดยการใส่องค์ประกอบ period-1 แรกเข้าไว้ใน Working และ Initializing Result ในรายการที่ว่างเปล่าดังนั้นการรวมตัวของ tha จะเริ่มต้นด้วยระยะเวลา element โดยการข้ามช่วงเวลา -1 ไปที่จุดเริ่มต้นในการเขียนโปรแกรมฟังก์ชันนี้เป็นรูปแบบการใช้งานทั่วไปสำหรับฟังก์ชัน aggretate หรือ fold , btw. The แก้ปัญหาไม่ได้เป็นหน้าที่ทำความสะอาดในที่รายการเดียวกันวัตถุทำงานและผลจะนำมาใช้ในทุกขั้นตอนฉัน m ไม่แน่ใจว่าที่อาจทำให้เกิดปัญหาถ้าเป็นเช่นนั้น ฉันคอมไพเลอร์ในอนาคตพยายามที่จะ parallellize รวมฟังก์ชันโดยอัตโนมัติในมืออื่น ๆ ฉัน m ยังไม่แน่ใจว่าถ้าเป็นไปได้หลังจากที่ทุกโซลูชั่นการทำงานอย่างหมดจดควรสร้างรายการใหม่ที่ทุกขั้นตอนนอกจากนี้ทราบว่า C ขาดการแสดงออกที่มีประสิทธิภาพในบาง Python สมมุติ C - ผสม pseudocode หนึ่งสามารถเขียนฟังก์ชันการรวมเช่นซึ่งจะเป็นบิตสง่างามมากขึ้นในความอ่อนน้อมถ่อมตน opinion. Note เวลาทำงานของ O n 2 เนื่องจากคุณต้องข้ามองค์ประกอบมากขึ้นในทุกขั้นตอนและ afaik ข้ามฉันได้ เพื่อเรียก i ครั้งดูการตอบสนองของฉันสำหรับการแก้ปัญหาในเวลา O n ฉันเพิ่งสังเกตเห็นความเห็น OPs ด้านล่างว่าเขาเธออาจจะได้รับค่าจาก SQL DB ในอนาคตในกรณีนี้ฉันทุกคนควรกีดกันจากการแก้ปัญหานี้ MartinStettner 3 มีนาคม 11 ที่ 0 53. สำหรับวิธีที่มีประสิทธิภาพมากที่สุดเท่าที่จะเป็นไปได้ในการคำนวณ Moving Average กับ LINQ คุณไม่ควรใช้ LINQ แทนผมขอแนะนำให้สร้างคลาส helper ซึ่งคำนวณค่าเฉลี่ยเคลื่อนที่โดยใช้วิธีที่มีประสิทธิภาพมากที่สุดโดยใช้ ac บัฟเฟอร์รูปวงกลมและตัวกรองค่าเฉลี่ยเคลื่อนที่ที่เป็นสาเหตุให้เป็นไปตาม LINQ อันดับแรกค่าเฉลี่ยของการเคลื่อนที่นี้เป็นตัวกรอง MovingAverage ที่รวดเร็วและมีน้ำหนักเบาสร้างบัฟเฟอร์แบบวงกลมของความยาว N และคำนวณค่าหนึ่ง เพิ่มหนึ่งลบและหนึ่งคูณต่อจุดข้อมูลต่อท้ายเมื่อเทียบกับ N คูณเพิ่มต่อจุดสำหรับการใช้กำลังเดรัจฉานวิธีการต่อไปนี้ห่อคลาส MovingAverage และอนุญาตให้มีการแทรกลงในสตรีม IEnumerable เพื่อทำสิ่งนี้ใน วิธีการทำงานมากขึ้นคุณต้องมีวิธีการสแกนที่มีอยู่ใน Rx แต่ไม่ได้อยู่ใน LINQ. Let s ดูว่ามันจะมีลักษณะเช่นถ้าเรา d มีวิธีการสแกนและนี่ s วิธีการสแกนถ่ายและปรับจากที่นี่ควรจะ มีสมรรถนะที่ดีกว่าวิธีกำลังเดรัจฉานเนื่องจากเรากำลังใช้กำลังงานทั้งหมดในการคำนวณ SMA เพื่อเริ่มต้นเราจำเป็นต้องคำนวณระยะเวลาแรกที่เราเรียกว่าเมล็ดพันธุ์ที่นี่จากนั้นทุกๆค่าที่ตามมาเราคำนวณจากเมล็ดพันธุ์ที่สะสม lue เมื่อต้องการทำเช่นนี้เราต้องใช้ค่าเดิมที่เป็น t-delta และค่าล่าสุดที่เราซิปกันแบบหนึ่งครั้งจากจุดเริ่มต้นและครั้งหนึ่งเคยเปลี่ยนโดย delta ในตอนท้ายเราทำการล้างข้อมูลโดยการเพิ่ม zeroes สำหรับความยาว ของงวดแรกและเพิ่มมูลค่าเมล็ดเริ่มต้นตอบแล้ว Jun 19 13 ที่ 22 58 เป้าหมายของฉันคือการได้รับค่าเฉลี่ยถ่วงน้ำหนักจากตารางหนึ่งขึ้นอยู่กับตารางคีย์หลักอื่นฉันต้องได้รับค่าเฉลี่ยถ่วงน้ำหนักตามความยาวของ ส่วนและฉันต้องละเว้นค่า -1 ฉันรู้วิธีการทำเช่นนี้ใน SQL แต่เป้าหมายของฉันคือการทำเช่นนี้ใน LINQ ดูเหมือนบางอย่างเช่นนี้ใน SQL. I ยังคงสวยใหม่ LINQ และมีช่วงเวลาที่ยาก การหาวิธีที่ฉันจะแปลนี้ค่าเฉลี่ยถ่วงน้ำหนักผลควรออกมาประมาณ 55 3 ขอขอบคุณคุณได้ 26 เมษายน 26 ที่ 15 23.I ทำพอที่ฉันสร้างวิธีการขยาย LINQ หลังจากที่คุณได้รับเซตย่อยของข้อมูล โทรดูเหมือนว่านี้เป็นประโยชน์มากเพราะฉันสามารถรับค่าเฉลี่ยถ่วงน้ำหนักของกลุ่มข้อมูลใด ๆ ba sed ในเขตข้อมูลอื่นภายใน record. I เดียวกันตอนนี้ตรวจสอบการหารด้วยศูนย์และโยนข้อยกเว้นมีรายละเอียดมากขึ้นแทนการกลับ 0 ช่วยให้ผู้ใช้สามารถจับข้อยกเว้นและจัดการตาม needed. I มีข้อมูลจำนวน 4000 หุ้นและ tring ในการคำนวณ ค่าเฉลี่ยเคลื่อนที่สำหรับค่าข้อมูลทั้งหมด แต่เนื่องจากค่าเฉลี่ยเคลื่อนที่อยู่บนพื้นฐานข้อมูลก่อนหน้าและฉันไม่สามารถคำนวณ SMA 15 วันเป็นเวลา 14 วันข้าม 14 วันแรกและคำนวณ SMA ในส่วนที่เหลือของข้อมูล จะต้องใช้ LINQ เพื่อให้บรรลุทุกคนสามารถให้ตัวอย่างหรือคำใบ้วิธีการใช้ LINQ ในการคำนวณค่าเฉลี่ยเคลื่อนที่ผลลัพธ์สำหรับค่าเฉลี่ยอยู่ที่ประมาณ 500 si จริงๆ don t เข้าใจว่าเป็นไปได้ที่จะได้รับค่าเฉลี่ยสูงที่ averager กับผลรวมอาร์เรย์ 07 2012 562 49 571 72.06 08 2012 565 84 580 32.06 11 2012 568 56 571 17.06 12 2012 569 55 576 16.06 13 2012 570 56 572 16.06 14 2012 570 63 571 53.06 15 2012 571 21 574 13.06 18 2012 572 78 585 78.06 19 2012 573 79 587 41.06 20 2012 574 23 585 74.06 21 2012 574 22 577 67.06 22 2012 575 63 582 10.06 25 2012 576 06 570 77.06 26 2012 576 68 572 03.06 27 2012 576 88 574 50.06 28 2012 576 7 569 05.06 29 2012 576 95 584 00.07 02 2012 578 37 592 52.07 03 2012 579 92 599 41.07 03 2012 581 74 599 41. อ้างจาก Leemx วันศุกร์ที่ 16 พฤศจิกายน พ. ศ. 2555 2 59 น. วันจันทร์ที่ 19 พฤศจิกายน พ. ศ. 2555 7 38 น. Linq related จาก Visual C General. Friday , 16 พฤศจิกายน 2012 2 42 AM หากต้องการสร้างค่าเฉลี่ยเคลื่อนที่เราจะเริ่มต้นด้วยการสร้างช่วงตั้งแต่ 0 ถึงความยาวของรายการข้อมูล - ความยาวของระยะเวลาการเคลื่อนที่จากนั้นสำหรับแต่ละค่าในช่วงเลือกองค์ประกอบ x ถึง x ยาวที่เคลื่อนที่ ระยะเวลาและคำนวณ average. All ในคำสั่งที่ดี LINQ โปรดทราบว่านี้ไม่ได้มีประสิทธิภาพมากเนื่องจากคุณโดยทั่วไปย้ำกว่ารายการข้อมูลสำหรับทุกค่าในช่วงที่พวกเขาดูระบบนี้ช่วยให้ลายเซ็นของมากกว่า 60 cha. Edited โดย Arno Brouwer วันศุกร์, พฤศจิกายน 23, 2012 4 42 PM. Markard เป็นคำตอบโดย Alexander Sun วันศุกร์, ธันวาคม 0 7, 2012 2 44 AM. Friday, November 23, 2012 4 41 PM. All replies. A ตัวอย่างของคำสั่ง LINQ ของคุณจะช่วยเพิ่มประสิทธิภาพการเพาะเลี้ยงเป็นรากของความชั่วร้ายทั้งหมด - Knuth. To สร้างค่าเฉลี่ยเคลื่อนที่ฉันจะเริ่มต้นด้วย สร้างช่วงตั้งแต่ 0 ถึงความยาวของรายการข้อมูล - ความยาวของระยะเวลาการเคลื่อนที่แล้วสำหรับแต่ละค่าในช่วงเลือกองค์ประกอบ x ถึง x ยาวของระยะเวลาการเคลื่อนที่และคำนวณ average. All ในงบ LINQ หนึ่งที่ดีโปรดทราบว่านี่ไม่ใช่อย่างยิ่ง เนื่องจากคุณสามารถย้ำถึงรายการข้อมูลสำหรับทุกๆค่าในช่วงนี้ได้ดูระบบนี้ช่วยให้ลายเซ็นมากกว่า 60 cha. Edited by Arno Brouwer วันศุกร์ที่ 23 พฤศจิกายน พ. ศ. 2555 4 42 PM เป็นคำตอบของ Alexander Sun วันศุกร์ที่ 7 ธันวาคม พ. ศ. 2555 2 44 น. วันศุกร์ที่ 23 พฤศจิกายน พ. ศ. 2555 4 41 น. ไมโครซอฟท์กำลังทำการสำรวจออนไลน์เพื่อทำความเข้าใจกับความคิดเห็นของคุณเกี่ยวกับเว็บไซต์ MSDN หากคุณเลือกที่จะเข้าร่วมการสำรวจออนไลน์จะนำเสนอแก่คุณเมื่อ คุณออกจากไซต์ Msdn Web คุณต้องการเข้าร่วมช่วยคุณปรับปรุง MSDN หรือไม่ ไปที่หน้า UserVoice เพื่อส่งและออกเสียงลงคะแนนเกี่ยวกับศูนย์ข้อมูลความคิดศูนย์ข้อมูลทรัพยากรการเรียนรู้

No comments:

Post a Comment