تحسب lfilter_zi حالة لاستقرار استجابة الخطوة. [1] في مثالنا، مدخل ثابت 3 يحتاج حالة داخلية 2.25، لا 3.
اكتب الخرج والحالة منفصلين
zi شروط تأخير lfilter الداخلية؛ عند إغفالها يفترض السكون الابتدائي. [2]
نختار b=[1/4,1/4] وa=[1,−1/2]؛ a[0]=1 فلا نغير مقياس المعاملات. الفهرسة صفرية، وقيمنا حقيقية منتهية.
بتخصيص معادلات الحالة، نكتب y[n]=x[n]/4+s[n−1]، ثم s[n]=x[n]/4+y[n]/2. [2]
تحسب المعادلة الأولى الخرج الحالي من المدخل الحالي والحالة المحفوظة. وبعد معرفة هذا الخرج نحسب الحالة الجديدة بالمعادلة الثانية. إذن s[n] شيء نحفظه للخطوة التالية، وليس اسمًا آخر لـy[n].
ولفهم علاقته بالماضي، عوض s[n−1]=x[n−1]/4+y[n−1]/2 في الأولى. تحصل على y[n]=x[n]/4+x[n−1]/4+y[n−1]/2. هذه علاقة بين المدخل الحالي والسابق والخرج السابق؛ جمعُ الحدين الأخيرين هو الحالة الداخلية.
فإذا افترضنا x[−1]=3 وy[−1]=3، كانت s[−1]=3/4+3/2=9/4. هذا تاريخ مفترض لتحقيق البداية، لا قيمتان قسناهما. في تمرير ذي حالة واحدة نمثل zi بالمتجه [9/4]، ولا نجعل عنصره 3 لمجرد أن الخرج السابق 3.
حل الحالة التي تبقى ثابتة
lfilter_zi تحسب الحالة المستقرة لاستجابة خطوة. [1]
ضع المدخل ثابتًا عند الواحد، والحالة قبل كل عينة مساوية z. الخرج حينئذ 1/4+z. ولكي تبقى الحالة نفسها نطلب z=1/4+(1/4+z)/2=3/8+z/2؛ لذلك z=3/4، والخرج 1.
للمدخل الثابت 3، يكون الخرج 3/4+s، وتحديث الحالة s=3/4+(3/4+s)/2=9/8+s/2. الحل s=9/4=2.25؛ الخرج 3/4+9/4=3، والحالة التالية 3/4+3/2=9/4 أيضًا. تكرار المعادلتين يبقيهما ثابتتين لأي عدد من العينات.
ويمكن الحصول على الحالة المختارة بضرب 3/4 في 3. لا ننسخ حالة خطوة الواحد دون تغييرها: استعمال 3/4 مع مدخل 3 يعطي أول خرج 3/4+3/4=1.5، ثم 2.25 و2.625 و2.8125.
إذا بدأنا بحالة صفرية بدلًا من ذلك، يكون أول خرج 3/4. الحالة التالية 3/4+(3/4)/2=9/8، والخرج الثاني 3/4+9/8=15/8=1.875. بعد ذلك نحصل على 39/16=2.4375 و87/32=2.71875.
أما وضع 3 مكان الحالة الداخلية، فيعطي أول خرج 3/4+3=15/4=3.75. تصير الحالة 3/4+(15/4)/2=21/8، فيخرج في الخطوة التالية 27/8=3.375. ثم 51/16=3.1875 و99/32=3.09375؛ القيم تنخفض نحو 3 بدلًا من أن تبقى 3 من البداية.
نستطيع إثبات اتجاه الفرق: بعد أول خرج، والمدخل ثابت، تكون y[n+1]=3/2+y[n]/2. بطرح 3 نحصل على e[n+1]=e[n]/2. لذلك y[n]−3=(s[−1]−9/4)/2^n؛ هذا برهان للمثال، وليس استنتاجًا من أربع نقاط فقط.
العدد 1/2 يجعل مقدار الفرق يتناقص إلى صفر هنا. لكنه لا يجعل كل حالة ابتدائية مساوية للحالة المستقرة، ولا يحول الخطأ في تفسير zi إلى قيمة صحيحة عند البداية.
راجع كسب المدخل الثابت
كسب الخطوة المستقر مجموع معاملات b مقسومًا على مجموع a، مع تحقق الاستقرار ومقام غير صفري. [1]
في مرشحنا الأول، مجموع b=1/2 ومجموع a=1−1/2=1/2؛ النسبة 1. لذلك كان المدخل الثابت 3 يقابله خرج ثابت 3. تساوي الرقمين هنا ناتج عن المعاملات، لا تعريفًا لكل تهيئة مستقرة.
نؤلف مرشحًا ثانيًا بالمعاملات b=[1/2,1/2] وa=[1,−1/2]. صار مجموع b=1، ومجموع a=1/2؛ كسب الثابت 2. لا نخلط هذا التغيير بتغيير الحالة فقط؛ المعاملات نفسها مختلفة.
مع المدخل 3، نكتب y=3/2+s، وتحديث s=3/2+y/2. طلب الثبات يعطي s=3/2+(3/2+s)/2=9/4+s/2، ومنه s=9/2=4.5، والخرج 3/2+4.5=6.
إذا طلبنا بدل ذلك أن يساوي أول خرج أول مدخل، أي 3، لزم s=3−1.5=1.5. لكنه يتغير بعد هذه العينة إلى 1.5+3/2=3؛ الخرج التالي 1.5+3=4.5، ثم 5.25 و5.625. مطابقة أول نقطة لم تمنع تغير الخرج بعد ذلك.
في هذا المرشح، خطوة الواحد لها خرج مستقر 2 وحالة مستقرة 1.5. ضرب الحالة في أول مدخل 3 يعطي 4.5، فيبدأ الخرج عند 6؛ هذا هو الثبات الصحيح لمعاملاته. لا نفرض خرجًا مساويًا للمدخل إذا كان الكسب مختلفًا عن الواحد.
كل مرشح من مثالينا يملك عامل تراجع للفرق قدره 1/2، ومجموع a=1/2 غير صفري. لم نشتق قاعدة وجود حالة مستقرة لجميع المعاملات الممكنة؛ القسمة والمعادلات هنا مستوفيتان للشروط المذكورة.
![للمدخل [3,3,0,0]، نقل الحالة 2.25 بعد العينتين الأوليين يعطي 2.25 و1.125، وتصفيرها يعطي صفرين.](https://images.bahralolom.com/assets/local-2000-20261012/BA-0716/state-chunks.png)
احمل الحالة عند تقسيم السجل
عند تقديم zi، يعيد lfilter الحالة النهائية zf أيضًا. [2]
نعود إلى المرشح الأول ومدخله [3,3,0,0]، مع s[−1]=9/4. العينتان الأوليان تعطيان 3 و3، وتبقى الحالة بعدهما 9/4. عند العينة الثالثة، ذات الفهرس 2، صار المدخل صفرًا؛ الخرج 0+9/4=2.25.
بعدها تصبح الحالة 0+2.25/2=1.125. العينة الرابعة صفر أيضًا، فيكون خرجها 1.125، والحالة النهائية 0.5625=9/16. اختفاء المدخل لم يجعل الذاكرة الداخلية تختفي فورًا.
قسم القائمة إلى [3,3] ثم [0,0]. نهاية القطعة الأولى حالة 2.25؛ إذا مررناها بدايةً للقطعة الثانية، أعادت الحسابات 2.25 و1.125، كما في السجل الكامل. وإذا صفرنا الحالة عند الفصل، صار الخرجان صفرًا وصارت المسألة ذات بداية جديدة.
السبب لا يعتمد على مكان الفصل في هذا النموذج: قبل كل عينة، تحتاج المعادلتان المدخل الحالي والحالة السابقة فقط. إذا تطابقت الحالة والمدخل والمعاملات في المسارين، تطابق الخرج والحالة التالية؛ يتكرر ذلك بالاستقراء عبر بقية العينات.
نقل الحالة يفترض استمرار المعاملات وترتيب العينات نفسيهما. ولم نستنتج الحالة من شكل أول مدخل وحده؛ التهيئة الثابتة فرض عن بداية السجل، أما zf فيحمل الحالة الناتجة من الحساب الفعلي للقطعة السابقة.
أمثلتنا بلا وحدات فيزيائية أو قيم مفقودة؛ الفهرس ليس ثانية. تحققنا بكسور دقيقة ومن طريقتين، إحداهما تحفظ حالة داخلية والأخرى تحفظ مدخلًا وخرجًا سابقين، على جميع القوائم الرباعية ذات القيم −1 و0 و1 وتسعة تواريخ مفترضة. هذه مراجعة منتهية، لا برهان لدقة المكتبة أو جودة إزالة ضوضاء.
لم ننفذ SciPy أو نقس إشارة. توصي وثائق lfilter غالبًا بمقاطع الرتبة الثانية لتقليل المشكلات العددية. [2] هدف مثال الرتبة الأولى هنا فهم التهيئة وتفسير الحالة، وليس اختيار مرشح لإشارة فعلية.
| الحالة قبل البداية | الخرج الأول | الخرج الثاني |
|---|---|---|
| 0 | 0.75 | 1.875 |
| 0.75 | 1.5 | 2.25 |
| 2.25 | 3 | 3 |
| 3 | 3.75 | 3.375 |
للتوسع: التردد والسعة في الموجات.
المراجع
أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.
