قراءة
وضع العرض التقديمي

يعني إيه FIR filter؟

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

الـ filtering: تشكيل الـ spectrum

أي signal (إشارة) بتقابلها في الواقع فيها خليط من الـ frequencies — شوية منها عايزينهم وشوية لأ. المايك بيلقط noise الأوضة جنب صوت اللي بيتكلّم. وقراية الـ sensor شايلة القياس الفيزيائي وكمان تشويش الكهربا بتاع الـ 60 هرتز. والراديو بيستقبل عشرات القنوات مرة واحدة. الـ filtering (الترشيح) هو العملية اللي بتعدّي frequencies معيّنة بشكل انتقائي وبتضعّف غيرها، وهو من أهم العمليات الأساسية في الـ DSP.

فيه عيلتين أساسيتين من الـ filters الرقمية: الـ FIR (الـ finite impulse response، الاستجابة النبضية المحدودة) والـ IIR (الـ infinite impulse response، الاستجابة النبضية اللانهائية). والوحدة دي مركّزة على الـ FIR filters — الأبسط والأكتر قابلية للتوقّع، والأقوى من نواحي كتير. وإنك تفهم الـ FIR filter بيشتغل إزاي هيفتحلك كل اللي جاي: طرق التصميم، وأنواع الـ filters، وخاصية الـ linear phase المدهشة.

الفكرة الجوهرية: مفيش feedback

الـ FIR filter بيحسب خرجه على إنه مجموع موزون للـ sample الحالية وعدد محدود من samples الدخل اللي فاتت. بس كده. مفيش feedback — الخرج مبيرجعش يدخل في الحسابات الجاية. والاختيار البنائي الواحد ده هو اللي بيدّي الـ FIR filters كل خصائصها الحلوة.

رياضيًا، الخرج عند الزمن n هو:

الـ difference equation بتاعة الـ FIR filter
y[n] = \sum_{k=0}^{M} b_k\, x[n-k] = b_0 x[n] + b_1 x[n-1] + \cdots + b_M x[n-M]
y[n] هو الخرج، وx[n−k] هي samples الدخل الحالية والـ M اللي فاتوا، وb_k هي معاملات الـ filter (الأوزان). والـ filter فيه M+1 معامل ودرجته M.

المعاملات b_0, b_1, …, b_M هي زراير التصميم. ولو اخترتها صح بتشكّل الـ frequency response بتاع الـ filter لأي passband وstopband وعرض انتقال محتاجه.

الـ impulse response هو الـ filter

افتكر من الوحدة 3 إن نظام LTI بيتميّز بالكامل بالـ impulse response (الاستجابة النبضية) بتاعه h[n]. وفي الـ FIR filter، الـ impulse response بيساوي بالظبط مجموعة المعاملات:

الـ impulse response
h[n] = \begin{cases} b_n & 0 \le n \le M \\ 0 & \text{otherwise} \end{cases}
h[k] = b_k لـ k = 0, 1, …, M؛ وصفر في أي حتة تانية. الـ impulse response طوله محدود M+1 — وعشان كده الـ filter اسمه "finite impulse response".

بما إن h[n] طولها محدود، الخرج ببساطة هو الـ convolution (الالتواء) بين الدخل والـ sequence المحدودة دي: y[n] = x[n] * h[n]. ومفيش حاجة تانية. وخرج الـ filter في أي لحظة هو dot product بيتحرّك بين آخر M+1 sample دخل وvector المعاملات.

الـ frequency response

الـ frequency response بتاع الـ FIR filter هو الـ DTFT للـ impulse response بتاعه، محسوب على دايرة الوحدة (z = e^{jω}):

الـ frequency response
H(e^{j\omega}) = \sum_{k=0}^{M} b_k\, e^{-j\omega k}
H(e^{jω}) هي polynomial في e^{−jω}. والـ magnitude |H(e^{jω})| بيوصف كل frequency بتتكبّر أو بتصغر قد إيه؛ وزاوية الـ phase ∠H(e^{jω}) بتوصف التأخير الزمني اللي بيتفرض على كل frequency.

على عكس الـ filter التناظري اللي درجته محدودة بتعقيد الدايرة، الـ FIR filter ممكن يطوّل زي ما إنت عايز — معاملات أكتر معناها انتقالات أحدّ وpassbands أكتر استواء، بتكلفة حسابات أعلى.

الاستقرار من غير شروط

من أهم المميزات العملية للـ FIR filters إنها مستقرة دايمًا. افتكر معيار الـ BIBO stability: النظام مستقر لو وبس لو كل الـ poles بتاعته جوه دايرة الوحدة تمامًا. وبما إن الـ FIR filter مفيهوش feedback، الـ transfer function بتاعته polynomial في z⁻¹ — ليها zeros بس مفيهاش poles (أو بمعنى تاني، كل الـ poles بتاعتها عند الأصل z = 0، جوه دايرة الوحدة لوحدها).

ليه الاستقرار مهم

الـ filter المش مستقر بيطلّع خرج بيكبر من غير حد حتى مع دخل محدود — كارثة في نظام صوت أو تحكم real time. والـ IIR filters، اللي فيها feedback، ممكن تبقى مش مستقرة لو معاملاتها متصمّمتش بحرص أو لو تأثيرات الـ finite word length زقّت pole برا دايرة الوحدة. أما مع الـ FIR filters، فببساطة عمرك ما هتقلق من ده. غيّر أي معامل لأي قيمة والـ filter هيفضل مستقر.

مفيش poles ← مفيش عدم استقرار. الـ FIR filters BIBO stable من غير أي شروط.

خاصية الـ linear phase

يمكن أشهر خاصية للـ FIR filters هي إنها تقدر توصل لـ الـ linear phase (الطور الخطي). الـ filter بيبقى linear phase لو الـ phase response بتاعه خط مستقيم: ∠H(e^{jω}) = −αω لثابت α ما. والـ linear phase معناه إن كل مكوّن frequency بيتأخر نفس القدر بالظبط (α sample). وشكل موجة الـ signal اللي بتعدّي على filter linear phase بيتحفظ — التوقيت بس هو اللي بيتزحزح.

الـ linear phase بيتحقق لما معاملات الـ impulse response تبقى متناظرة (أو anti-symmetric):

متناظرة
h[n] = h[M − n]
تناظر مراية حوالين المعامل اللي في النص. بيدّي phase distortion صفر. أشهر حالة — بتتستخدم في الـ FIR filters الـ low-pass والـ high-pass والـ band-pass.
anti-symmetric
h[n] = −h[M − n]
تناظر فردي حوالين النص. بيضيف phase shift 90° على الـ linear phase. بيتستخدم في الـ differentiators والـ Hilbert transformers.

شرط التناظر ده قيد قوي: بيقسم عدد الضرب المطلوب على اتنين (لأن b_k = b_{M−k}، ونص المعاملات بس فريدة) وبيضمن إن phase الـ frequency response خطي — وده اللي الـ IIR filters عمرها ما تقدر توصله بالظبط.

التكلفة الحسابية

تمن الـ FIR filters هو الحسابات: كل sample خرج محتاجة M+1 عملية ضرب وM جمع. low-pass filter فيه 101 معامل (M = 100) محتاج 101 عملية multiply-accumulate لكل sample. وعند صوت 48 كيلوهرتز، ده 4.85 مليون عملية MAC في الثانية — ولا حاجة على DSP processor أو microcontroller حديث، بس اعتبار مهم في التطبيقات اللي الـ sampling rate فيها عالي جدًا أو الطاقة قليلة جدًا.

طول الـ filter عدد المعاملات MAC / sample الاستخدام المعتاد
قصير 11 – 31 11 – 31 smoothing بسيط، pre-emphasis
متوسط 51 – 127 51 – 127 equalizer صوت، anti-aliasing
طويل 255 – 1023 255 – 1023 crossovers حادة، channel equalization
طويل جدًا 4096+ 4096+ room correction، convolution reverb

في الـ FIR filters الطويلة جدًا (مئات لآلاف المعاملات)، الـ convolution المباشر بيبقى مكلّف. وطريقتين الـ overlap-add والـ overlap-save بيستغلّوا الـ FFT عشان يطبّقوا الـ convolution في الـ frequency domain بتكلفة O(N log N) لكل block — تسريع ضخم لما الـ filter يبقى أطول بكتير من block الدخل.

الـ FIR filters في الواقع العملي

الـ FIR filters بتظهر في كل حتة في الـ DSP:

الصوت
الـ equalizers والـ crossovers
الـ equalizers الصوتية الاحترافية وشبكات الـ crossover بتاعة السماعات بتستخدم FIR filters linear phase عشان تشكّل الـ frequency response من غير ما تدخّل phase distortion بيتسمع.
الاتصالات
الـ pulse shaping
الـ root-raised-cosine (RRC) filters هي FIR filters بتتستخدم في الـ modems الرقمية والراديو المحمول عشان تحدّ الـ bandwidth وتتحكّم في الـ intersymbol interference.
الـ multirate
الـ anti-aliasing والـ anti-imaging
filters الـ decimation والـ interpolation من الوحدة 11 تقريبًا دايمًا FIR: استقرارها من غير شروط والـ linear phase بتاعها بيخلّوها مثالية لسلاسل تحويل الـ sample rate.
الطب الحيوي
معالجة ECG / EEG
filters الـ ECG والـ EEG محتاجة linear phase عشان تحافظ على شكل الموجة — phase distortion بسيط ممكن يخلّي QRS complex طبيعي يبان مرضي. والـ FIR filters هي الاختيار الوحيد.
أهم النقط
  • الـ FIR filter بيحسب خرجه كمجموع موزون للـ sample الحالية وM sample دخل فاتوا — من غير feedback ولا recursion.
  • الـ difference equation هي y[n] = Σ b_k · x[n−k]، حيث الـ M+1 معامل b_k هما معاملات التصميم.
  • الـ impulse response بيساوي sequence المعاملات: h[k] = b_k. وطوله محدود — وده سبب الاسم "finite impulse response".
  • الـ FIR filters BIBO stable من غير شروط — مفيش poles، فمفيش حاجة تعرّضها لعدم الاستقرار، مهما كانت قيم المعاملات.
  • الـ impulse response المتناظر (h[n] = h[M−n]) بيضمن الـ linear phase: كل frequency بتتأخر نفس القدر، فشكل الموجة بيتحفظ.
  • التكلفة الحسابية M+1 عملية MAC لكل sample خرج؛ والـ FIR filters الطويلة بتتنفّذ بطريقة الـ overlap-add بالـ FFT.
  • الـ FIR filters بتتستخدم في كل حتة: الـ equalization في الصوت، والـ pulse shaping في الاتصالات، والـ multirate filtering، ومعالجة الـ signals الطبية الحيوية.
اللي بعده طريقة الـ windowed-sinc نظرة عامة على الموديول اللي فات الـ spectral analysis في الـ real time