ما الذي تقوم به هذه الحاسبة
تحسب حاسبة الالتفاف الدائري حاصل الالتفاف الدائري (الدوري) لمتتاليتين زمنيتين متقطعتين — وهي عملية أساسية في معالجة الإشارات الرقمية (DSP). وعلى خلاف الالتفاف الخطي، يلتف الالتفاف الدائري حول دور ثابت قيمته N، وهو بالضبط ما يحدث عند ضرب تحويلي فورييه المتقطعين (DFT) لإشارتين ثم إجراء التحويل العكسي. ما عليك سوى إدخال متتاليتيك، لتعرض لك الأداة فورًا متتالية الخرج الناتجة، إضافةً إلى قيمتيها العظمى والصغرى لتحليل سريع.
المدخلات
- المتتالية الأولى: إشارة الدخل x، تُدخَل كأرقام مفصولة بفواصل (مثال:
1, 2, 3, 4). - المتتالية الثانية: الإشارة الثانية h، وتُدخَل أيضًا مفصولة بفواصل (مثال:
1, 1, 1).
إذا اختلف طول المتتاليتين، تكمّل الحاسبة المتتالية الأقصر بأصفار حتى تبلغ \(N\) = طول المتتالية الأطول. بعدها تُعامَل كلتاهما على أنهما دوريتان بدور قدره \(N\).
الصيغة الرياضية
يُعرَّف الالتفاف الدائري على النحو التالي:
$$y[n] = \sum_{k=0}^{N-1} x[k] \cdot h\big[(n - k)\bmod N\big]$$يكمن الفرق الجوهري عن الالتفاف الخطي في المؤشر باقي القسمة على N. فعندما تصبح القيمة \((n - k)\) سالبة، تلتف عائدةً إلى نهاية المتتالية بدلًا من أن تنتج صفرًا. ولهذا السبب تحتوي النتيجة دائمًا على \(N\) عينة بالضبط — أي بطول المدخل الأطول نفسه.
مثال محلول
لنفترض أن \(x = [1, 2, 3, 4]\) وأن \(h = [1, 1, 1, 1]\) (كلتاهما بطول \(N = 4\)). نحسب كل قيمة من قيم الخرج:
- $$y[0] = 1\cdot 1 + 2\cdot 1 + 3\cdot 1 + 4\cdot 1 = 10$$
- $$y[1] = 1\cdot 1 + 2\cdot 1 + 3\cdot 1 + 4\cdot 1 = 10$$
- \(y[2] = 10\)، \(y[3] = 10\)
النتيجة: [10, 10, 10, 10]، بقيمة عظمى 10 وقيمة صغرى 10. ولأن جميع عناصر h تساوي الواحد، يساوي كل عنصر من عناصر الخرج مجموع عناصر x — وهي وسيلة عملية للتحقق من صحة الحساب.
الأسئلة الشائعة
كيف يختلف هذا عن الالتفاف الخطي؟ ينتج الالتفاف الخطي متتالية بطول \((\text{len}(x) + \text{len}(h) - 1)\) دون أي التفاف. أما الالتفاف الدائري فيُبقي الطول عند \(N\) ويعيد طيّ الفائض إلى البداية، بما يطابق الترشيح المعتمد على تحويل فورييه المتقطع (DFT).
ماذا لو اختلف طول المتتاليتين؟ تُكمَّل المتتالية الأقصر بأصفار لتطابق الطول الأطول \(N\)، بحيث تتحاذى المتتاليتان قبل إجراء الالتفاف.
هل يمكنني استخدام أرقام سالبة أو عشرية؟ نعم. تُقرأ المدخلات كأعداد عشرية، لذا تعمل قيم مثل -1.5, 0.25, 3 دون أي مشكلة.