النص التاني من الـ filtering الرقمي
الوحدة السابعة اتكلّمت عن الـ FIR filters — بسيطة ومستقرة والـ phase بتاعها linear. بس بص على أي filter تناظري بتحبّه: Butterworth low-pass، أو Chebyshev band-pass، أو elliptic بيقطع حاد. كل التصميمات الأنيقة دي بتشترك في سمة بنائية واحدة مش موجودة في الـ FIR filters: الـ feedback (التغذية الراجعة). خرجها بيرجع يدخل في الحسابات الجاية، وده بيعمل اللي اسمه الـ IIR filters — الـ infinite impulse response (الاستجابة النبضية اللانهائية). وفهم الـ IIR هو المفتاح عشان تنقل عالم تصميم الـ filters التناظرية الكلاسيكي الغني على طول للرقمي.
الـ IIR filters بتتستخدم في كل حتة: في شبكات التليفون، والـ equalizers الصوتية، وأنظمة التحكم، والأجهزة الطبية. لأنها بتوصل لانتقائية حادة جدًا في الـ frequency بمعاملات أقل بكتير من تصميم FIR مكافئ — وده بيخلّيها ملهاش بديل لما الموارد الحسابية أو الـ memory تبقى محدودة.
الفكرة الأساسية: الـ feedback
على عكس الـ FIR filter اللي بيستخدم الدخلات اللي فاتت بس، الـ IIR filter بيستخدم كمان الخرجات اللي فاتت. كل sample خرج جديدة معتمدة على تركيبة موزونة من الدخلات الحالية واللي فاتت وكمان قيم الخرج اللي فاتت. والبنية الـ recursive دي هي اللي بتدّي الـ filter الـ "infinite impulse response" بتاعه: impulse واحدة في الدخل ممكن تعمل رنين في الخرج للانهاية نظريًا.
الـ difference equation العامة للـ IIR filter هي:
معاملات b بتعمل الـ zeros بتوع الـ transfer function؛ ومعاملات a بتعمل الـ poles. والمجموعتين مع بعض بيحدّدوا الـ frequency response. والبنية المزدوجة دي هي اللي بتخلّي الـ IIR filters قوية جدًا — وهي اللي ممكن تخلّيها مش مستقرة.
الـ transfer function
لما تاخد تحويل Z للـ difference equation وتحل H(z) = Y(z)/X(z) بيطلعلك الـ transfer function الـ rational:
poles الـ H(z) — جذور A(z) — هي جوهر تصميم الـ IIR filter. أماكنها في مستوى Z بتحدّد الانتقائية في الـ frequency والـ phase response بتاع الـ filter. ولما تحط poles قريبة من دايرة الوحدة (بس جوّاها) بتعمل قمة حادة في الـ magnitude response عند الـ frequency المقابلة.
الاستقرار: القيد الحرج
تمن الـ feedback إن ممكن يحصل عدم استقرار. افتكر شرط الـ BIBO stability: عشان النظام يبقى مستقر، لازم كل دخل محدود يطلّع خرج محدود. والشرط الضروري والكافي لاستقرار الـ IIR filter هو:

الـ IIR filter بيبقى BIBO stable لو وبس لو كل poles H(z) واقعة جوه دايرة الوحدة تمامًا — يعني |z_قطب| < 1 لكل pole. والـ pole اللي على الدايرة أو برّاها بيعمل نمو من غير حد في الخرج.
|قطب| < 1 لكل الـ poles ⟺ الـ IIR filter BIBO stableده مش بيحصل لوحده. IIR filter متصمّم بإهمال، أو واحد من معاملاته اتقرّب بالـ fixed-point arithmetic، ممكن الـ poles بتاعته تزحف لدايرة الوحدة أو برّاها. فلازم الاستقرار يتأكّد منه صراحة وقت التصميم ويتراقب وقت التنفيذ.
الكفاءة: معاملات أقل، وانتقالات أحدّ
أكبر ميزة عملية للـ IIR filters هي الكفاءة. لأن الـ feedback بيدخّل resonance، الـ IIR filter يقدر يوصل لنفس حدّة الانتقال بتاعة FIR filter بمعاملات أقل بكتير. مقارنة كلاسيكية:
| المواصفات | عدد الـ FIR taps | درجة الـ IIR | معامل التوفير |
|---|---|---|---|
| ميل خفيف (−40 ديسيبل/decade) | 21 | 2 | ~10× |
| low-pass متوسط (−60 ديسيبل) | 63 | 5 | ~12× |
| passband حاد (−80 ديسيبل) | 255 | 10 | ~25× |
| elliptic بيقطع (حاد جدًا) | 1023 | 6 | ~170× |
في أنظمة الـ DSP المدمجة اللي عندها قيود ضيقة في الـ memory والحسابات — زي السماعات الطبية والـ modems ولوبات التحكم اللحظية — ميزة الكفاءة دي بتبقى حاسمة.
المقايضة في الـ phase
قوة الـ IIR filters بتيجي بمقايضة كبيرة: الـ phase اللي مش linear. لأن مقام H(z) بيدخّل phase shifts معتمدة على الـ frequency من الـ poles بتاعته، الـ group delay بتاع الـ IIR filter مش ثابت في العموم على الـ frequencies. فمكوّنات الـ signal اللي في frequencies مختلفة بتتأخر بمقادير مختلفة، وده بيشوّه شكل موجة الـ signal اللي معدّية على الـ filter.
في المعالجة الـ offline (مش لحظية)، تقنية الـ zero-phase filtering في الاتجاهين (filtering لقدّام وبعدين لورا، زي filtfilt في MATLAB) بتلغي الـ phase distortion خالص — بس محتاجة الـ signal كلها قدّامك وبتضاعف الدرجة الفعلية للـ filter.
الـ IIR filters عمليًا
الـ IIR filters هي الاختيار الأول كل ما الاقتصاد في الحسابات يبقى مطلوب والـ linear phase مش شرط:
- الـ IIR filter بيستخدم الخرجات اللي فاتت جنب الدخلات اللي فاتت — والـ feedback loop هي اللي بتخلّيه "infinite impulse response".
- الـ difference equation هي y[n] = Σ b_k·x[n−k] − Σ a_k·y[n−k]؛ ومعاملات a_k بتعمل poles في الـ transfer function.
- الـ transfer function H(z) = B(z)/A(z) rational؛ والـ poles بتاعتها بتحدّد الانتقائية في الـ frequency والاستقرار.
- الـ BIBO stability محتاجة كل الـ poles تقع جوه دايرة الوحدة تمامًا — لازم يتأكّد من ده صراحة ويتحافظ عليه في تنفيذات الـ fixed-point.
- الـ IIR filters بتوصل لنفس حدّة الـ FIR بمعاملات أقل بكتير، وده بيخلّيها أكفأ في الحسابات.
- المقايضة هي الـ phase اللي مش linear: الـ frequencies المختلفة بتتأخر بمقادير مختلفة، فشكل الموجة بيتشوّه. وممكن يتعالج ده offline بالـ filtering في الاتجاهين.
- الـ IIR filters مفضّلة لأدوات ضبط الصوت والـ channel filtering والـ PID controllers وأي تطبيق الكفاءة فيه مهمة والـ linear phase مش شرط.