أحاول حساب المتوسط المتحرك لإشارة. يتم تحديث قيمة الإشارة (مزدوجة) في أوقات عشوائية. أنا أبحث عن وسيلة فعالة لحساب متوسط الوقت المرجح على مدى نافذة الوقت، في الوقت الحقيقي. أنا يمكن أن تفعل ذلك بلدي، ولكن أكثر تحديا مما اعتقدت. معظم الموارد إيف وجدت عبر الإنترنت بحساب المتوسط المتحرك للإشارة الدورية، ولكن التحديثات الألغام في وقت عشوائي. لا أحد يعرف موارد جيدة لذلك خدعة هو ما يلي: يمكنك الحصول على التحديثات في أوقات عشوائية عن طريق تحديث الفراغ (وقت إنت، قيمة تعويم). ومع ذلك تحتاج أيضا إلى تتبع أيضا عندما يقع التحديث قبالة نافذة الوقت، لذلك قمت بتعيين إنذار الذي دعا في الوقت N الذي يزيل التحديث السابق من يجري النظر من أي وقت مضى مرة أخرى في الحساب. إذا كان هذا يحدث في الوقت الحقيقي يمكنك طلب نظام التشغيل لإجراء مكالمة إلى طريقة باطلة دروبوفولدستوديت (وقت إنت) ليتم استدعاؤها في الوقت N إذا كان هذا هو محاكاة، لا يمكنك الحصول على مساعدة من نظام التشغيل وتحتاج إلى تفعل ذلك يدويا. في محاكاة يمكنك استدعاء الأساليب مع الوقت الموردة كوسيطة (التي لا ترتبط مع الوقت الحقيقي). غير أن الافتراض المعقول هو أن النداءات مضمونة بحيث تكون الوسيطات الزمنية في ازدياد. في هذه الحالة تحتاج إلى الحفاظ على قائمة فرز من القيم الوقت التنبيه، ولكل تحديث وقراءة المكالمة التي تحقق إذا كان الوسيطة الوقت أكبر من رأس قائمة التنبيه. في حين أنه هو أكبر يمكنك القيام التنبيه المتعلقة معالجة (إسقاط قبالة أقدم تحديث)، وإزالة الرأس والتحقق مرة أخرى حتى يتم معالجة جميع أجهزة الإنذار قبل وقت معين. ثم قم بإجراء مكالمة التحديث. لقد افترضت حتى الآن أنه من الواضح ما سوف تفعله لحساب الفعلي، ولكنني سوف وضع فقط في حالة. افترض أن لديك طريقة تعويم القراءة (وقت إنت) التي تستخدم لقراءة القيم. والهدف من ذلك هو جعل هذه المكالمة فعالة قدر الإمكان. لذلك لا تحسب المتوسط المتحرك في كل مرة تسمى طريقة القراءة. بدلا من ذلك كنت تحسب القيمة كما من التحديث الأخير أو التنبيه الأخير، قرص هذه القيمة من قبل بضع عمليات نقطة العائمة لحساب مرور الوقت منذ التحديث الأخير. (ط عدد ثابت من العمليات باستثناء ربما معالجة قائمة من أجهزة الإنذار مكدسة). نأمل أن يكون هذا واضحا - يجب أن يكون هذا خوارزمية بسيطة جدا وفعالة للغاية. مزيد من التحسين. واحدة من المشاكل المتبقية هو إذا كان عدد كبير من التحديثات يحدث في إطار الوقت، ثم هناك فترة طويلة التي لا توجد يقرأ ولا تحديثات، ومن ثم قراءة أو التحديث يأتي على طول. في هذه الحالة، سوف تكون الخوارزمية أعلاه غير فعالة في تحديث القيمة بشكل متزايد لكل من التحديثات التي تتساقط. هذا ليس ضروريا لأننا نهتم فقط التحديث الأخير وراء نافذة الوقت حتى إذا كان هناك وسيلة لسحب بكفاءة من جميع التحديثات القديمة، فإنه من شأنه أن يساعد. للقيام بذلك، يمكننا تعديل الخوارزمية لإجراء بحث ثنائي من التحديثات للعثور على التحديث الأخير قبل نافذة الوقت. إذا كان هناك عدد قليل نسبيا من التحديثات التي تحتاج إلى إسقاط ثم يمكن للمرء أن تحديث بشكل متزايد قيمة لكل تحديث انخفض. ولكن إذا كان هناك العديد من التحديثات التي تحتاج إلى إسقاط ثم واحد يمكن إعادة حساب القيمة من الصفر بعد إسقاط التحديثات القديمة. التذييل على الحوسبة الإضافية: يجب أن أوضح ما أعنيه بالحساب الإضافي أعلاه في الجملة قرص هذه القيمة من خلال بضع عمليات نقطة العائمة لحساب مرور الوقت منذ التحديث الأخير. الحساب الأولي غير التدريجي: ثم يتكرر على ديلاتيفوبديتس من أجل زيادة الوقت: موفينغفيراج (سوم لاستوبديت تيمسينسلاستوبديت) ويندلنغث. الآن إذا كان التحديث واحد بالضبط يقع قبالة النافذة ولكن لا تصل التحديثات الجديدة، وضبط المبلغ على النحو التالي: (لاحظ أنه هو بريفيوديت الذي له الطابع الزمني تعديلها لبدء آخر بداية النافذة). وإذا كان بالضبط تحديث واحد يدخل النافذة ولكن لا توجد تحديثات جديدة تسقط، وضبط المبلغ على النحو التالي: كما ينبغي أن يكون واضحا، وهذا هو رسم تقريبي ولكن نأمل أنه يبين كيف يمكنك الحفاظ على متوسط مثل أنه هو O (1) العمليات في التحديث على أساس الاستهلاك. ولكن لاحظ مزيدا من التحسين في الفقرة السابقة. نلاحظ أيضا قضايا الاستقرار المشار إليها في إجابة قديمة، وهو ما يعني أن أخطاء نقطة العائمة قد تتراكم على عدد كبير من هذه العمليات الإضافية بحيث يكون هناك اختلاف عن نتيجة الحساب الكامل الذي له أهمية كبيرة للتطبيق. إذا كان التقريب على ما يرام و ثيريس الحد الأدنى من الوقت بين العينات، يمكنك محاولة فائقة أخذ العينات. يكون مصفوفة تمثل فترات زمنية متباعدة بالتساوي تكون أقصر من الحد الأدنى، وفي كل مرة يتم تخزين أحدث عينة تم استلامها. وكلما اقصر الفاصل الزمني كلما اقترب المتوسط من القيمة الحقيقية. وينبغي ألا تتجاوز الفترة نصف الحد الأدنى أو أن تكون هناك فرصة لفقدان العينة. أجابيد ديك 15 11 في 18:12 أجاب ديك 15 11 في 22:38 ثانكس فور ذي أنسور. أحد التحسينات التي ستكون هناك حاجة إليها في الواقع كوتاكاشيكوت قيمة المتوسط الكلي لذلك نحن don39t حلقة في كل وقت. أيضا، قد يكون نقطة ثانوية، ولكن لن يكون أكثر كفاءة لاستخدام ديك أو قائمة لتخزين القيمة، لأننا نفترض أن التحديث سيأتي في الترتيب الصحيح. سيكون الإدراج أسرع من الخريطة. نداش آرثر ديك 16 11 في 08:55 نعم، هل يمكن أن ذاكرة التخزين المؤقت قيمة المبلغ. اطرح قيم العينات التي تمحوها، أضف قيم العينات التي تقوم بإدراجها. أيضا، نعم، ديكلتبايرلتسامبل، داتغتغ قد تكون أكثر كفاءة. لقد اخترت خريطة للقراءة، وسهولة استدعاء خريطة :: وبربوند. كما هو الحال دائما، كتابة التعليمات البرمجية الصحيحة أولا، ثم الملف الشخصي وقياس التغييرات الإضافية. نداش روب ديك 16 11 في 15:00 ملاحظة: يبدو أن هذا ليس الطريق إلى الاقتراب من هذا. تركها هنا للإشارة إلى ما هو الخطأ في هذا النهج. تحقق من التعليقات. تحديث - استنادا إلى تعليق أوليس. غير متأكد من عدم الاستقرار الذي يتحدث عنه رغم ذلك. استخدام خريطة فرز مرات وصول ضد القيم. عند وصول قيمة إضافة وقت وصول للخريطة فرزها جنبا إلى جنب مع قيمته وتحديث المتوسط المتحرك. تحذير هذا هو الزائفة رمز: هناك. ليس تماما فليشد خارج ولكن تحصل على هذه الفكرة. أشياء يجب أن نلاحظها. كما قلت أعلاه هو رمز الزائفة. ستحتاج إلى اختيار خريطة مناسبة. لا إزالة أزواج كما كنت إيتيرات من خلال كما سوف تبطل التكرار وسيكون لديك للبدء من جديد. انظر تعليق أوليس أدناه أيضا. أجاب ديك 15 11 في 12:22 هذا don39t العمل: فإنه doesn39t تأخذ بعين الاعتبار ما هي نسبة من نافذة طول كل قيمة موجودة ل. أيضا، هذا النهج من إضافة ومن ثم طرح مستقرة فقط لأنواع عدد صحيح، لا يطفو. نداش أوليفر تشارلزورث 15 ديسمبر 11 في 12:29 أوليكارليزورث - آسف فاتني بعض النقاط الرئيسية في الوصف (مزدوجة والوزن المرجح). وسوف أقوم بتحديث. شكر. نداش دينيس ديك 15 11 في 12:33 الوقت الترجيح مشكلة أخرى بعد. ولكن هذا 39 ليس ما I39m الحديث عنه. كنت أشير إلى حقيقة أنه عندما تدخل قيمة جديدة لأول مرة نافذة الوقت، ومساهمتها في المتوسط هو الحد الأدنى. وتستمر مساهمته في الزيادة حتى تدخل قيمة جديدة. ناداش أوليفر تشارلزورث 15 ديسمبر 11 في 12: 35I أساسا مجموعة من القيم مثل هذا: مجموعة أعلاه هو أبرسيمبليفيد، إم جمع 1 قيمة في ميلي ثانية واحدة في بلدي رمز حقيقي وأنا بحاجة إلى معالجة الإخراج على خوارزمية كتبت للعثور على أقرب قمة قبل نقطة في الوقت المناسب. منطقي يفشل لأن في بلدي المثال أعلاه، 0.36 هو الذروة الحقيقية، ولكن خوارزمي بلدي سوف ننظر إلى الوراء ونرى العدد الأخير جدا 0.25 كما الذروة، كما ثيريز انخفاض إلى 0.24 قبل ذلك. والهدف من ذلك هو اتخاذ هذه القيم وتطبيق خوارزمية لهم والتي سوف تلطف بها قليلا حتى أن لدي المزيد من القيم الخطية. (أي: إد مثل نتائجي لتكون متعرج، وليس جاجدي) وقد قيل إيف لتطبيق مرشح المتوسط المتحرك الأسي لقيم بلدي. كيف يمكنني أن أفعل هذا من الصعب حقا بالنسبة لي لقراءة المعادلات الرياضية، وأنا أتعامل بشكل أفضل بكثير مع التعليمات البرمجية. كيف أقوم بمعالجة القيم في صفيفي، تطبيق حساب متوسط متحرك أسي حتى حتى يطلب منهم فب 8 12 في 20:27 لحساب متوسط متحرك أسي. تحتاج إلى الحفاظ على بعض الدول في جميع أنحاء وتحتاج إلى ضبط المعلمة. وهذا يتطلب فئة صغيرة (على افتراض أن تستخدم جافا 5 أو في وقت لاحق): إنستانتيات مع المعلمة تسوس تريد (قد يستغرق ضبط يجب أن يكون بين 0 و 1) ثم استخدم المتوسط () لتصفية. عند قراءة صفحة على بعض تكرار الرياضيات، كل ما تحتاج حقا أن نعرف عند تحويله إلى التعليمات البرمجية هو أن الرياضيين يحبون كتابة الفهارس في المصفوفات وتسلسل مع سوبسكريبتس. (ثيف عدد قليل من التدوينات الأخرى أيضا، والتي لا تساعد.) ومع ذلك، فإن إما بسيط جدا كما تحتاج فقط إلى تذكر قيمة قديمة واحدة لا صفائف الدولة المعقدة المطلوبة. أجابيد فبراير 8 12 في 20:42 تكوشيران: بريتي موش. إيسن 39t لطيفة عندما يمكن أن تكون الأمور بسيطة (إذا بدأت مع تسلسل جديد، والحصول على متوسط جديد). لاحظ أن المصطلحات القليلة الأولى في تسلسل المتوسط سوف تقفز قليلا بسبب الآثار الحدودية، ولكن تحصل على تلك مع المتوسطات المتحركة الأخرى جدا. ومع ذلك، فإن ميزة جيدة هي أنه يمكنك التفاف المنطق المتوسط المتحرك في أفيراجر والتجربة دون إزعاج بقية البرنامج الخاص بك كثيرا. نداش دونال فيلوس فبراير 9 12 في 0:06 أنا تواجه صعوبة في فهم أسئلتك، ولكن سأحاول الإجابة على أي حال. 1) إذا وجدت خوارزمية 0.25 بدلا من 0.36، فمن الخطأ. فمن الخطأ لأنه يفترض زيادة رتيبة أو نقصان (وهذا هو دائما الذهاب أو دائما الذهاب إلى أسفل). إلا إذا كنت متوسط جميع البيانات الخاصة بك، نقاط البيانات الخاصة بك --- كما تقدم لهم --- هي غير الخطية. إذا كنت تريد حقا أن تجد أقصى قيمة بين نقطتين في الوقت المناسب، ثم شريحة صفيف الخاص بك من تمين إلى تماكس والعثور على الحد الأقصى من أن سوباراي. 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 (الرابع والثالث)، وهلم جرا. كنت يمكن أن تجعل من فترة ثلاثة أو أربعة، أو ن. لاحظ كيف البيانات هو أكثر سلاسة بكثير. وهناك طريقة جيدة لرؤية المتوسطات المتحركة في العمل هو الذهاب إلى غوغل المالية، حدد الأسهم (محاولة تسلا موتورز متقلبة جدا (تسلا)) وانقر على التقنية في الجزء السفلي من الرسم البياني. حدد المتوسط المتحرك مع فترة معينة، والمتوسط المتحرك الأسي لمقارنة الاختلافات بينهما. المتوسط المتحرك الأسي هو مجرد وضع آخر من هذا، ولكن الأوزان البيانات القديمة أقل من البيانات الجديدة وهذا هو وسيلة لتحيز تمهيد نحو الظهر. يرجى قراءة إدخال ويكيبيديا. لذلك، هذا هو أكثر تعليق من الجواب، ولكن مربع التعليق قليلا كان مجرد صغيرة. حظا طيبا وفقك الله. إذا كنت تواجه مشكلة مع الرياضيات، هل يمكن أن تذهب مع متوسط متحرك بسيط بدلا من الأسي. لذا فإن الإخراج الذي تحصل عليه سيكون مصطلحات x الأخيرة مقسوما على x. كودوكود غير مختبرة: لاحظ أنك سوف تحتاج إلى التعامل مع بداية ونهاية أجزاء من البيانات بما أنه من الواضح أنك غير قادر على متوسط آخر 5 شروط عندما كنت على نقطة البيانات 2 الخاص بك. أيضا، هناك طرق أكثر كفاءة لحساب هذا المتوسط المتحرك (مجموع المبلغ - الأقدم الأحدث)، ولكن هذا هو للحصول على مفهوم ما يحدث عبر. الرد أفاتار فب 8 12 في 12: 41 هل من الممكن لتنفيذ المتوسط المتحرك في C دون الحاجة إلى نافذة من العينات وجدت أنه يمكنني تحسين قليلا، عن طريق اختيار حجم الإطار الذي هو قوة اثنين للسماح بتغيير البتات بدلا من تقسيم، ولكن لا تحتاج إلى المخزن المؤقت سيكون لطيفا. هل هناك طريقة للتعبير عن نتيجة متوسط متحرك جديد فقط كدالة للنتيجة القديمة والعينة الجديدة حدد مثالا متحركا على سبيل المثال، عبر نافذة مكونة من 4 عينات لتكون: إضافة عينة جديدة ه: يمكن تنفيذ المتوسط المتحرك بشكل متكرر ، ولكن لحساب دقيق للمتوسط المتحرك عليك أن تتذكر أقدم عينة المدخلات في المجموع (أي في المثال الخاص بك). وبالنسبة للمتوسط المتحرك N الذي تحسبه: حيث ين هي إشارة الخرج و شن هي إشارة الدخل. مكافئ. (1) يمكن أن تكون مكتوبة بشكل متكرر كما كنت دائما بحاجة إلى تذكر العينة شن-N من أجل حساب (2). وكما أشار كونراد تيرنر، يمكنك استخدام نافذة أسي طويلة (بلا حدود) بدلا من ذلك، والتي تسمح لك بحساب الإخراج فقط من المخرجات السابقة والإدخال الحالي: ولكن هذا ليس متوسط متحرك (غير مرجح) قياسي ولكن بشكل أضعافا مضاعفة (حيث على الأقل من الناحية النظرية) لا تنسى أبدا أي شيء (الأوزان فقط تحصل على أصغر وأصغر للعينات بعيدة في الماضي). أنا نفذت المتوسط المتحرك دون ذاكرة البند الفردية لبرنامج تتبع غس كتبته. أبدأ مع 1 عينة وتقسيم بنسبة 1 للحصول على متوسط الحالي. ثم قم بإضافة عينة أنوث وتقسيمها 2 إلى المتوسط الحالي. يستمر هذا حتى يصل إلى طول المتوسط. في كل مرة بعد ذلك، أضيف في العينة الجديدة، واحصل على المتوسط وأزل هذا المتوسط من المجموع. أنا لست رياضياتيا ولكن هذا يبدو وكأنه وسيلة جيدة للقيام بذلك. أنا أحسب أنه من شأنه أن يحول المعدة من رجل الرياضيات الحقيقي ولكن، اتضح أنها واحدة من الطرق المقبولة للقيام بذلك. ويعمل بشكل جيد. فقط تذكر أن ارتفاع طول الخاص بك أبطأ هو اتباع ما كنت تريد أن تتبع. وهذا قد لا يهم معظم الوقت ولكن عندما تتبع الأقمار الصناعية، إذا كنت بطيئا، يمكن أن يكون درب بعيدا عن الوضع الفعلي، وسوف تبدو سيئة. هل يمكن أن يكون هناك فجوة بين جلس والنقاط زائدة. اخترت بطول 15 تحديث 6 مرات في الدقيقة الواحدة للحصول على تجانس كافية ولا تحصل بعيدا جدا عن الوضع الفعلي جلس مع نقاط درب ممهدة. أجاب 16 نوفمبر 16 في 23:03 تهيئة المجموع 0، العد 0 (في كل مرة رؤية قيمة جديدة ثم إدخال واحد (سكانف)، واحد إضافة توتالنوفالو، زيادة واحدة (عدد)، واحد معدل الفجوة (توتالكونت) هذا سيكون المتوسط المتحرك أكثر من جميع المدخلات لحساب المتوسط فوق المدخلات الأربعة الأخيرة فقط، يتطلب 4 مدخلات، ربما نسخ كل مدخلات إلى مدخلات قديمة، ثم حساب المتوسط المتحرك الجديد، حيث أن مجموع المدخلات 4، مقسوما على 4 (التحول الصحيح 2 سيكون جيد إذا كانت جميع المدخلات إيجابية لجعل متوسط الحساب أجاب فب 3 15 في 4:06 وهذا في الواقع حساب المتوسط الكلي وليس المتوسط المتحرك. كما يحصل العد أكبر تأثير أي عينة إدخال جديدة تصبح صغيرة تتلاشى نداش هيلمر فبراير 3 15 أت 13:53 يور أنسور 2017 ستاك إكسهانج، إنك
Comments
Post a Comment