أحاول حساب المتوسط المتحرك في صفيف نامبي كبير يحتوي على نانز. حاليا أنا باستخدام: عند حساب مع مجموعة ملثمين: النتيجة التي أبحث عنها (أدناه) يجب أن يكون مثاليا نانز فقط في المكان الذي المصفوفة الأصلية، س، كان نانس وينبغي أن يتم المتوسط على عدد من غير - عناصر نان في التجميع (أنا بحاجة إلى بعض الطريق لتغيير حجم ن في وظيفة.) أنا يمكن أن حلقة عبر مجموعة كاملة وتحقق الفهرس حسب الفهرس ولكن الصفيف أنا تستخدم كبيرة جدا والتي من شأنها أن تأخذ وقتا طويلا. هل هناك طريقة نامبيثونيك للقيام بذلك طلب أكت 7 16 16 في 13: 56 من أجل تحقيق أداء غير متكافئ من O (n) (كما حل مرمزة لا)، يمكنك استخدام الدالة التجميع كما هو الحال في القيمة المتراكمة (نفذت كنوع مجهول) يحتوي على حقلين: النتيجة تحتوي على قائمة النتائج بناء حتى الآن. يحتوي العمل على آخر عناصر الفترة -1. تقوم الدالة التجميعية بإضافة القيمة الحالية إلى قائمة العمل، وتبني المتوسط الحالي وتضيفها إلى النتيجة، ثم تقوم بإزالة القيمة الأولى (أي الأقدم) من قائمة العمل. يتم بناء البذور (أي قيمة البداية للتراكم) من خلال وضع الفترة الأولى من العناصر 1 في العمل وتهيئة النتيجة إلى قائمة فارغة. وبالتالي يبدأ التجميع ثا مع فترة العنصر (عن طريق تخطي (الفترة -1) العناصر في البداية) في البرمجة الوظيفية هذا هو نمط استخدام نموذجي للدالة أغريتات (أو أضعاف)، راجع للشغل. الحل ليس وظيفيا نظيفة في أن نفس الكائنات القائمة (العمل والنتيجة) يتم استخدامها في كل خطوة. إم غير متأكد إذا كان هذا قد يسبب مشاكل إذا حاول بعض المجمعين في المستقبل لموازنة الدالة التجميع تلقائيا (من ناحية أخرى أنا أيضا غير متأكد، إذا كان ذلك ممكنا بعد كل شيء). الحل الوظيفي البحت يجب إنشاء قوائم جديدة في كل خطوة. لاحظ أيضا أن C تفتقر إلى تعبيرات قائمة قوية. في بعض افتراضية بيثون - C - مختلطة بسيودوكود يمكن للمرء أن يكتب وظيفة التجميع مثل الذي سيكون قليلا أكثر أناقة في رأيي المتواضع :) لاحظ وقت تشغيل O (N2). منذ تحتاج إلى تخطي المزيد والمزيد من العناصر في كل خطوة (و أفيك تخطي (ط) لديه لاستدعاء IEnumerator. MoveNext ط مرات). انظر ردي لحل في O (n) الوقت. (لقد لاحظت فقط تعليق أوبس أدناه أن هيش ربما الحصول على القيم من دب سكل في المستقبل. في هذه الحالة أود أن كل تثبيط بقوة من هذا الحل) نداش مارتنستيتنر مار 3 11 في 0:53 لأكبر طريقة ممكنة لحساب متوسط متحرك مع لينق، يجب أن لا تستخدم لينق بدلا من ذلك أقترح إنشاء فئة المساعد الذي يحسب المتوسط المتحرك بأكثر الطرق كفاءة ممكنة (باستخدام العازلة دائرية والسببية مرشح المتوسط المتحرك)، ثم طريقة التمديد لجعله في متناول إلى لينق. أولا، المتوسط المتحرك توفر هذه الفئة تنفيذ سريع جدا وخفيف الوزن لفلتر موفينغافيراج. أنه يخلق عازلة دائرية من طول N ويحسب إضافة واحدة وطرح واحد واحد ضرب لكل نقطة بيانات إلحاق، بدلا من N مضاعفة يضيف لكل نقطة لتنفيذ القوة الغاشمة. طرق التمديد أعلاه التفاف فئة موفينغافيراج والسماح الإدراج في تيار إينوميرابل. للقيام بذلك بطريقة أكثر وظيفية، تحتاج إلى طريقة المسح الضوئي الموجود في ر ولكن ليس في لينق. دعونا ننظر كيف سيبدو كما لو كان هناك طريقة المسح الضوئي و هيريس طريقة المسح الضوئي، اتخذت و تعديلها من هنا: هذا ينبغي أن يكون أداء أفضل من طريقة القوة الغاشمة لأننا نستخدم مجموع تشغيل لحساب سما. للبدء نحتاج لحساب الفترة الأولى التي نسميها البذور هنا. ثم، كل قيمة لاحقة نحسب من قيمة البذور المتراكمة. للقيام بذلك نحن بحاجة إلى القيمة القديمة (وهذا هو تي دلتا) وأحدث قيمة التي نحن الرمز البريدي معا سلسلة، مرة واحدة من البداية وتحولت مرة واحدة من قبل دلتا. في النهاية نفعل بعض تنظيف عن طريق إضافة الأصفار لطول الفترة الأولى وإضافة القيمة الأولية البذور. أجاب 19 يونيو 22 في 22: 58 واحد من التطبيقات الرئيسية لمجلس اردوينو هو قراءة وتسجيل بيانات الاستشعار. على سبيل المثال مراقبين واحد الضغط كل ثانية من اليوم. كما معدلات عينة عالية في كثير من الأحيان يولد طفرات في الرسوم البيانية واحد يريد أيضا أن يكون متوسط القياسات. وبما أن القياسات ليست ثابتة في الوقت المناسب ما نحتاج إليه في كثير من الأحيان هو متوسط التشغيل. هذا هو متوسط فترة معينة وقيمة جدا عند القيام بتحليل الاتجاهات. يمكن أن يكون أبسط شكل من المتوسطات قيد التشغيل من خلال التعليمات البرمجية التي تعتمد على متوسط التشغيل السابق: إذا كان أحد لا يريد استخدام الرياضيات نقطة العائمة - وهذا يأخذ الذاكرة ويقلل السرعة - يمكن للمرء أن تفعل الشيء نفسه تماما في المجال الصحيح. القسمة بمقدار 256 في نموذج الكود عبارة عن مفتاح يمين للتبديل 8، وهو أسرع من تقسيم الشرائح مثلا. 100. هذا ينطبق على كل قوة من 2 كمقسم واحد فقط يجب أن تأخذ الرعاية مجموع ويغثس يساوي قوة 2. وبالطبع ينبغي للمرء أن تأخذ الرعاية لا يوجد تجاوز وسيط (النظر في استخدام غير موقعة طويلة) إذا كنت في حاجة متوسط تشغيل أكثر دقة، في كونكريتو من القياسات العشرة الماضية، تحتاج إلى مصفوفة (أو قائمة مرتبط) للاحتفاظ بها. هذه الصفيف بمثابة العازلة دائرية ومع كل قياس جديد يتم إزالة أقدم واحد. يتم حساب متوسط التشغيل على أنه مجموع كل العناصر مقسوما على عدد العناصر في المصفوفة. سيكون رمز المتوسط التشغيلي شيئا من هذا القبيل: عيب هذا الرمز هو أن المصفوفة لعقد جميع القيم يمكن أن تصبح كبيرة جدا. إذا كان لديك قياس واحد في الثانية وتريد متوسط الجري في الدقيقة تحتاج صفيف من 60 متوسط في الساعة سوف تحتاج إلى صفيف من 3600. وهذا لا يمكن أن يتم بهذه الطريقة على اردوينو كما أن لديها 2K من ذاكرة الوصول العشوائي فقط. ومع ذلك من خلال بناء متوسط 2 المرحلة يمكن أن يقترب بشكل جيد جدا (إخلاء المسؤولية: ليس لجميع القياسات). في بسيدو رمز: كما هو مطلوب مجموعة جديدة ثابتة الداخلية لكل وظيفة رونينغافيراج، هذه الصراخ ليتم تنفيذها كطبقة. رونينغ متوسط مكتبة مكتبة رونينغافيغ يجعل فئة من الدالة أعلاه بحيث يمكن استخدامها عدة مرات في رسم تخطيطي. ويؤدي ذلك إلى إزالة وظيفة الإضافة () والدالة أفغ () لتصبح أكثر مرونة. يمكن للمرء أن يدعو متوسط مرات متعددة دون إضافة شيء. يرجى ملاحظة أن كل حالة من الصف يضيف صفيف الخاصة بها لإجراء القياسات، وأن هذا يضيف ما يصل إلى استخدام الذاكرة. يتم الاحتفاظ واجهة الطبقة صغيرة قدر الإمكان. ملاحظة: مع الإصدار 0.2 يتم إجراء جميع الأساليب أكثر وصفية. يظهر رسم صغير كيف يمكن استخدامها. ويستخدم مولد عشوائي لمحاكاة جهاز استشعار. في الإعداد () يتم مسح ميرا حتى نتمكن من البدء في إضافة بيانات جديدة. في حلقة () أولا يتم إنشاء رقم عشوائي وتحويلها إلى تعويم ليتم إضافتها إلى ميرا. ثم تتم طباعة تشغيل الجري إلى المنفذ التسلسلي. يمكن للمرء أيضا عرض على بعض لد أو إرسال عبر إيثرنت الخ عندما يتم إضافة 300 البنود يتم مسح ميرا للبدء من جديد. لاستخدام المكتبة، وجعل مجلد في سكيتبوكباثاريباري مع اسم رونينغافيراج ووضع. h و. كب هناك. يمكنك اختياريا إنشاء دليل فرعي لوضع نموذج التطبيق. 2011-01-30: النسخة الأولية 2011-02-28: الثابتة ديستروكتور مفقود في ملف. h 2011-02-28: إزالة منشئ الافتراضي 2012--. تريففالو () يوفال نافيه أضاف تريمفالو (وجدت على شبكة الإنترنت) 2012-11-21: ريفاكتوريد 2012-12-30: وأضاف فيفالو () ريفاكتوريد للنشر 2014-07-03: وأضاف رمز حماية الذاكرة - إذا لم يتم تخصيص مجموعة الداخلية حجم يصبح 0. هذا هو حل المشكلة الموصوفة هنا - forum. arduino. ccindex. phptopic50473.msg1790086msg1790086 - اختبار على نطاق واسع. فئة القالب رونينغ أفيراج. h رونينغافيراج. cpp
No comments:
Post a Comment