علوم وفضاء

فك التفاف الطور: قفزة أصغر لا تثبت الحركة الحقيقية

الدورة 360 درجة؛ المدخلات 150 و−170 و−130 و170 و−150. الفروق الخام −320 و40 و300 و−320؛ المختارة 40 و40 و−60 و40؛ الناتج 150 و190 و230 و170 و210.
جمع الفروق المختارة يعطي المسار؛ الرجوع ممكن.

unwrap يستبدل القفزات الكبيرة بمكملات دورية وفق العتبة. [1] نختار درجات ودورة كاملة 360، ونفصل الناتج الحسابي عن الحركة المفترضة.

قارن فرق الزاويتين بدورة كاملة

يستخدم unwrap افتراضيًا دورة 2π؛ نحدد period=360 للعمل بالدرجات هنا. [1]

نعلن سجلًا مرتبًا p=[150,−170,−130,170,−150]. الأعداد زوايا افتراضية بالدرجات، وترتيبها ترتيب العينات. لا نزعم أنها قراءات جهاز. طرح كل زاوية من التالية يعطينا الفروق [−320,40,300,−320]. نحن نقارن قيمتين متجاورتين، ولا نفرز الزوايا بحسب الحجم.

الدورة الكاملة تساوي 360 درجة في نموذجنا، ولذلك يمثل −320 و40 فرقًا زاويًا مكافئًا: −320+360=40. وبالمثل 300−360=−60. اختيار الأصغر في المقدار يفضل 40 على −320، و−60 على 300؛ أما 40 الموجود أصلًا فلا يحتاج تغييرًا.

نقصر هذا الحساب على مدخلات في المجال من −180 شاملًا إلى 180 غير شامل. لذلك يقع كل فرق خام بين −360 و360. إذا كان الفرق أقل من −180 نضيف 360؛ وإذا تجاوز 180 نطرح 360؛ وإلا نبقيه. بهذه القاعدة تصبح فروق سجلنا [40,40,−60,40]. حالة نصف الدورة سنفحصها منفصلة.

لصياغة الالتفاف نعرف W(a)=(a+180)%360−180. علامة % هنا باقي قسمة، وليست نسبة مئوية. مع المقسوم عليه الموجب، يعطي remainder باقيًا بعلامته ويوافق % في Python. [2]

في حسابنا الصحيح للأعداد الكاملة، يقع باقي القسمة على 360 بين صفر و359؛ طرح 180 يضع النتيجة بين −180 و179. إضافة 360k، حيث k عدد صحيح، لا تغير الباقي، ومن ثم W(a+360k)=W(a). هذه مساواة تفسر كيف تتغير القيمة المكتوبة وتبقى الزاوية الملتفة نفسها.

اجمع التصحيحات على طول السجل

نبدأ من أول قيمة 150 ونضيف الفروق المختارة تباعًا: 150+40=190، ثم 190+40=230، ثم 230−60=170، ثم 170+40=210. الناتج u=[150,190,230,170,210]. طريقة البناء هذه تحفظ الفروق المقصودة مباشرة.

يمكن الوصول إلى النتيجة نفسها بتصحيح المدخلات. عند الفرق الأول، التصحيح 40−(−320)=360؛ وعند الثاني 40−40=0؛ وعند الثالث −60−300=−360؛ وعند الرابع 40−(−320)=360. قائمة تصحيحات الفروق هي [360,0,−360,360].

نجمع هذه التصحيحات قبل إضافتها إلى كل زاوية. تبدأ الإزاحة بصفر عند أول عينة، ثم تصبح 360، وتبقى 360، ثم تعود إلى صفر، ثم تصبح 360. إذن الإزاحات [0,360,360,0,360]، وإضافة هذه القائمة عنصرًا بعنصر إلى p تعيد u.

سبب التراكم أن فرق الناتجين المتجاورين يساوي الفرق الخام مضافًا إليه تغير الإزاحة بين الموضعين. إذا رمزنا للإزاحة الحالية بـc، فلدينا فرق u يساوي فرق p زائد فرق c. لذلك يجب أن يساوي تغير c تصحيح ذلك الفرق، لا الإزاحة النهائية كلها.

نلاحظ أن الزاوية الرابعة 170 بقيت كما هي، بينما الزاوية الثالثة −130 أصبحت 230. ثم رجع الناتج من 230 إلى 170. اختيار فروق أقصر لا يفرض دورانًا متواصلًا في اتجاه واحد، ولا يفرز السجل ولا يجعل كل القيم موجبة.

لكل موضع في المثال، u−p مضاعف صحيح لـ360. هذا تحقق من حفظ الزاوية الملتفة، ويمكن فحصه مستقلًا عن شرط قصر الفروق. المسار الذي سنعرضه لاحقًا يحقق الحفظ نفسه مع فروق أطول؛ الحفظ وحده لا يحدد أي مسار نختار.

افحص العتبة ونصف الدورة

يعالج unwrap فروقًا تتجاوز max(discont,period/2). [1] نختار الآن عتبات بعيدة عن حدود المساواة لاختبار سجلنا.

نحدد discont=310 مع الدورة 360. الفرقان −320 يتجاوزان 310 في المقدار، فنصححهما إلى 40. أما الفرق 300 فلا يتجاوزها، فنبقيه 300 بدلًا من −60. فروق الناتج هي [40,40,300,40]، وجمعها من البداية 150 يعطي [150,190,230,530,570].

المقارنة مفيدة: عند نصف الدورة 180 كان الموضع الرابع 170، وعند العتبة 310 صار 530. الفرق بين القيمتين 360؛ كلاهما يعطي الزاوية الملتفة 170. لكن فرق الموضع الثالث إلى الرابع صار 300، ولذلك لا يصح القول إن كل اختيار للعتبة يحصر الفروق في نصف دورة.

نختار عتبة 100 في النموذج الأساسي. حد نصف الدورة يظل 180، فتعود نتائج سجلنا إلى [150,190,230,170,210]. ولعزل السبب ننظر إلى السجل [0,120]: تجاوز الفرق 100، لكن المكمل 120−360=−240 أكبر في المقدار من 120. لا نختاره لتصغير القفزة، وتبقى القيمتان [0,120].

عند الفرق 180 بالضبط، المكمل −180 له المقدار نفسه. في سجل [0,180,0] الفروقان 180 و−180، ونبقي السجل كما هو وفق قاعدة المثال. الاتجاهان متكافئان عند نصف الدورة؛ وصف المسار بأنه الأقصر لا يحسم أيهما يمثل الحركة.

تغيير العتبة يغير قاعدة الاختيار، لكنه لا يضيف مشاهدة لما حدث بين العينات. الأعداد هنا كاملة ومحدودة؛ لا نستنتج من هذه الحسابات كيف تؤثر ضوضاء القياس أو دقة الأعداد العائمة. لم نشغل مكتبة NumPy، بل تحققنا من نموذج حسابي معلن ومن حالات محددة.

مسار مفترض 150 و370 و590 و810 بفروق 220، ومسار أقصر 150 و10 و−130 و−270 بفروق −140؛ كلاهما يلتف إلى 150 و10 و−130 و90.
مشاهدات واحدة توافق مسارين مختلفين.

ميز المسار المختار من الحركة الحقيقية

نفترض للمقارنة مسارًا v=[150,370,590,810]. الفرق الحقيقي المفترض بين كل قيمتين هو 220 درجة. تطبيق W عليه يعطي السجل الملتف [150,10,−130,90]؛ فمثلًا 370 يلتف إلى 10، و590 إلى −130، و810 إلى 90.

فروق السجل الملتف [−140,−140,220]. اختيار المكمل الأقصر يحول الفرق الأخير إلى −140؛ فينتج المسار [150,10,−130,−270]. يتقدم المسار المفترض الأول بمقدار 220 كل مرة، ويتراجع الثاني بمقدار 140. الفرق بينهما يزداد بمضاعفات 360، والزوايا الملتفة متطابقة.

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

يمكن إثبات التفرد إذا عرفنا زاوية البداية الحقيقية، وافترضنا أن مقدار كل فرق حقيقي أصغر من 180 بصورة صارمة. كل فرق حقيقي يجب أن يكون مكافئًا لفرق المشاهدتين المتجاورتين بإضافة مضاعف صحيح لـ360. والفرق المختار داخل المجال المفتوح (−180,180) سيكون الوحيد فيه.

لإثبات ذلك، افترض وجود فرقين مكافئين داخل هذا المجال. الفرق بينهما 360k لعدد صحيح k، لكن مقداره أصغر من 360 لأن كليهما داخل الحدود المفتوحة. المضاعف الوحيد الممكن هو صفر، فيتساويان. بعد تحديد الفرق الأول من البداية المعلومة، تتحدد القيمة التالية، ونكرر الحجة إلى نهاية السجل.

الشرط الصارم يستبعد نصف الدورة: 180 و−180 يكسران الحدود المفتوحة ويجعلان اتجاهين ممكنين. وإذا كانت البداية مجهولة، فإن إضافة ثابت 360k إلى المسار كله تحفظ المشاهدات والفروق، فتظل إزاحة كاملة غير محددة. هذه قيود منطقية حتى في بيانات بلا ضوضاء.

تحققنا برمجيًا من أمثلة الدرجات ومن اختيار الأقصر بتعداد بدائل، ومن استعادة مسارات ذات بداية معلومة وفروق صحيحة داخل الحدود الصارمة. البرهان السابق أعم من هذه الاختبارات المحدودة؛ لا نستخدم عدد الاختبارات بديلًا عن افتراض معرفة البداية أو عن حد الفروق.

القاعدة في نموذجناالفروق المختارةالقيم الناتجة
نصف الدورة 180[40,40,−60,40][150,190,230,170,210]
عتبة 310[40,40,300,40][150,190,230,530,570]
عتبة 100 مع حد نصف الدورة[40,40,−60,40][150,190,230,170,210]

للتوسع: السعة والتردد في الموجات.

المراجع

  1. NumPy — unwrap
  2. NumPy — remainder

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