DSP 101
M6 · L2
الوحدة 6 — الـ Fast Fourier Transform
خوارزمية كولي-توكي

قسّم DFT فيه N نقطة لـ DFTين من N/2 نقطة، وكرّر بشكل recursive، ونزّل عمليات الضرب المركّب من N² لـ (N/2)·log₂N — تسريع بيوصل لـ 100,000× للـ signals الكبيرة.

1 / 9
DSP 101
M6 · L2
الفكرة الأساسية
زوجي + فردي = DFT نصّين

افصل samples الدخل لـ اللي الـ index بتاعها زوجي (x[0], x[2], x[4], …) والفردي (x[1], x[3], x[5], …). كل مجموعة بتعمل DFT من N/2 نقطة. والدمج بيتم عن طريق الـ twiddle factors (معاملات التلوين).

تفكيك الـ DIT
X[k] = X_{\text{even}}[k] + W_N^{\,k}\,X_{\text{odd}}[k]
2 / 9
DSP 101
M6 · L2
العملية الأساسية
الـ butterfly Butterfly

ضرب مركّب واحد (الـ twiddle factor W_N^k)، وجمعين، وخرجين. ولأن W^{k+N/2} = −W^k، بناخد X[k] وX[k+N/2] مع بعض بضرب واحد بس — وهنا سر الكفاءة.

1×
ضرب مركّب
2×
جمع مركّب
2
خرجين
3 / 9
DSP 101
M6 · L2
الـ recursion
قسّم لحد البساطة

كمّل قسمة على اتنين: N → N/2 → N/4 → … → 2. وفي القاع، الـ DFT اللي فيه نقطتين مجرد butterfly واحدة بـ W = 1. وشجرة الـ recursion فيها log₂ N مستوى، كل واحد محتاج N/2 butterfly.

مثال N = 8
3 مراحل × 4 butterflies = 12 ضرب (قصاد 64 في الـ DFT المباشر)
4 / 9
DSP 101
M6 · L2
الـ complexity
N log N قصاد N²
205×
التسريع عند N=1024
683×
التسريع عند N=4096
100K×
التسريع عند N=2²⁰

التسريع بيكبر مع N — وده بيخلّي الـ FFT متفوّق أكتر وأكتر في التحويلات الكبيرة اللي التطبيقات الحديثة محتاجاها.

5 / 9
DSP 101
M6 · L2
الحساب in-place
الـ bit-reversal permutation

التقسيم الزوجي-الفردي المتكرّر بيعيد ترتيب الـ samples بـعكس الـ index بتاعها في الـ binary. وبعد الـ permutation، الـ log₂ N مرحلة butterfly بيشتغلوا in-place — من غير memory زيادة غير الـ array الأصلية.

مثال (N=8)
الـ index 3 (011₂) ↔ الـ index 6 (110₂)
6 / 9
DSP 101
M6 · L2
أبعد من الأساسيات
الـ radix-4 والـ split-radix
  • الـ radix-2 DIT: تقسيم لنصّين؛ (N/2)log₂N ضرب — الأبسط
  • الـ radix-2 DIF: تقسيم الخرج؛ نفس العدد، ترتيب bit-reversed
  • الـ radix-4: تقسيم رباعي — 25% ضرب أقل
  • الـ split-radix: radix-2 للزوجي وradix-4 للفردي — أقل حد نظري
  • FFTW / Intel IPP: بيختاروا أحسن خوارزمية للـ hardware لوحدهم
  • كلهم في جوهرهم كولي-توكي — فرّق، اضرب في الـ twiddles، ادمج
7 / 9
DSP 101
اختبار سريع

شوف إيه اللي ثبت

أربع أسئلة من الدرس ده. جاوب عشان تشوف السبب — الشرح بيظهر سواء جاوبت صح أو غلط. ونتيجتك مش بتتحفظ.

السؤال 1 من 0
النتيجة 0/0

8 / 9
DSP 101
M6 · L2
أهم اللي اتعلّمناه
اتعلّمت إيه
  • قسّم الـ N نقطة لنصّين زوجي/فردي — DFTين من N/2 نقطة
  • الـ butterfly: ضرب واحد + جمعين → خرجين (W^{k+N/2} = −W^k)
  • log₂ N مرحلة × N/2 butterfly = O(N log N) في الإجمالي
  • N = 1,024: 5,120 قصاد 1,048,576 ضرب — أسرع 205×
  • in-place عن طريق الـ bit-reversal permutation — memory O(N)
  • الـ split-radix بيوصل لأقل عدد معروف من الضرب
اقرا المقالة كاملة ←
9 / 9
1 / 8 كتم