Wednesday 19 July 2017

การย้าย ค่าเฉลี่ย โดยไม่ต้อง จัดเก็บ ค่า


ฉันพยายามหาวิธีคำนวณค่าเฉลี่ยสะสมที่เคลื่อนที่โดยไม่เก็บข้อมูลการนับและข้อมูลทั้งหมดที่ได้รับเพื่อให้ห่างไกลฉันมากับสองอัลกอริทึม แต่ทั้งสองต้องเก็บข้อมูล count. new เฉลี่ยเก่านับข้อมูลเก่าถัดไปนับถัดไป ค่าเฉลี่ยถดถอยเฉลี่ยต่อไป - ค่าเฉลี่ยถัดไปนับถ้ำปัญหาที่เกิดขึ้นกับวิธีการเหล่านี้คือการนับได้มากขึ้นและใหญ่ขึ้นส่งผลให้สูญเสียความแม่นยำในค่าเฉลี่ยที่เกิดขึ้นวิธีการแรกใช้นับเก่าและนับต่อไปที่เห็นได้ชัดว่า 1 นอกเหนือ นี้ทำให้ฉันคิดว่าอาจจะมีวิธีการลบนับ แต่โชคร้ายที่ฉัน haven t พบว่ามันยังได้รับฉันอีกเล็กน้อยแม้ว่าทำให้วิธีที่สอง แต่นับยังเป็น present. Is เป็นไปได้หรือฉันแค่ ฉันกำลังพัฒนาระบบกราฟิก LCD เพื่อแสดงอุณหภูมิ, กระแส, แรงดันไฟฟ้าพลังงานและพลังงานในระบบปั๊มความร้อนการใช้กราฟิกแอลซีดีหมายความว่าครึ่งหนึ่งของ SRAM ของฉันและ .75 ของแฟลชฮาของฉัน ถูกใช้โดยบัฟเฟอร์หน้าจอและสตริงฉันกำลังแสดงตัวเลขเฉลี่ยสูงสุดสำหรับพลังงานเมื่อตอนเที่ยงคืนเมื่อตัวเลขรายวันรีเซ็ตระบบจะตรวจสอบว่าการบริโภคสำหรับวันอยู่เหนือหรือต่ำกว่าระดับต่ำสุดหรือสูงสุดก่อนหน้านี้และร้านค้าหรือไม่ ค่าเฉลี่ยคำนวณโดยการหารการใช้พลังงานสะสมตามจำนวนวันฉันต้องการแสดงค่าเฉลี่ยรายวันในช่วงสัปดาห์ที่ผ่านมาและ 4 สัปดาห์สำหรับความเรียบง่ายค่าเฉลี่ยของค่าเฉลี่ยของค่าเฉลี่ยของกลาโหมปัจจุบันนี้ต้องใช้ค่าคงที่สำหรับค่าล่าสุด 28 วันและคำนวณค่าเฉลี่ยสำหรับอาร์เรย์ทั้งหมดเป็นรายเดือนและ 7 วันที่ผ่านมาสำหรับ weekly. Initially ฉันได้ทำนี้โดยใช้อาร์เรย์ของลอยเป็นพลังงานที่อยู่ในรูปแบบ 12 12kWh แต่ใช้ 28 4 bytes 112 bytes 5 4 ของ SRAM ฉัน don t ใจมีเพียงจุดทศนิยมเดียวของความละเอียดดังนั้นฉันเปลี่ยนไปใช้ uint16t และคูณตัวเลขโดย 100 ซึ่งหมายความว่า 12 12 จะแสดงเป็น 1212 และฉันหารด้วย 100 เพื่อแสดง s ขนาดของอาร์เรย์ขณะนี้ลงไป 56 ไบต์ better. There มากไม่มีวิธีเล็กน้อยเพื่อลดรูปลงไป uint8t ที่ฉันสามารถดูฉันสามารถทนต่อการสูญเสียตำแหน่งทศนิยม 12 1kWh แทน 12 12kWh แต่ การบริโภคสูงกว่า 25 5kWh 255 เป็นค่าที่สูงที่สุดที่แสดงโดยจำนวนเต็มแบบไม่ระบุชื่อ 8 บิตการบริโภคนั้นไม่เคยต่ำกว่า 10 0kWh หรือสูงกว่า 35 0kWh ดังนั้นฉันจึงสามารถลบ 10 จากตัวเลขที่เก็บไว้ แต่ฉันรู้ว่าวันหนึ่งเรา จะเกินขีด จำกัด เหล่านี้แล้วทดสอบรหัสเพื่อแพ็คค่า 9 บิตลงในอาร์เรย์ซึ่งจะทำให้ช่วงของ 0-51 2kWh และใช้ 32 ไบต์ทั้งหมด แต่การเข้าถึงอาร์เรย์เช่นนี้ค่อนข้างช้าโดยเฉพาะอย่างยิ่งเมื่อคุณต้องย้ำ มากกว่าค่าทั้งหมดในการคำนวณค่าเฉลี่ยดังนั้นคำถามของฉันคือ - มีวิธีที่มีประสิทธิภาพมากขึ้นในการคำนวณค่าเฉลี่ยเคลื่อนที่โดยมีสามวินโดว์ - อายุการใช้งาน 28 วันและ 7 วันประสิทธิภาพในการใช้ SRAM มีน้อยลง แต่ไม่มีการลงโทษอย่างมาก รหัสฉันสามารถหลีกเลี่ยงการเก็บค่าทั้งหมดที่เก็บไว้ M ar 7 14 at 8 32. ฉันเคยคิดและคุณมีสิทธิ์ดังนั้นเทคนิคที่ทำให้คำตอบของฉันไม่ถูกต้อง m m ลงทุนบางเวลาและความอดทนในนั้นบางทีบางสิ่งบางอย่างออกจากช่องฉันจะแจ้งให้คุณทราบว่าฉันมากับสิ่งที่เรา ขออภัยในความสับสน Aditya Somani 8 มี.ค. ที่ 17 15. มีวิธีที่มีประสิทธิภาพในการคำนวณค่าเฉลี่ยเคลื่อนที่โดย 28 วันและ 7 วันต้องจดจำ 27 วันของประวัติศาสตร์ คุณอาจได้รับการจัดเก็บข้อมูลใกล้เคียงกับ 11 ค่ามากกว่า 28 ค่าอาจเป็นอย่างอื่นกล่าวคือแทนที่จะจัดเก็บรายละเอียดทุกวันทุกๆ 27 วันเก็บค่าข้อมูลรายวันรายละเอียดไว้ 7 รายการในช่วง 7 วันที่ผ่านมา หรือดังนั้นวันและยังเก็บข 4 หรือเพื่อสรุปค่าของข้อมูลทั้งหมดหรือเฉลี่ยสำหรับแต่ละที่ผ่านมา 4 หรือมากกว่าสัปดาห์ที่ผ่านมาหนึ่งในโปรแกรมหลักสำหรับคณะกรรมการ Arduino คือการอ่านและการเข้าสู่ระบบของข้อมูลเซ็นเซอร์เช่นหนึ่งจอภาพความดันทุก วันที่สองของวันเป็น samp สูง le อัตรามักจะสร้าง spikes ในกราฟหนึ่งยังต้องการที่จะมีค่าเฉลี่ยของการวัดเป็นวัดไม่คงที่ในเวลาสิ่งที่เรามักจะต้องเป็นค่าเฉลี่ยทำงานเฉลี่ยนี้เป็นค่าเฉลี่ยของช่วงเวลาหนึ่งและมีคุณค่ามากเมื่อทำวิเคราะห์แนวโน้ม รูปแบบที่เรียบง่ายที่สุดของค่าเฉลี่ยในการทำงานสามารถทำได้โดยโค้ดที่สร้างขึ้นจากค่าเฉลี่ยที่ดำเนินไปก่อนหน้านี้หากไม่ต้องการใช้คณิตศาสตร์แบบลอยตัว - เนื่องจากจะทำให้หน่วยความจำและความเร็วลดลง - หนึ่งสามารถทำเหมือนกันได้อย่างสมบูรณ์ในโดเมนจำนวนเต็ม หารด้วย 256 ในโค้ดตัวอย่างคือ shift-right 8 ซึ่งเร็วกว่าการพูดหารด้วย 100 เช่นนี้สำหรับทุกๆพลังของ 2 เป็น divider และหนึ่งต้องดูแล sum of weigths เท่ากับพลังของ 2 และ แน่นอนหนึ่งควรดูแลไม่มี overflow ปานกลางพิจารณาใช้ unsigned long. If คุณต้องมีค่าเฉลี่ยที่ถูกต้องมากขึ้นทำงานใน concreto จากการวัด 10 ครั้งคุณต้องอาร์เรย์หรือเชื่อมโยงรายการถือพวกเขาแถวนี้ทำหน้าที่เป็นวงกลม บัฟเฟอร์และมีการวัดใหม่ทั้งหมดที่เก่าที่สุดจะถูกลบออกค่าเฉลี่ยที่ใช้คำนวณเป็นผลรวมขององค์ประกอบทั้งหมดหารด้วยจำนวนขององค์ประกอบในอาร์เรย์รหัสสำหรับค่าเฉลี่ยในการทำงานจะคล้ายกับข้อมูลนี้กลับมาจากโค้ดนี้คือ อาร์เรย์ที่จะถือค่าทั้งหมดจะกลายเป็นขนาดใหญ่มากถ้าคุณมีหนึ่งการวัดต่อวินาทีและคุณต้องการใช้ค่าเฉลี่ยต่อนาทีที่คุณต้องการอาร์เรย์ของ 60 เฉลี่ยต่อชั่วโมงจะต้องอาร์เรย์ของ 3600 ที่ couldn t จะทำแบบนี้ใน Arduino เนื่องจากมีเพียง RAM 2K เท่านั้นอย่างไรก็ตามโดยการสร้างค่าเฉลี่ย 2 ขั้นตอนคุณสามารถตรวจสอบความถูกต้องได้ไม่ดีสำหรับการวัดทั้งหมดในโค้ด psuedo เนื่องจากอาร์เรย์ static ภายในใหม่จำเป็นสำหรับฟังก์ชัน runningAverage ทุกตัวเสียงกรีดร้องนี้จะถูกนำมาใช้ในคลาส. RunningAverage ไลบรารีไลบรารีรันไลท์ทำให้ชั้นของฟังก์ชันข้างต้นจึงสามารถใช้งานได้หลายครั้งในโครงร่างมัน decouples เพิ่มและฟังก์ชั่นเฉลี่ยที่จะเป็นบิตที่มีความยืดหยุ่นมากขึ้นเช่นหนึ่งสามารถโทร erage หลายครั้งโดยไม่ต้องเพิ่มสิ่งใดโปรดทราบว่าทุกๆอินสแตนซ์ของคลาสจะเพิ่มอาร์เรย์ของตัวเองเพื่อเก็บข้อมูลการวัดและเพิ่มการใช้งานหน่วยความจำอินเตอร์เฟสของคลาสจะถูกเก็บไว้ให้เล็กที่สุดเท่าที่จะเป็นไปได้หมายเหตุกับรุ่น 0 2 ชื่อของวิธีการทั้งหมดทำขึ้น descriptive. S ร่างเล็กแสดงให้เห็นว่าสามารถใช้เครื่องกำเนิดไฟฟ้าแบบสุ่มจะใช้ในการเลียนแบบเซ็นเซอร์ในการติดตั้ง myRA จะล้างเพื่อให้เราสามารถเริ่มต้นการเพิ่มข้อมูลใหม่ในวงแรกจำนวนสุ่มคือ สร้างและแปลงเป็นลอยที่จะเพิ่ม myRA แล้ววิ่งพิมพ์จะถูกพิมพ์ไปยังพอร์ตอนุกรมหนึ่งยังสามารถแสดงบนจอแอลซีดีบางส่วนหรือส่งผ่าน ethernet etc เมื่อ 300 รายการที่มีการเพิ่ม myRA จะถูกล้างเพื่อเริ่มต้นอีกครั้งเมื่อต้องการใช้ห้องสมุด ทำโฟลเดอร์ในไลบรารีของ SKETCHBOOKPATH ของคุณโดยใช้ชื่อ RunningAverage และใส่ h และมี Optionally สร้างไดเรกทอรีตัวอย่างเพื่อวางแอปพลิเคชันตัวอย่าง 2011-01-30 เวอร์ชันเริ่มต้น 28.02.2011 destructor ที่หายไปคงที่ใน h file.2011 -02-28 ลบค่าเริ่มต้น constructor 2012.- - trimValue Yuval Naveh เพิ่ม trimValue ที่พบใน web.2012-11-21 refactored.2012/12/30 เพิ่ม fillValue refactored สำหรับการเผยแพร่ 2014-07-03 เพิ่มโค้ดการป้องกันหน่วยความจำ - ถ้าอาร์เรย์ภายในไม่สามารถกำหนดขนาดจะกลายเป็น 0 นี่คือการแก้ปัญหาที่อธิบายไว้ที่นี่ตรวจสอบอย่างกว้างขวางชั้นเรียนการใช้งาน h. RunningAverage href

No comments:

Post a Comment