C - لغة الحركة من المتوسط


أنا أحاول أن أفعل مرشح المتوسط ​​المتحرك في لغة C، إيف تكييف برنامج ماتلاب الذي يعمل بشكل صحيح، وإدخال مرشح بلدي هو. pcm أرشيف (إشارة الصوت الاجتياح)، والمشكلة بالنسبة لي هو أرشيف الإخراج من تتحرك متوسط ​​في لغة C، الإخراج على ما يرام، إشارة فقط تنخفض على طول الوقت (لا فيلتر). أدناه رمز C: الصورة أدناه هي إخراج برنامج ماتلاب إلى المتوسط ​​المتحرك مع طول 16: هذه الصورة هي الإخراج في لغة C مع المتوسط ​​المتحرك مع طول 16: شخص يعرف ما قد يكون أدناه رمز في ماتلاب، أن إيف تكييف: تحديث 1 (باستخدام الجواب أعلاه): بداية الإشارة لا تزال مع التداخل، ولكن من منتصف إلى نهاية الإشارة بشكل صحيح. هل من الممكن لتنفيذ المتوسط ​​المتحرك في 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 ستاك إكسهانج، إنسي ترغب في تطوير حساب متوسط ​​سعر السهم، ولكن تم تخطيط الكثير من الحسابات المعقدة في وقت لاحق. خطوتي الأولى لمعرفة كيفية حساب المتوسط ​​المتحرك بكفاءة. أحتاج إلى t س أعرف كيفية اتخاذ المدخلات والعودة الانتاج بكفاءة. تعتبر مدخلات التاريخ والسعر. الناتج المتحقق التاريخ والسعر والمتوسط ​​المتحرك. إذا كان لدي 500 سجل وأريد حساب المتوسط ​​المتحرك لمدة 5 أيام ما هي الطريقة إفينت بدلا من الذهاب ذهابا وإيابا في مجموعة من التاريخ والسعر مرة أخرى يرجى سوجيست ما هو أفضل وسيلة لتلقي المدخلات (أريليست، الجدول، صفيف الخ) والعودة الانتاج. ملاحظة: اليوم ما من 5 أيام سيكون متوسط ​​آخر 5 أيام بما في ذلك اليوم السعر. يوم أمس سوف يكون متوسط ​​5 أيام الماضية من أمس. أريد أن تبقى الأيام لتكون مرنة بدلا من 5 يمكن أن يكون 9، 14، 20 الخ الخميس، 10 أبريل 2008 3:21 م إذا كنت بحاجة إلى حساب بسيط دون جهدكم من يمكنك استخدام تا-ليب. ولكن إذا كنت تريد الحساب الخاص بك لتكون أكثر كفاءة من تا-ليب، ثم يمكنك إنشاء مؤشر التقنية الخاصة بك. تا-ليب هو عظيم، ولكن المشكلة هي أن هذه المكتبة لديها أساليب ثابتة فقط. وهذا يعني عندما تحتاج إلى حساب القيم صفيف سما على أساس 500 سعر الأشرطة، ثم سوف ترسل مجموعة كاملة من الحانات وسوف يعود صفيف قيم سما. ولكن إذا كنت تتلقى قيمة 501-ست الجديدة ثم يجب إرسال مرة أخرى مجموعة كاملة و تا-ليب مرة أخرى سوف حساب وعودة سما مجموعة من القيم. الآن تخيل أنك بحاجة إلى مثل هذا المؤشر على تغذية السعر الحقيقي، ولكل تغيير السعر تحتاج قيمة مؤشر جديد. إذا كان لديك مؤشر واحد ليست مشكلة كبيرة، ولكن إذا كان لديك مئات المؤشرات تعمل، يمكن أن يكون مشكلة الأداء. كنت في مثل هذه الحالة والبدء في تطوير مؤشرات الوقت الحقيقي التي هي فعالة والقيام بعمليات حسابية إضافية لشريط سعر جديد أو لشريط السعر تغير فقط. أونفورتوناتيلي لم أكن في حاجة إلى مؤشر سما لنظم التداول الخاصة بي، ولكن لدي مثل إما، وما، م، وغيرها. يتم نشر واحد من هذا المؤشر م على بلوق بلدي ويمكنك أن ترى من هناك ما هو الهيكل الأساسي لفئة مؤشر الوقت الحقيقي بلدي. آمل أن تحتاج إلى تغييرات صغيرة لتنفيذ مؤشر سما، لأنه هو واحد من أبسط واحد. المنطق بسيط. لحساب سما كل ما تحتاجه هو ن قيم السعر الأخير. لذلك سيكون مثيل الطبقة مجموعة من الأسعار، التي سوف تخزن الاحتفاظ فقط آخر عدد n من الأسعار كما سما هو محدد (في قضيتك 5). لذلك عندما يكون لديك شريط جديد، سوف إزالة أقدم واحد وإضافة واحدة جديدة وإنشاء حساب. الخميس، أبريل 10، 2008 4:04 بيإم جميع الردود هناك مكتبة تدعى تا-ليب التي تفعل كل ذلك بالنسبة لك، وأنها مفتوحة المصدر. لديها حوالي 50 مؤشرات أعتقد. ويف استخدامه في بيئة الإنتاج وأنها فعالة جدا و رياليبل. يمكنك استخدامه في C، جافا، C، وما إذا كنت بحاجة إلى حساب بسيط دون جهدكم مما يمكنك استخدام تا-ليب. ولكن إذا كنت تريد الحساب الخاص بك لتكون أكثر كفاءة من تا-ليب، ثم يمكنك إنشاء مؤشر التقنية الخاصة بك. تا-ليب هو عظيم، ولكن المشكلة هي أن هذه المكتبة لديها أساليب ثابتة فقط. وهذا يعني عندما تحتاج إلى حساب القيم صفيف سما على أساس 500 سعر الأشرطة، ثم سوف ترسل مجموعة كاملة من الحانات وسوف يعود صفيف قيم سما. ولكن إذا كنت تتلقى قيمة 501-ست الجديدة ثم يجب إرسال مرة أخرى مجموعة كاملة و تا-ليب مرة أخرى سوف حساب وعودة سما مجموعة من القيم. الآن تخيل أنك بحاجة إلى مثل هذا المؤشر على تغذية السعر الحقيقي، ولكل تغيير السعر تحتاج قيمة مؤشر جديد. إذا كان لديك مؤشر واحد ليست مشكلة كبيرة، ولكن إذا كان لديك مئات المؤشرات تعمل، يمكن أن يكون مشكلة الأداء. كنت في مثل هذه الحالة والبدء في تطوير مؤشرات الوقت الحقيقي التي هي فعالة والقيام بعمليات حسابية إضافية لشريط سعر جديد أو لشريط السعر تغير فقط. أونفورتوناتيلي لم أكن في حاجة إلى مؤشر سما لنظم التداول الخاصة بي، ولكن لدي مثل إما، وما، م، وغيرها. يتم نشر واحد من هذا المؤشر م على بلوق بلدي ويمكنك أن ترى من هناك ما هو الهيكل الأساسي لفئة مؤشر الوقت الحقيقي بلدي. آمل أن تحتاج إلى تغييرات صغيرة لتنفيذ مؤشر سما، لأنه هو واحد من أبسط واحد. المنطق بسيط. لحساب سما كل ما تحتاجه هو ن قيم السعر الأخير. لذلك سيكون مثيل الطبقة مجموعة من الأسعار، التي سوف تخزن الاحتفاظ فقط آخر عدد n من الأسعار كما سما هو محدد (في قضيتك 5). لذلك عندما يكون لديك شريط جديد، سوف إزالة أقدم واحد وإضافة واحدة جديدة وإنشاء حساب. الخميس، أبريل 10، 2008 4:04 بيإم أود حساب المتوسط ​​المتحرك في قاعدة البيانات عن طريق إجراء مخزن أو في مكعب. هل نظرت إلى خدمات التحليل، لديها القدرة على حساب المتوسطات المتحركة. الخميس، 10 أبريل / نيسان 2008 4:05 م نعم. تا-ليب هو جيد ولكن قد لا تكون مناسبة بالنسبة لي. عندما أضيف قيمة جديدة أو قيمة محدثة لتاريخ السجلات سأفعل الحساب في وظيفة منفصلة فقط لهذا الاقتباس الجديد وتخزينه في قاعدة البيانات. أنا أخطط لتحديث الاقتباس كل ساعة. أنا بحاجة إلى القيام حوالي 25 إلى 30 المؤشرات الفنية ل 2200 الأسهم. الخميس، 10 أبريل 2008 5:51 م يستغرق وقت تنفيذ مكالمة تا-ليب على صفيف مكون من 10000 عنصر حوالي 15 ميلي ثانية (على إنتل كور ديو 2.13 غز). هذا هو متوسط ​​جميع الوظائف. من بين أسرع، سما يأخذ أقل من 2.5 ميلي ثانية. أبطأ، هترندمود، يستغرق 450 ميلي ثانية. مع عناصر أقل هو أسرع. سما يأخذ حوالي 0.22 ميلي ثانية ل 1000 عناصر الإدخال. كسب السرعة تقريبا الخطية (النفقات العامة لأداء استدعاء وظيفة لا يكاد يذكر). في سياق التطبيق الخاص بك، تا-ليب من المستبعد جدا أن يكون عنق الزجاجة الخاصة بك لأداء السرعة. أيضا أنا عموما لا أوصي هذا الحل نكوت كوتلاست. اقرأ أدناه للحصول على التفاصيل. أولا، تصحيح لبيان بوبان. يمكن أيضا لجميع الوظائف في تا-ليب حساب قيمة مشاركة واحدة باستخدام الحد الأدنى من العناصر نكوت كوتلاست. يمكن أن يكون لديك صفيف من حجم 10000، وتهيئة البيانات فقط لأول 500 العناصر، إضافة عنصر واحد والدعوة تا-ليب لحساب سما فقط للعنصر الجديد. سوف تا-ليب ننظر إلى الوراء لا أكثر من اللازم (إذا سما 5، ثم تا-ليب سوف حساب سما واحد باستخدام القيم 5 الماضية). هذا ممكن مع المعلمة ستارتيدكس و إنديدكس. يمكنك تحديد نطاق ليتم حسابه، أو قيمة واحدة. في هذا السيناريو سوف تجعل ستارتيدكس إنديدكس 500 لحساب العنصر 501st. لماذا هذا الحل كوتلاست نكوت يحتمل أن تكون خطرة على بعض بغض النظر عن اختيار حل بوبان. أو تا-ليب ترى أن استخدام عدد محدود صغير من البيانات السابقة لن تعمل بشكل جيد مع معظم وظائف تا. مع سما، فمن الواضح أنك تحتاج فقط عنصر n لحساب متوسط ​​أكثر من عنصر n. انها ليست بسيطة مع إما (والعديد من المهام تا أخرى). وغالبا ما تعتمد الغو على القيمة السابقة لحساب القيمة الجديدة. وظيفة عودية. وهذا يعني أن جميع القيم السابقة لها تأثير على القيم المستقبلية. إذا قررت أن كوتليميتكوت ألغو الخاص بك لاستخدام كمية صغيرة فقط من قيمة ن الماضي، فإنك لن تحصل على نفس النتيجة كشخص يحسب على عدد كبير من القيم الماضية. الحل هو حل وسط بين السرعة والدقة. لقد كثيرا ما نناقش هذا في سياق تا-ليب (أسميها فترة كوتونستابل في الوثائق والمنتدى). ولإبقائه بسيطا، فإن توصيتي العامة هي إذا كنت غير قادر على جعل الفرق بين الغو مع استجابة النبض المحدود (فير) من الغو مع استجابة النبض لانهائية (إير)، وسوف تكون أكثر أمانا لحساب على جميع البيانات لديك متاح. يحدد تا-ليب في الشفرة التي لها وظائف غير مستقرة (إير). تحرير بواسطة مفورتير الجمعة، 15 أغسطس 2008 4:25 ص الجملة الإنجليزية الصحيحة الجمعة، 15 أغسطس 2008 4:20 ص

Comments