Wednesday 7 February 2018

عودي الحركة من المتوسط خوارزمية


إم لا تزال تعمل على التمسك الشيء F - في محاولة للعمل على التفكير في F بدلا من مجرد ترجمة من لغات أخرى وأنا أعلم. إيف مؤخرا تم التفكير في الحالات التي لم يكن لديك خريطة 1: 1 بين قبل وبعد. الحالات التي تقع فيها List. map لأسفل. أحد الأمثلة على ذلك هو المتوسطات المتحركة، حيث عادة سيكون لديك نتائج لين-n1 لقائمة طول لين عند المتوسط ​​فوق n البنود. هل هناك طريقة جيدة للقيام بذلك (باستخدام طابور مقروص من جومو فيشر) (ربما سيكون أفضل طريقة لتنفيذ موفينغافيراجكيو من خلال وراثة من فيفو) طلب 17 نوفمبر 08 في 11:12 كان علي أن أعلن كما السماح موفينغافيراج n (s. سيكلتفلوتغت) من أجل وضع هذا في وحدة المرافق، بعيدا عن موقع المكالمة، لاسترضاء نظام نوع. بقدر ما أستطيع أن أقول، وهذا يعمل فقط مع عوامات، وذلك بسبب وجود قيود على Array. average. مسن يدعي أنني يمكن أن تحل محل ذلك مع أري. أفي لاستخدام هذا على تسلسل إنت، ولكن هذا يعطي خطأ مختلفا. بريان، يمكنك إعادة صياغة هذه الإجابة للعمل في سياقات عامة، بحيث أنها ستعمل مع تسلسل من أي-الحساب من نوع، دون نوع الاستدلال نداش وارن يونغ يونيو 27 13 في 19:04 أود أن أشير إلى أن حاجتي ل وهذا المتوسط ​​المتحرك الدالة هو الحصول على نافذة قصيرة (30ish) على سلسلة من الأعداد الصحيحة التي كلها تقريبا في الملايين، لذلك أنا don39t تحتاج نقطة عائمة. حتى رقم واحد إلى يمين النقطة العشرية ليس من الاستخدام العملي في طلبي. تحويل الأعداد الصحيحة إلى فب والنتيجة مرة أخرى إلى إنت فقط لاسترضاء نداء مكتبة Fnn39t القياسية. نداش وارن يونغ يونيو 27 13 في 19:30 إذا كنت تهتم بالأداء، يمكنك حساب متوسط ​​متحرك بكفاءة باستخدام شيء من هذا القبيل (على افتراض حساب متوسط ​​متحرك على مدار 3 أيام) الجزء الصعب حول هذا هو عقد على مجموع تشغيل السابق وعدد N - النافذة. جئت مع التعليمات البرمجية التالية: هذا الإصدار ليس لطيفا كما تبحث كود هاسكل، ولكن يجب تجنب مشاكل الأداء المرتبطة ريكومبوتينغ نافذتك على كل المدى. فإنه يحتفظ مجموع تشغيل ويحمل الأرقام المستخدمة سابقا في قائمة الانتظار، لذلك ينبغي أن يكون سريع جدا. فقط للمتعة، كتبت معيارا بسيطا: إذا كنت تهتم بالأداء ومثل رمز أنيقة ثم حاول استخدام فسونيت يمكننا اختبار ذلك خدعة من الخوارزمية هي أول مبلغ أول أرقام ن ثم الحفاظ على مجموع تشغيل بإضافة رأس من النافذة وطرح ذيل النافذة. يتم تحقيق النافذة المنزلقة عن طريق القيام الرمز البريدي الذاتي على تسلسل ولكن مع الوسيطة الثانية إلى الرمز البريدي المتقدمة من حجم النافذة. في نهاية خط الأنابيب نحن فقط تقسيم مجموع تشغيل من حجم النافذة. ملاحظة مسح هو تماما مثل أضعاف ولكن يسفر كل نسخة من الدولة في تسلسل. حل أكثر أناقة على الرغم من الممكن مع ضرب الأداء هو جعل الملاحظة أنه إذا كنا صفر وسادة تسلسل نحن لسنا بحاجة لحساب المبلغ الأولي. يمكن أن يكون هناك ضرب الأداء بسبب الثاني غير المباشرة المتعلقة التفاف من تسلسلين ولكن ربما ليس كبيرا اعتمادا على حجم نافذة أجاب 31 أغسطس 12 في 08: 06 العيب الرئيسي في البرنامج الخاص بك هو أن الحساب العودية غير صحيح. لحساب المتوسط، يجب أن تحصل على مجموع القيمة الحالية والقيم المتبقية. ثم قسمة هذا المجموع بعدد القيم. عدد القيم هو نوم. القيمة الحالية هي ما ترجع كالكولاتينومبر (). مجموع القيم المتبقية هو نوم-1 مضروبا في متوسط ​​القيم المتبقية. ويحسب متوسط ​​القيم المتبقية عن طريق إجراء نداء متكرر إلى المتوسط ​​(). وبالتالي، فإننا نكتب ما يلي: برنامج كامل باستخدام تلك الدالة قد تبدو على النحو التالي: لاحظ أن هذا ليس طريقة جيدة جدا لحساب المتوسط ​​لأنك تفقد الدقة في كل مرة تقسم المجموع الحالي عن طريق الأسطوانات. عند ضرب هذا المتوسط ​​مرة أخرى مع عودة المكالمة المتكررة، لا يتم استعادة الأرقام الهامة التي فقدت في التقسيم. كنت تدمير المعلومات عن طريق تقسيم ثم ضرب المبلغ. لمزيد من الدقة، كنت ترغب في تتبع المجموع كما تذهب من خلال العناصر، ثم تقسيم في نهاية المطاف. وثمة نقطة أخرى يجب أخذها في الاعتبار هي ما يقصد به المتوسط ​​المتحرك. ما قمنا به أعلاه ليس متوسطا متحركا ولكن متوسطا ثابتا. وهو متوسط ​​نافذة ثابتة من العناصر. إذا قمت بنقل النافذة من خلال موقف واحد، عليك أن تبدأ في جميع أنحاء وحساب مجموع مرة أخرى. الطريقة الصحيحة لتنفيذ نافذة متحركة هي تتبع جميع العناصر في النافذة. عند تحويل النافذة موضع واحد إلى اليمين، تقوم بإزالة عنصر أقصى اليسار من الإطار وطرح قيمته من المجموع ثم قم بإضافة عنصر أقصى اليمين الجديد إلى الإطار وإضافة قيمته إلى المجموع. هذا ما يجعله مبلغا متحركا. تقسيم المبلغ المتحرك حسب عدد العناصر يمنحك المتوسط ​​المتحرك. الطريقة الطبيعية لتنفيذ نافذة تتحرك هي مع طابور لأنه يمكنك إضافة عناصر جديدة إلى الرأس والبوب ​​العناصر القديمة من الذيل. أجاب 22 نوفمبر 14 في 17: 44 ذي سسينتيست أند إنجينيرس غايد تو ديجيتال سيغنال بروسسينغ بي ستيفين W. سميث، Ph. D. وهناك ميزة هائلة لمرشح المتوسط ​​المتحرك هو أنه يمكن تنفيذه بخوارزمية سريعة جدا. لفهم هذه الخوارزمية، تخيل تمرير إشارة الدخل، x، من خلال سبع نقاط مرشح المتوسط ​​المتحرك لتشكيل إشارة الإخراج، y. ننظر الآن في كيفية حساب نقطتي خرج متجاورتين، y 50 و y 51: هذه هي نفس نقاط الحساب تقريبا x 48 إلى x 53 يجب أن تضاف إلى y 50، ومرة ​​أخرى y y 51. إذا تم حساب y 50 بالفعل ، الطريقة الأكثر فعالية لحساب ذ 51 هو: مرة واحدة تم العثور على 51 باستخدام y 50، ثم y 52 يمكن حسابها من عينة ذ 51، وهلم جرا. بعد حساب النقطة الأولى في y، كل من النقاط الأخرى يمكن العثور عليها مع إضافة واحدة فقط والطرح لكل نقطة. ويمكن التعبير عن ذلك في المعادلة: لاحظ أن هذه المعادلة تستخدم مصدرين للبيانات لحساب كل نقطة في المخرجات: نقاط من المدخلات والنقاط المحسوبة سابقا من المخرجات. وهذا ما يسمى المعادلة المتكررة، وهذا يعني أن نتيجة حساب واحد يستخدم في الحسابات المستقبلية. (المصطلح العودية له أيضا معان أخرى، وخاصة في علوم الكمبيوتر). يناقش الفصل 19 مجموعة متنوعة من الفلاتر العودية بمزيد من التفصيل. كن على علم بأن المرشح المتكرر للمتوسط ​​المتحرك يختلف كثيرا عن المرشحات العودية النموذجية. على وجه الخصوص، فإن معظم المرشحات التكرارية لديها استجابة الاندفاع طويلة بلا حدود (إير)، تتألف من الجيوب الأنفية والأسي. والاستجابة النبضية للمتوسط ​​المتحرك هي نبضة مستطيلة (الاستجابة النبضية المحدودة، أو منطقة معلومات الطيران). هذه الخوارزمية أسرع من المرشحات الرقمية الأخرى لعدة أسباب. أولا، هناك حسابين فقط لكل نقطة، بغض النظر عن طول نواة الفلتر. ثانيا، الجمع والطرح هي العمليات الرياضيات الوحيدة المطلوبة، في حين أن معظم المرشحات الرقمية تتطلب الضرب تستغرق وقتا طويلا. ثالثا، مخطط الفهرسة بسيط جدا. كل مؤشر في إق. يتم العثور على 15-3 عن طريق إضافة أو طرح الثوابت الصحيحة التي يمكن حسابها قبل بدء التصفية (أي p و q). رابعا، يمكن تنفيذ خوارزمية كاملة مع تمثيل صحيح. اعتمادا على الأجهزة المستخدمة، يمكن أن تكون الأعداد الصحيحة أكثر من أمر من حجم أسرع من نقطة العائمة. والمثير للدهشة أن التمثيل الصحيح يعمل بشكل أفضل من النقطة العائمة مع هذه الخوارزمية، بالإضافة إلى كونها أسرع. خطأ الجولة من الحساب العائم نقطة يمكن أن تنتج نتائج غير متوقعة إذا لم تكن حذرا. على سبيل المثال، تخيل إشارة عينة 10000 يتم تصفيتها باستخدام هذه الطريقة. وتحتوي العينة الأخيرة في الإشارة التي تمت تصفيتها على الخطأ المتراكم البالغ 000 10 إضافة و 000 10 طرح. يظهر هذا في إشارة الإخراج كإزاحة الانجراف. إنتيجرز لا تملك هذه المشكلة لأنه لا يوجد خطأ جولة في الحساب. إذا كنت يجب استخدام نقطة عائمة مع هذه الخوارزمية، البرنامج في الجدول 15-2 يوضح كيفية استخدام تراكم الدقة المزدوجة للقضاء على هذا الانجراف.

No comments:

Post a Comment