मूविंग एवरेज फ़िल्टर (एफआईआर फ़िल्टर) के लिए बेस्ट फर्स्ट ऑर्डर IIR (AR फ़िल्टर) की स्वीकृति क्या है?


24

निम्नलिखित प्रथम क्रम IIR फ़िल्टर मानें:

y[n]=αx[n]+(1−α)y[n−1]

मैं IIR को पैरामीटर सेंट कैसे चुन सकता हूं, जितना संभव हो उतना अच्छा एफआईआर है जो अंतिम नमूनों का अंकगणितीय माध्य है :αk

z[n]=1kx[n]+1kx[n−1]+…+1kx[n−k+1]

जहाँ , जिसका अर्थ है कि IIR के लिए इनपुट तुलना में अधिक लंबा हो सकता है और फिर भी मैं अंतिम निविष्टियों के माध्यम का सबसे अच्छा सन्निकटन होना चाहूंगा ।n∈[k,∞)kk

मुझे पता है कि IIR में अनंत आवेग प्रतिक्रिया है, इसलिए मैं सबसे अच्छा सन्निकटन देख रहा हूं। मैं विश्लेषणात्मक समाधान के लिए खुश हूँ कि क्या यह या लागत फ़ंक्शन के लिए है।L2L1

इस अनुकूलन समस्याओं को केवल 1 आदेश IIR द्वारा कैसे हल किया जा सकता है।

धन्यवाद।


क्या इसका पालन करना है ठीक है]? y[n]=αx[n]+(1−α)y[n−1]
— फोनॉन

1
यह एक बहुत ही गरीब सन्निकटन बनने के लिए बाध्य है । क्या आप प्रथम-क्रम IIR से अधिक कुछ नहीं खरीद सकते?
— लेफ्टरनैबाउट

आप अपने प्रश्न को संपादित करना चाह सकते हैं ताकि आप का उपयोग दो अलग-अलग चीजों के लिए न करें , उदाहरण के लिए दूसरा प्रदर्शित समीकरण , और आप कहना चाह सकते हैं कि वास्तव में आपकी "जितना संभव हो उतना अच्छा" की कसौटी है जैसे कि क्या आप चाहते हैं कि सभी , या लिए जितना संभव हो उतना छोटा हो, सभी लिए जितना संभव हो उतना छोटा हो । z [ n ] = १y[n]| y[n]-z[n]|z[n]=1kx[n]+⋯+1kx[n−k+1]|y[n]−z[n]|| y [ n ] - z [ n ] | 2 एनn|y[n]−z[n]|2n
— दिलीप सरवटे

@ फॉनोन, हाँ, यह पहला आदेश IIR होना चाहिए। मापदंड सरल है, परिणाम सिस्टम के अंतिम निविष्टियों के माध्यम से जितना संभव हो उतना करीब होना चाहिए जहां । मुझे दोनों मामलों का परिणाम देखकर खुशी होगी। हालांकि मैं मानता हूं कि विश्लेषणात्मक समाधान केवल लिए व्यवहार्य है । k n ∈ [ k , inf ] | y [ n ] - z [ n ] | 2y[n]kn∈[k,inf]|y[n]−z[n]|2
— रॉय

जवाबों:


10

वहाँ कोई स्केल (मुझे लगता है) होने के लिए कोई विश्लेषणात्मक समाधान नहीं है । यहाँ एक स्क्रिप्ट है जो आपको दिए गए लिए देता है । यदि आपको इसकी ऑनलाइन आवश्यकता है तो आप एक LUT का निर्माण कर सकते हैं। स्क्रिप्ट वह समाधान ढूंढती है जो कम से कम होα केααK

∫0πdw|H1(jw)−H2(jw)|2

जहां प्राथमिकी आवृत्ति प्रतिक्रिया है और IIR आवृत्ति प्रतिक्रिया है।एच 2H1H2

आपने के। के लिए कोई सीमा नहीं निर्दिष्ट की है, लेकिन मैं सिर्फ यह स्पष्ट करना चाहता हूं कि निम्नलिखित प्रणाली आपके मतलब के फिल्टर के बराबर है और इसमें समान कम्प्यूटेशनल जटिलता और आपका पहला क्रम IIR है!

H(z)=1K1−z−K1−z−1

function a = find_a(K)

w = 0.0001:0.001:pi;
as = [-1:0.001:-0.001  0.001:0.001:1];

E = zeros(size(as));
for idx=1:length(as)
    fJ = J(w,as(idx),K);
    E(idx) = sum(fJ);
end

[Emin, indx] = min(E)
a = as(indx)

function f = J(w,a,K)
    num = 2*(2-a)*(1-cos(w*K)) + 2*(cos(w*(K-1)) - cos(w)) - 2*(1-a)*(cos(w)-cos(w*(K+1)));
    den = (2-a)^2 + 1 + (1-a)^2 + 2*(1-a)*cos(2*w) - 2*(2-a)^2*cos(w);
    f = -(a/K)*num./den;
    f = f+(1/K^2)*(1-cos(w*K))./(1-cos(w))+a^2./(1+(1-a)^2-2*(1-a)*cos(w));
end

end

@ ड्रेजिक यह सीधे आगे की ओर सापेक्ष है। IIR और FIR के लिए दो अभिव्यक्तियों को अभिन्न में प्लग किया गया है। एफआईआर फिल्टर के लिए वैकल्पिक अभिव्यक्ति खोजने की कुंजी ज्यामितीय प्रगति / श्रृंखला को पहचानना है। आपको यहां सभी विवरण मिलते हैं: en.wikipedia.org/wiki/Geometric_progression#Geometric_series । स्क्रिप्ट में, जे फ़ंक्शन अभिन्न संकेत के तहत अभिव्यक्ति की गणना करता है।
— नाइरेन

@niaren मुझे पता है कि यह एक पुरानी पोस्ट है ताकि आप याद रख सकें: आपका फंक्शन 'f' कैसे हुआ है? मैंने एक समान चीज़ को कोडित किया है लेकिन एफआईआर (एच 1) और आईआईआर (एच 2) के लिए जटिल स्थानांतरण कार्यों का उपयोग करके और फिर योग (एब्स (एच 1 - एच 2) ** 2) कर रहा है। मैंने आपकी राशि (fj) के साथ इसकी तुलना की है, लेकिन विभिन्न परिणामी आउटपुट मिलते हैं। सोचा कि मैं गणित के माध्यम से हल करने से पहले पूछूंगा।
— डोम

@ यह एक लंबे समय से पहले है और मैं वास्तव में याद नहीं कर सकता। मुझे लगता है कि मैं अभी बाहर काम करने की प्रक्रिया से । मुझे याद नहीं है कि मैंने अभिव्यक्ति का सत्यापन कैसे किया। मैं फिर से गणित से गुजरने का मन नहीं करता ...[H1(jω)−H2(jω)][H1(−jω)−H2(−jω)]
— nararen

@niaren हाय, मैंने आपकी अभिव्यक्ति निकालने की कोशिश की, लेकिन जटिल अंशों को जोड़ते समय अटक गया। मैंने अपने कोड में एक गलती की है ... आपका फ़ंक्शन परिणाम देने के लिए लगता है जो योग के लिए आनुपातिक हैं (abs (H1 - H2) ** 2), यह दर्शाता है कि यह सही है।
— डोम

16

माइक्रो सिग्नल आर्किटेक्चर के साथ एंबेडेड सिग्नल प्रोसेसिंग में इस समस्या की अच्छी चर्चा है , मोटे तौर पर पेज 63 और 69 के बीच । पर पेज 63 , यह (जो niaren में दे दी सटीक पुनरावर्ती औसत फिल्टर चलती की व्युत्पत्ति भी शामिल है उसके जवाब ,)

H(z)=1N1−z−N1−z−1.

निम्नलिखित चर्चा के संबंध में सुविधा के लिए, यह निम्नलिखित अंतर समीकरण से मेल खाती है:

yn=yn−1+1N(xn−xn−N).

सन्निकटन जो फार्म आपके द्वारा निर्दिष्ट में फिल्टर डालता है यह सोचते हैं की आवश्यकता है , क्योंकि (और मैं से बोली स्नातकोत्तर। 68 ) " की औसत है नमूने "। यह अनुमान हमें पूर्ववर्ती अंतर समीकरण को सरल बनाने की अनुमति देता है: y n - 1 एक्स nxn−N≈yn−1yn−1xn

yn=yn−1+1N(xn−yn−1)yn=yn−1−1Nyn−1+1Nxnyn=(1−1N)yn−1+1Nxn.

सेटिंग , हम आपके मूल रूप में , , जो दर्शाता है कि आप चाहते हैं ( इस सन्निकटन के संबंध में) ठीक (जहां नमूनों की संख्या है)। yn=αxn+(1-α)yn-11α=1Nyn=αxn+(1−α)yn−1 एन1NN

क्या यह सन्निकटन कुछ मामलों में "सर्वश्रेष्ठ" है? यह निश्चित रूप से सुरुचिपूर्ण है। यहां बताया गया है कि परिमाण की प्रतिक्रिया N = 3 के लिए [44.1kHz पर] की तुलना करती है, और जैसे N 10 तक बढ़ता है (नीले रंग में सन्निकटन):

एन = 3 एन = [3,10]


जैसा कि पीटर का जवाब बताता है, एक पुनरावर्ती फिल्टर के साथ एक एफआईआर फ़िल्टर को कम से कम वर्गों के मानक के तहत समस्याग्रस्त किया जा सकता है। सामान्य रूप से इस समस्या को कैसे हल किया जाए, इस बारे में व्यापक चर्चा जेओएस के थीसिस, डिजिटल फिल्टर डिजाइन के लिए तकनीक और वायलिन के लिए आवेदन के साथ सिस्टम पहचान में पाई जा सकती है । वह हेंकेल नॉर्म के उपयोग की वकालत करता है, लेकिन उन मामलों में जहां चरण प्रतिक्रिया मायने नहीं रखती है, वह कोपेक विधि को भी कवर करता है, जो इस मामले में अच्छी तरह से काम कर सकता है (और मानदंड का उपयोग करता है)। थीसिस में तकनीकों का एक व्यापक अवलोकन यहां पाया जा सकता है । वे अन्य रोचक अनुमान लगा सकते हैं।L2


यह पहले आदेश IIR फ़िल्टर की स्मृति के बारे में कुछ कहने का एक "सुरुचिपूर्ण" तरीका है। इसकी मेमोरी बराबर है । मैं आपके द्वारा बताए गए अन्य तरीकों पर ध्यान दूंगा। धन्यवाद। 1α
— रॉय

क्या आप सहज रूप से समझा सकते हैं कि एलएस मानदंड ( ) के तहत कोई समाधान क्यों नहीं है? L2
— रॉय

मुझे यकीन नहीं है कि इस मामले में एक एलएस समाधान है या अभी तक नहीं है, मुझे अभी पता है कि यह सामान्य "IIR- आधारित प्राथमिकी सन्निकटन" समस्या के लिए अभिसरण के साथ समस्या है। जब मुझे मौका मिलेगा मैं w / अधिक जानकारी अपडेट करूंगा।
— डिटर्जिस्ट

ठीक है, अगर लागत समारोह पीटर ने सुझाव दिया (पहला वाला) सही है तो एक समाधान है। कम से कम मेरी गणना के अनुसार।
— रॉय

महान। मैं यह देखने के लिए उत्सुक हूं कि "हेयुरिस्टिक" दृष्टिकोण कुछ अधिक विहित की तुलना में कैसे है। 1/N
— datageist

16

ठीक है, चलो सबसे अच्छा प्राप्त करने का प्रयास करते हैं: तो कि का गुणांक ।

y[n]=αx[n]+(1−α)y[n−1]=αx[n]+(1−α)αx[n−1]+(1−α)2y[n−2]=αx[n]+(1−α)αx[n−1]+(1−α)2αx[n−2]+(1−α)3y[n−3]
x[n−m]α(1−α)m

सबसे अच्छा माध्य-वर्ग सन्निकटन न्यूनतम होगा:

J(α)=∑m=0k−1(α(1−α)m−1k)2+∑m=k∞α2(1−α)2m=∑m=0k−1(α2(1−α)2m−2kα(1−α)m+1k2)+α2(1−α)2k∑m=0∞(1−α)2m=α21−(1−α)2k1−(1−α)2+2αk1−(1−α)k1−(1−α)+α2(1−α)2k1−(1−α)2+1k=α21−(1−α)2+2k(1−(1−α)k)+1k=α22α−α2+2k(1−(1−α)k)+1k=α2−α+2k(1−(1−α)k)+1k
क्योंकि एफ गुणांक लिए शून्य हैं ।m>k−1

अगला कदम डेरिवेटिव लेना और शून्य के बराबर करना है।


व्युत्पन्न की एक साजिश को देखते हुए के लिए और 0 से 1 तक, यह समस्या की तरह दिखता है (मैं इसे सेट अप किया है के रूप में) बीमार उत्पन्न है, क्योंकि सबसे अच्छा जवाब है ।JK=1000αα=0

यहाँ छवि विवरण दर्ज करें


मुझे लगता है कि यहां एक गलती है। मेरी गणना के अनुसार यह तरीका होना चाहिए:

J(α)=∑m=0k−1(α(1−α)m−1k)2+∑m=k∞α2(1−α)2m=∑m=0k−1(α2(1−α)2m−2kα(1−α)m+1k2)+α2(1−α)2k∑m=0∞(1−α)2m=α21−(1−α)2k1−(1−α)2−2αk1−(1−α)k1−(1−α)+1k+α2(1−α)2k1−(1−α)2

गणितज्ञों की पैदावार के अनुसार इसे सरल बनाना :

J(α)=α2−α+2(1−α)k−1k

MATLAB पर निम्न कोड का उपयोग करने से कुछ अलग होता है, हालांकि अलग:

syms a k;

expr1 = (a ^ 2) * ((1 - ((1 - a) ^ (2 * k))) / (1 - ((1 - a) ^ 2)));
expr2 = ((2 * a) / k) * ((1 - ((1 - a) ^ (k))) / (1 - (1 - a)));
expr3 = (1 / k);
expr4 = ((a ^ 2) * ((1 - a) ^ (2 * k))) / (1 - ((1 - a) ^ (2)));

simpExpr = simplify(expr1 - expr2 + expr3 + expr4);

J(α)=−2α−2−k−2(1−α)k+1k

किसी भी तरह, उन कार्यों में न्यूनतम है।


तो चलो मान लेते हैं कि हम वास्तव में एफआईआर फिल्टर के समर्थन (लंबाई) पर सन्निकटन की परवाह करते हैं। उस स्थिति में, अनुकूलन समस्या बस है:

J2(α)=∑m=0k−1(α(1−α)m−1k)2

प्लॉटिंग के विभिन्न मूल्यों के लिए बनाम भूखंडों और नीचे दी गई तालिका में तारीख में परिणाम है।J2(α)Kα

के लिए = 8. = .१५,३३,३३३ के लिए = 16 = 0.08 के लिए = 24 = .०५,३३,३३३ के लिए = 32. = 0.04 के लिए = 40 = .०३,३३,३३३ के लिए = 48. = .०२,६६,६६७ के लिए = 56. = .०२,३३,३३३ के लिए = 64। Kαmin
Kαmin
Kαmin
Kαmin
Kαmin
Kαmin
Kαmin
Kαmin = 0.02
के लिए = 72. = .०१,६६,६६७ Kαmin

यहाँ छवि विवरण दर्ज करें

लाल धराशायी रेखाएँ और हरी रेखाएँ , का मान जो को कम से चुना गया है [[0 )।1/KαminαJ2(α)alpha=[0:.01:1]/3;


1
बस ठीक उसी बात पोस्ट करने के लिए जा रहा था =)
— फ़ोनॉन

@Ponon: जारी रखने के लिए स्वतंत्र महसूस करें! मैंने इसे उस उद्देश्य के लिए सामुदायिक विकि के रूप में चिह्नित किया है।
— पीटर के.एच.

व्युत्पन्न wrt Alpha एक अनंत संख्या वाली शर्तों वाली श्रृंखला है (अर्थात एक बहुपद नहीं) जिसे आपको बराबर सेट करना है और फिर लिए हल करना है , और इसलिए कुछ देखभाल (या संभवतः सन्निकटन) आवश्यक होने जा रही है। α0α
— दिलीप सरवटे

क्या कोई मेरे काम की जाँच और / या सुधार कर सकता है? :-)
— पीटर के.एच.

@DilipSarwate, सबसे अच्छा अंदाजा क्या होगा? धन्यवाद।
— रॉय

3

kरेंज (2 से 100) के साथ प्रयोगात्मक परीक्षणों के आधार पर सबसे अच्छा फिट (राशि चुकता त्रुटि) MovAvg फ़िल्टर के लिए नमूनों की संख्या alfa = 1/k^0.865 होने का एक संबंध देता हैk


मैंने संबंध निकालने के लिए एक इंटरैक्टिव एक्सेल शीट का उपयोग किया: drive.google.com/open?id=0B48gEYiKwYegY3NqQThMTTZ1OG8
— chiliwili69

3

मैं इस पुराने सवाल पर लड़खड़ा गया और मैं अपना समाधान साझा करना चाहूंगा। जैसा कि अन्य उत्तरों में उल्लेख किया गया है, कोई विश्लेषणात्मक समाधान नहीं है, लेकिन न्यूनतम किया जाने वाला कार्य अच्छी तरह से व्यवहार करता है और कुछ न्यूटन पुनरावृत्तियों के साथ का इष्टतम मूल्य आसानी से पाया जा सकता है। परिणाम की इष्टतमता की जांच करने के लिए एक सूत्र भी है।α

लंबाई एफआई ​​चलती औसत फिल्टर की आवेग प्रतिक्रिया द्वारा दी गई हैN

(1)hFIR[n]=1N(u[n]−u[n−N])

जहां यूनिट स्टेप फंक्शन है। पहला क्रम IIR फ़िल्टरu[n]

(2)y[n]=αx[n]+(1−α)y[n−1]

आवेग प्रतिक्रिया है

(3)hIIR[n]=α(1−α)nu[n]

लक्ष्य अब चुकता त्रुटि को कम करने के लिए है

(4)ϵ=∑n=0∞(hFIR[n]−hIIR[n])2

और का उपयोग करके , त्रुटि के रूप में लिखा जा सकता है(1)(3)

ϵ(α)=∑n=0N−1(α(1−α)n−1N)2+∑n=N∞α2(1−α)2n=α2∑n=0∞(1−α)2n−2αN∑n=0N−1(1−α)n+∑n=0N−11N2=α21−(1−α)2−2αN1−(1−α)N1−(1−α)+1N(5)=α2−α−2N(1−(1−α)N)+1N,0<α<2

यह अभिव्यक्ति इस उत्तर में दिए गए के समान है , लेकिन यह समान नहीं है। में पर प्रतिबंध यह सुनिश्चित करता है कि अनंत राशि परिवर्तित होती है, और यह IIR फ़िल्टर के लिए स्थिरता की स्थिति के समान है ।α(5)(2)

के व्युत्पन्न को शून्य परिणाम में सेट करना(5)

(6)(1−α)N−1(2−α)2=1

ध्यान दें कि इष्टतम अंतराल में होना चाहिए क्योंकि एक वैकल्पिक आवेग प्रतिक्रिया में परिणाम के बड़े मूल्य , जो एफआईआर चलती औसत फिल्टर के निरंतर आवेग प्रतिनिधि को अनुमानित नहीं कर सकते हैं।α(0,1]α(3)

का वर्गमूल ले रहा है और शुरू , हम प्राप्त(6)β=1−α

(7)β(N+1)/2+β(N−1)/2−1=0

इस समीकरण को विश्लेषणात्मक रूप से लिए हल नहीं किया जा सकता है , लेकिन इसे लिए हल किया जा सकता है :एनβN

(8)N=−2log⁡(1+β)log⁡(β),β≠0

समीकरण का उपयोग संख्यात्मक समाधान को दोबारा जांचने के लिए किया जा सकता है ; इसे का निर्दिष्ट मान लौटाना होगा ।( 7 ) एन(8)(7)N

समीकरण को कुछ लाइनों के साथ हल किया जा सकता है (Matlab / Octave) कोड:(7)

एन = 50; एफआर मूविंग औसत फिल्टर की% वांछित फ़िल्टर लंबाई

यदि (N == 1)% तुच्छ मामले के लिए कोई पुनरावृत्ति नहीं है
    बी = 0;
अन्य
    % न्यूटन पुनरावृति
    बी = 1; % आरंभिक मूल्य
    नित = 7;
    n = (एन + 1) / 2;
    k = 1 के लिए: Nit,
        f = b ^ n + b ^ (n-1) -1;
        fp = n * b ^ (n-1) + (n-1) * b ^ (n-2);
        b = b - f / fp;
    समाप्त

    % जाँच परिणाम
    N0 = -2 * log (1 + b) / log (b) + 1% को N के बराबर होना चाहिए
समाप्त

a = 1 - बी;

नीचे फ़िल्टर लंबाई की श्रेणी के लिए के इष्टतम मानों के साथ एक तालिका है :एनαN

   एन अल्फा

   1 1.0000e + 00
   2 5.3443e-01
   3 3.8197e-01
   4 2.9839e-01
   5 2.4512e-01
   6 2.0809e-01
   7 1.8083e-01
   8 1.5990 ई -01
   ९ १.४३३३ ई-०१
  10 1.2987e-01
  20 6.7023e-02
  30 4.5175e-02
  40 3.4071e-02
  50 2.7349e-02
  60 2.2842e-02
  70 1.9611e-02
  80 1.7180e-02
  90 1.5286e-02
 100 1.3768e-02
 200 6.9076e-03 
 300 4.6103e-03
 400 3.4597e-03
 500 2.7688e-03
 600 2.3078e-03
 700 1.9785e-03
 800 1.7314e-03
 900 1.5391e-03
1000 1.3853e-03
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.