قراءة
وضع القصص

يعني إيه IIR filter؟

~13 دقيقة قراءة الدرس 1 من الوحدة 8

النص التاني من الـ 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 هي:

الـ difference equation بتاعة الـ IIR filter
y[n] = \sum_{k=0}^{M} b_k\, x[n-k] - \sum_{k=1}^{N} a_k\, y[n-k]
y[n] هو الخرج، وx[n−k] هي الدخلات الحالية واللي فاتت (معاملات b_k)، وy[n−k] هي الخرجات اللي فاتت (معاملات الـ feedback a_k). والـ filter فيه M+1 feedforward tap وN feedback tap.

معاملات b بتعمل الـ zeros بتوع الـ transfer function؛ ومعاملات a بتعمل الـ poles. والمجموعتين مع بعض بيحدّدوا الـ frequency response. والبنية المزدوجة دي هي اللي بتخلّي الـ IIR filters قوية جدًا — وهي اللي ممكن تخلّيها مش مستقرة.

الـ transfer function

لما تاخد تحويل Z للـ difference equation وتحل H(z) = Y(z)/X(z) بيطلعلك الـ transfer function الـ rational:

الـ transfer function بتاعة الـ IIR filter
H(z) = \frac{B(z)}{A(z)} = \frac{\sum_{k=0}^{M} b_k\, z^{-k}}{1 + \sum_{k=1}^{N} a_k\, z^{-k}}
الـ polynomial اللي في البسط B(z) بيعمل الـ zeros؛ والـ polynomial اللي في المقام A(z) بيعمل الـ poles. والـ filter اللي درجته N فيه N pole ولحد M zero.

poles الـ H(z) — جذور A(z) — هي جوهر تصميم الـ IIR filter. أماكنها في مستوى Z بتحدّد الانتقائية في الـ frequency والـ phase response بتاع الـ filter. ولما تحط poles قريبة من دايرة الوحدة (بس جوّاها) بتعمل قمة حادة في الـ magnitude response عند الـ frequency المقابلة.

الاستقرار: القيد الحرج

تمن الـ feedback إن ممكن يحصل عدم استقرار. افتكر شرط الـ BIBO stability: عشان النظام يبقى مستقر، لازم كل دخل محدود يطلّع خرج محدود. والشرط الضروري والكافي لاستقرار الـ IIR filter هو:

بوق سماعة بيبعت خطوط صوت مقوّسة على طول لميكروفون على حامل، من مسافة قريبة.
الـ acoustic feedback: الميكروفون بيلقط صوت السماعة بتاعته، فالـ output بيرجع للـ input. ولو الصوت كبر في كل لفة حوالين الـ loop، الـ output بيكبر من غير حد.
شرط الاستقرار

الـ 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.

لما بيفرق
الـ signals الحساسة للـ phase
أشكال موجات رسم القلب/المخ، والـ eye diagrams بتوع البيانات الرقمية، ونبضات الـ pulse radar — أي signal شكل موجتها شايل معلومة هيتشوّه بالـ phase اللي مش linear. استخدم FIR بداله.
لما مبيفرقش
تطبيقات الـ magnitude بس
أدوات ضبط طبقة الصوت، وتقليل الـ noise، وتحديد نطاق خط التليفون، ورفض تشويش خطوط الكهربا — التطبيقات اللي مبيفرقش فيها غير المحتوى الطيفي بتستحمل الـ phase اللي مش linear كويس.

في المعالجة الـ offline (مش لحظية)، تقنية الـ zero-phase filtering في الاتجاهين (filtering لقدّام وبعدين لورا، زي filtfilt في MATLAB) بتلغي الـ phase distortion خالص — بس محتاجة الـ signal كلها قدّامك وبتضاعف الدرجة الفعلية للـ filter.

الـ IIR filters عمليًا

الـ IIR filters هي الاختيار الأول كل ما الاقتصاد في الحسابات يبقى مطلوب والـ linear phase مش شرط:

الصوت
أدوات الضبط والـ equalizer
أدوات ضبط الـ bass والـ mid والـ treble في الـ amplifiers والـ mixers الرقمية هي sections biquad IIR (من الدرجة التانية). تكلفة حسابية قليلة، وبتتعدّل لحظيًا.
الاتصالات
الـ channel filtering
مسارات الاستقبال في موبايلات GSM وDECT بتستخدم تصميمات IIR درجتها واطية عشان ترفض القنوات اللي جنبها بكفاءة على أجهزة شغّالة ببطارية.
التحكم
الـ PID والـ loop filters
الـ PID controllers الرقمية والـ PLL loop filters بتتنفّذ كـ IIR sections من الدرجة الأولى أو التانية — البنية الـ recursive بتنفّذ التكامل بشكل طبيعي.
القياس
الـ anti-aliasing وشيل الـ DC
الـ IIR filters البسيطة من الدرجة الأولى ("الـ leaky integrator") بتدّي DC blocking وanti-aliasing بـ pole واحد لواجهات الـ ADC بأقل مساحة.
أهم النقط
  • الـ 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 مش شرط.
اللي بعده Butterworth وChebyshev والـ elliptic filters نظرة عامة على الموديول اللي فات خاصية الـ linear phase