اختبارات الموقف بطريقة الكبار. التحليل الطيفي

والمناقشات جارية حول إيجابيات وسلبيات نسق الفاصلة العائم الجديد. كانت الحجة التالية في المناقشة هي أن مهمة Posit هي في الواقع تخزين البيانات بشكل مضغوط وعدم استخدامها على الإطلاق في العمليات الحسابية ؛ في الوقت نفسه ، تتم الحسابات نفسها في حساب Quire بدقة أكبر ، والتي يتم تضمينها أيضًا في معيار Posit.

حسنا ، متجر حتى تخزينها. ما معنى "تخزين" الأرقام بعد إجراء العمليات الحسابية بدقة أكبر مما يسمح به تنسيق التخزين؟ يعني التقريب ، والتقريب يعني ارتكاب الأخطاء. يمكن تقدير الأخطاء بطرق مختلفة - وحتى لا تتكرر ، نستخدم اليوم التحليل الطيفي باستخدام تحويل فورييه.

مقدمة قصيرة جدا


إذا أخذنا إشارة على شكل جيبية وقمنا بتحويل فورييه عليها ، في الطيف يجب أن نحصل على قمة واحدة ؛ في الواقع ، قد يحتوي الطيف على كلا التوافقيين مع تردد يمثل مضاعفًا للنغمة الأساسية التي يتم الحصول عليها نتيجة للتشوه غير الخطي ، وجرف الضوضاء الذي يتم الحصول عليه نتيجة للضوضاء والتداخل والرقمنة. هنا سوف نقيس مستوى هذه الضوضاء.

بداية


لجعله أكثر إثارة للاهتمام ، كإشارة اختبار لا نأخذ جيبا واحدا ، ولكن عدة ؛ من الضروري التأكد من أن فترات هذه الجيوب الأنفية تتناسب تمامًا مع فترة تحويل فورييه المنفصل. في Wolfram Mathematica ، يمكن القيام بذلك ، على سبيل المثال ، مثل هذا:

sz = 8192; data = Table[2 Sum[ Sin[Prime[j] k 2 Pi/sz + j*j]/sz, {j, 100, 200, 2}] // N, {k, 0, sz - 1}]; 

يتم استخدام الأعداد الأولية هنا من أجل التقليل غير المتكافئ للترددات ؛ و j * j يحول مرحلة الجيوب الأنفية تبعًا للتردد لتجنب طفرات قوية في إشارة الاختبار ، مما يوفر لها سعة أكثر أو أقل اتساقًا. تبدو الإشارة المستلمة بصريًا كما يلي:



بعد ذلك ، نقوم بتطبيعه إلى وحدة حسب القيمة القصوى ، ثم تحويلها إلى عدد صحيح 32 بت Int ، Float ، Posit ، ومرة ​​أخرى إلى Double. إذا كانت ادعاءات المؤلفين صحيحة ، فسيكون الخطأ الذي أدخلته التحويل المزدوج → Posit → Double أقرب إلى Doublé منه إلى Float.

سنقوم بتحليل مستوى الضوضاء في الوحدات القياسية لمعالجة الإشارات - ديسيبل ، والتي تسمح لنا بمقارنة القيم على مقياس لوغاريتمي. كأداة ، استخدمت محلل الطيف الخاص بي ، الذي كتب مرة واحدة لأغراض البحث.

جدول المقارنة
عتبة السمع0 ديسيبل
أوراق الصدأ10 ديسيبل
همس20 ديسيبل
تدق الساعة30 ديسيبل
غرفة هادئة40 ديسيبل
شارع هادئ50 ديسيبل
محادثة60 ديسيبل
شارع صاخبة70 ديسيبل
مستوى الخطرة75 ديسيبل
مطرقة هوائية90 ديسيبل
قطار الأنفاق100 ديسيبل
موسيقى صاخبة110 ديسيبل
عتبة الألم120 ديسيبل
صفارة إنذار130 ديسيبل
إطلاق الصواريخ150 ديسيبل
المستوى القاتل180 ديسيبل
سلاح الضوضاء200 ديسيبل


لذلك:

تعويم أزرق
أحمر - Posit
الأرجواني - Int32
أزرق - مزدوج



بالطبع ، تبين أن Posit أفضل قليلاً من Float - لكنه لا يزال بعيدًا عن المستوى المزدوج. وفي الوقت نفسه - أسوأ من Int32! إنه منطقي - لأن جزءًا من وحدات البتات يستغرق ترتيبًا كبيرًا ... دعنا نستخدم هذا الترتيب - تزيد سعة إشارة لدينا إلى 1000:



فجأة (والمتوقع بالفعل تماما) ، اشتعلت الضوضاء في تعويم وبوسيت. المضي قدما - زيادة السعة إلى مليار:



يُظهر Float نفس المستوى ، ويبدأ Posit في التأخر. تؤدي الزيادة الإضافية في السعة (هنا 10 15 ) إلى زيادة أخرى في رف الضوضاء:



استنتاج


معجزة لا يزال لم يحدث. لم يؤكد التحليل الطيفي ادعاءات المؤلفين بأن استخدام صيغة Posit كتخزين يمكن أن يوفر دقة قريبة من Double. حتى في أفضل الظروف ، كان رف الضوضاء في Posit أقل بمقدار 20 ديسيبل من Float ، ولكنه في نفس الوقت أعلى من Int32 بمقدار 10 ديسيبل ، وأعلى من Double بمقدار 60 ديسيبل.

بالطبع ، يمكن أن تجد Posit تطبيقًا مفيدًا - كحماية من تجاوز النطاق المسموح به ، عندما لا تؤدي الانبعاثات التي تتجاوز القيم الطبيعية إلى قطع أو تجاوز سعة. ولكن حتى في هذا السيناريو ، يتصرف Posit أكثر من حل وسط بين Int و Float ، بدلاً من تنسيق أرقام أفضل بشكل واضح.

Source: https://habr.com/ru/post/ar468077/


All Articles