فیلترهای حداقل فاز

\(\)

در این نوشته میخواهیم سیگنالها و فیلترهای حداقل فاز، تجزیه حداقل فاز یا تجزیه تمام‌گذر و فیلترهای صوتی حداقل فاز یا فاز خطی را بررسی کنیم. کد متلب (MATLAB) برای محاسبه طیف فرکانسی حداقل فاز نیز ارائه شده است.

 

تعریف فیلترهای حداقل فاز

فیلترهای خطی و فیلترهای دیجیتال با فاز صفر، اگرچه تا حدودی شکل موج سیگنال ورودی را حفظ میکنند ولی مواردی رخ میدهد که خطی بودن فاز چندان اهمیت پیدا نمیکند. در چنین مواردی، میتوان فاز را به شکل دلخواه فرض کرد یا اینکه آن را طوری تنظیم کرد که پاسخ اندازه فیلتر برای تطبیق راحت‌تر باشد. در بسیاری از موارد، این کار به معنی اتخاذ حداقل فاز برای فیلتر است. یک فیلتر خطی تغییرناپذیر با زمان یا LTI، با پاسخ \( H(z) = B(z)/A(z) \) را حداقل فاز گویند اگر تمام قطبها و صفرها داخل دایره واحد \( |z|=1 \) باشند (البته به جز خود دایره واحد)

دقت کنید که فیلترهای حداقل فاز طبق تعریف، پایدار هستند چون قطبها درون دایره واحد قرار میگیرند. به علاوه، چون صفرها نیز باید درون دایره واحد باشند، فیلتر معکوس \( 1/H(z) \) نیز پایدار است اگر فیلتر \( H(z) \) حداقل فاز باشد. میتوان گفت که فیلترهای حداقل فاز یک گروه جبری (Group) تشکیل میدهند که اعضای این گروه پاسخهای ضربه هستند و عملگر گروه نیز کانولوشن (Convolution) است (یا به طور معادل، اعضای گروه توابع تبدیل فیلتر و عملگر گروه نیز ضرب است).

فیلتر حداقل فاز، علّی (Causal) نیز هست زیرا جزء غیرعلّی در پاسخ ضربه به معنی قطب در بینهایت است. ساده‌ترین حالت برای چنین فیلتری، تقدم واحد، \( H(z)=z \)، است که شامل یک صفر در \( z=0 \) و قطب در \( z= \infty \) میشود.

 

چندجمله‌ای حداقل فاز

یک فیلتر، حداقل فاز است اگر صورت و مخرج تابع تبدیل آن، چند‌جمله‌ای حداقل فاز از \( z^{-1} \) باشند. چندجمله‌ای به شکل:

$$ \begin{aligned} B(z) = b_0+b_1z^{-1}+ b_2z^{-2}+ \ldots + b_Mz^{ M} \\ \\ = b_0(1-\zeta_1z^{-1}) b_0(1-\zeta_1z^{-1}) \ldots b_0(1-\zeta_1z^{-1}), \end{aligned}$$

 

که در آن \( b_0 \ne 0 \)، حداقل فاز است اگر تمام ریشه‌های \( \zeta_i \) آن داخل دایره واحد باشند، \( |\zeta_i | < 1 \).

حالت \( b_0=0 \) در نظر گرفته نمیشود زیرا چندجمله‌ای در این حالت، حداقل فاز نیست (چون باید صفر در \( z=\infty \) داشته باشد مگر اینکه تمام ضرایب آن صفر باشند).

همچون همیشه، به سادگی با تعبیر سیگنال به شکل پاسخ ضربه، تعریف فیلترها به تعریف سیگنالها تعمیم داده میشود. سیگنال \( h(n) \) که \( n \in \mathbb{Z} \) را حداقل فاز گویند اگر تبدیل Z آن، \( H(z) \) حداقل فاز باشد.

دقت کنید که هر فیلتر تمام قطب پایدار \( H(z) =b_0/A(z) \)، حداقل فاز است زیرا پایداری مستلزم حداقل فاز بودن \( A(z) \) است و هیچ صفری نیز وجود ندارد (همه صفرها در \( z=0 \) هستند). بنابراین، حداقل فاز تنها فاز ممکن برای فیلتر تمام قطب پایدار است.

 

فیلترهای حداکثر فاز

نقطه مقابل حداقل فاز، حداکثر فاز است. یک فیلتر LTI پایدار \( H(z) = B(z)/A(z) \) را حداکثر فاز گویند اگر تمام صفرهای آن خارج دایره واحد باشند.

برای مثال، هر فیلتر تمام‌گذر پایدار، حداکثر فاز است زیرا تابع تبدیل آن به شکل زیر قابل نوشتن است:

$$ H(z)=\frac{z^{-N}A(z^{-1})}{A(z)} $$

 

که در آن \( A(z)=1+a_1z^{-1}+a_2z^{-1}+\ldots +a_Nz^{-N} \) یک چندجمله‌ای حداقل فاز مرتبه \( N \) بر حسب \( z^{-1} \) است (تمام ریشه‌ها داخل دایره واحد هستند). مثال دیگر از فیلتر حداکثر فاز، (در واقع حالت خاصی از فیلتر تمام‌گذر)، تاخیر خالص به اندازه \( N \) نمونه است که تابع تبدیل آن \( z^{-N} \) است و شامل \( N \) قطب در \( z=0 \) و \( N \) صفر در \( z=\infty \) است.

اگر صفرهای \( B(z) \) هم داخل و هم خارج دایره واحد قرار داشته باشند، فیلتر را فاز ترکیبی (Mixed-Phase) گویند. دقت کنید که صفرهای روی دایره واحد بر اساس تعریف ارائه شده، نه حداکثر فازی هستند و نه حداقل فازی. از آنجا که قطبهای روی دایره واحد، برخی اوقات تحت عنوان پایدار به صورت مرزی شناخته میشوند، میتوان گفت که صفرهای روی دایره واحد به صورت مرزی حداکثر/حداقل فازی هستند. هر چند که این تعبیر چندان سودمند نیست. در طراحی فیلترهای حداقل فاز، صفرهای روی دایره واحد باید به صورت جداگانه بررسی و تحلیل شوند.

اگر \( B(z) \) از مرتبه \( M \) و حداقل فاز باشد، آنگاه \( z^{-M}B(z^{-1}) \) حداکثر فاز است و بالعکس. به بیان دیگر در حوزه زمان، اگر \( b=[b_0, b_1, \ldots, b_M, 0, \ldots] \) یک دنباله FIR حداقل فاز با طول \( M+1 \) باشد، آنگاه شیفت داده شده و سر و ته شده آن یعنی \( \text{SHIFT}_M(\text{FLIP}(b))) \)، یک دنباله حداکثر فاز است. به عبارت دیگر، معکوس زمانی، مکان صفرها را معکوس میکند و در نتیجه آنها را نسبت به دایره واحد بدون تاثیر روی اندازه طیف فرکانس، منعکس میکند. به دنبال معکوس زمانی، یک شیفت یا جابه‌جایی اعمال میشود تا نتیجه علّی بدست آید، هر چند که لازم نیست: اضافه کردن تاخیر واحد به فیلتر حداکثر فاز (\( B(z) \to z^{-1}B(z) \)) فیلتر حداکثر فاز جدیدی با همان پاسخ اندازه و مرتبه یک واحد بیشتر، ارائه میدهد.

 

مثال

تمام فیلترهای FIR مرتبه یک را میتوان به صورت زیر نمایش داد:

$$ H(z)=1+h_1z^{-1} $$

 

که در آن ضریب \( h_0 \) را به صورت نرمالیزه و واحد در نظر گرفته‌ایم. یک صفر تنها در \( z=-h_1 \) داریم. اگر \( |h_1|<1 \)، فیلتر حداقل فاز است. اگر \( |h_1|>1 \)، حداکثر فاز است. دقت کنید که حالت حداکثر فاز، حالتی است که پاسخ ضربه فیلتر \( [1, h_1, 0, \ldots] \) به جای رشد دچار زوال میشود. میتوان نشان داده که این یک ویژگی عمومی دنباله‌های حداقل فاز است.

 

حداقل فاز به معنی سریعترین زوال است

مثال قبل نمونه‌ای از نتیجه عمومی زیر است:

در بین تمام سیگنالهای علّی \( h_i(n) \) با اندازه طیف فرکانسی یکسان، سیگنال حداقل فاز \( h_{mp}(n) \)، سریعترین سرعت زوال یا محوشدن را دارد:

$$ \sum_{n=0}^{K}|h_{mp}(n)|^2 \ge \sum_{n=0}^{K}|h_{i}(n)|^2, \ \ \ \ K=0,1,2, \ldots $$

 

فرمول بالا به مفهوم آن است که انرژی سیگنال در \( K+1 \) نمونه اول سیگنال حداقل فاز در کمترین حالت به اندازه هر سیگنال علّی دیگر با اندازه طیف یکسان است. بنابراین، سیگنالهای حداقل فاز، در مقایسه با سیگنالهای علّی دیگر با اندازه طیف یکسان، به طور حداکثری در جهت زمان صفر (\( t=0 \))، متمرکز شده‌اند. در نتیجه این خاصیت، سیگنالهای حداقل فاز را گاهی اوقات، سیگنالهای حداقل تاخیر می‌نامند.

 

تجزیه حداقل فاز/تمام‌گذر

هر فیلتر پایدار علّی \( H(z) \) بدون صفر روی دایره واحد میتواند به یک فیلتر حداقل فاز و یک فیلتر تمام‌گذر پایدار علّی پشت سرهم تجزیه شود:

$$ H(z)=H_{mp}(z)S(z) $$

 

که در آن \( H_{mp}(z) \) حداقل فاز است، \( S(z) \) یک فیلتر تمام‌گذر پایدار است:

$$ S(z)=\frac{s_L+s_{L-1}z^{-1}+\ldots+ s_1z^{-(L-1)}+z^{-L}}{ 1+s_1z^{-1}+s_2z^{-2}+\ldots+ s_Lz^{-L} } $$

 

و \( L \)، تعداد صفرهای فیلتر حداکثر فاز \( H(z) \) است.

صفر \( \zeta \) از فیلتر حداکثر فاز تکی \( H(z) \) را در نظر بگیرید. آنگاه \( |\zeta|>1  \) و \( H(z) \) به صورت حداکثر فاز با صفری که از آن بیرون قرار داده شده است، قابل بازنویسی است:

$$ H(z)=H_1(z)(1-\zeta z^{-1}) $$

 

حال عبارت بالا را در \( 1=(1-\zeta^{-1} z^{-1})/(1-\zeta^{-1} z^{-1}) ضرب میکنیم:

$$ H(z)=\underbrace{H_1(z)(1-\zeta^{-1} z^{-1})}_{\equiv \ H_2(z)}\underbrace{\frac{ 1-\zeta^{-1} z^{-1} }{ 1-\zeta^{-1} z^{-1} }}_{\equiv \ S_1(z)} $$

 

ما \( H(z) \) را به صورت ضرب \( H_2(z) \) که در آن صفر حداکثر فاز به درون دایره واحد منعکس شده تا حداقل فاز شود (از \( z=\zeta \) به \( z=1/\zeta \)) در فیلتر تمام‌گذر پایدار \( S_1(z) \) که شامل صفر حداکثر فاز اولیه \( \zeta \) و قطب جدید در \( 1/\zeta \) میشود (که صفر منعکس شده در \( z=\zeta \) از \( H_2(z) \) را حذف میکند)، مینویسیم. این فرآیند برای هر صفر حداکثر فاز \( H(z) \) قابل تکرار است.

به طور خلاصه، ما صفر حداکثر فاز را به خارج از تابع تبدیل فاکتور گرفته و آن را با نمونه حداقل فاز بدون تغییر پاسخ دامنه فرکانسی، جایگزین میکنیم. این اصلاح، معادل قرار دادن فیلتر تمام‌گذر پایدار به صورت سری با فیلتر اصلی است که در آن فیلتر تمام‌گذر، صفر حداکثر فاز را حذف میکند و صفر حداقل فاز را قرار میدهد.

 

آیا فیلتر با فاز خطی، برای پردازش صوت مناسب است؟

به طور کلی، فیلترهای با فاز صفر یا خطی برای کاربردهای پردازش صوت، ایده‌آل هستند. علت آن است که چنین فیلترهایی، تمام فرکانسها را یه یک میزان، دچار تاخیر میکنند و این باعث میشود که شکل موج حفظ شود. به زبان ریاضی، تمام اجزاء فوریه که از فیلتر عبور میکنند به طور دقیق همزمان با وضعیت خود در سیگنال اصلی قبل از فیلتر خواهند بود. هر چند که، در اینجا این موضوع را بررسی میکنیم که پاسخ فاز بین حالت خطی و حداقل فاز، در برخی شرایط میتواند حتی بهتر عمل کند. این نکته را از طریق آزمون شبیه‌سازی در متلب (MATLAB) که پاسخهای ضربه برای فیلتر حداقل فاز و فاز صفر را مقایسه میکند، انجام میشود.

در کد متلب زیر، فیلتر پایین‌گذر تابع بیضوی مرتبه 8 با فرکانس قطع 2 کیلوهرتز طراحی شده است. در اینجا از تابع بیضوی استفاده شده است زیرا این نوع فیلتر دارای پاسخ فاز به شدت غیرخطی در نزدیکی فرکانس قطع است که منجر به تاخیر اضافی در آن ناحیه شده و اثر صوتی مشخصی در آن فرکانس دارد. فرکانس قطع نیز 2 کیلوهرتز در نظر گرفته شده است زیرا این فرکانس به خوبی قابل شنیدن است. در این آزمایش باید اثر فاز غیرخطی که به صورت صدای زنگ مشخصی است، به خوبی برای حالتهای مختلف فاز صفر و حداقل فاز شنیده و مقایسه شود.

% ellipt.m - Compare minimum-phase and zero-phase
%            lowpass impulse responses.

dosounds = 1;
N = 8;     % filter order
Rp = 0.5;  % passband ripple (dB)
Rs = 60;   % stopband ripple (-dB)
Fs = 8192; % default sampling rate (Windows Matlab)
Fp = 2000; % passband end
Fc = 2200; % stopband begins [gives order 8]
Ns = 4096; % number of samples in impulse responses

[B,A] = nellip(Rp, Rs, Fp/(0.5*Fs), Fc/(0.5*Fs)); % Octave
% [B,A] = ellip(N, Rp, Rs, Fp/(0.5*Fs)); % Matlab

% Minimum phase case:
imp = [1,zeros(1,Ns/2-1)]; % or 'h1=impz(B,A,Ns/2-1)'
h1 = filter(B,A,imp); % min-phase impulse response
hmp = filter(B,A,[h1,zeros(1,Ns/2)]); % apply twice

% Zero phase case:
h1r = fliplr(h1); % maximum-phase impulse response
hzp = filter(B,A,[h1r,zeros(1,Ns/2)]); % min*max=zp
% hzp = fliplr(hzp); % not needed here since symmetric

elliptplots; % plot impulse- and amplitude-responses

% Let's hear them!
while(dosounds)
  sound(hmp,Fs);
  pause(0.5);
  sound(hzp,Fs);
  pause(1);
end

\(\)

فرض کنید که پاسخ ضربه فیلتر پایین‌گذر مرتبه 8 را با \( h(n) \) نشان دهیم. این فیلتر نه حداقل فاز است و نه حداکثر فاز زیرا دارای صفر روی دایره واحد است ( همه صفرهای فیلتر تابع بیضوی روی دایره واحد قرار دارند). هر چند که، به لحاظ اهمیت کاربردی فیلتر، اگر صفرها را از شعاع یک به شعاع \( 1-10^{-12} \) جابه‌جا کنیم که به ما نسخه حداقل فاز فیلتر بیضوی دچار اختلال شده را میدهد، چیزی عوض نمیشود.

از \( h(n) \) دو پاسخ ضربه دیگر که پاسخ اندازه طیف مشابه ولی پاسخ فاز متفاوت دارند، بدست می‌آوریم:

$$ h_{mp} \equiv h \star h $$

 

که حداقل فاز است و

$$ h_{zp} \equiv h \star \text{FLIP}(h) $$

 

که فاز صفر است. در هر دو حالت، اندازه طیف فرکانسی برابر است با:

$$ |H_{mp}(e^{j\omega T})|= |H_{zp}(e^{j\omega T})|= |H(e^{j\omega T})|^2 $$

 

در حالیکه فاز طیف برابر است با:

$$\angle H_{mp}(e^{j\omega T})=2\angle H(e^{j\omega T}) \\ \\ \angle H_{zp}(e^{j\omega T})=0 $$

 

از آنجاییکه به یک سیگنال ضربه پایین‌گذر فیلتر شده گوش میدهیم، منطقی است که صدای ایده‌آل مورد انتظار ما صدای یک کلیک پایین‌گذر فیلتر شده باشد یا نوعی از صدای بم فشرده. بنابراین سوالی که مطرح میشود این است که کدام سیگنال صدایی شبیه این نوع صدا را دارد، \( h_{mp} \) یا \( h_{zp} \)؟ در حالت حداقل فاز، تمام ارتعاش فیلتر بعد از پالس اصلی رخ میدهد در حالیکه برای فیلتر فاز صفر، این وضعیت به طور مساوی بین قبل و بعد از پالس اصلی، تقسیم شده است ( شکل زیر).

شکل 1- پاسخ ضربه فیلترهای حداقل فاز و فاز صفر که از فیلتر پایین‌گذر تابع بیضوی مرتبه 8 بدست آمده است.

 

تست شنیدن صداها، تایید میکند که پیش-ارتعاش حالت فاز صفر قبل از کلیک اصلی، قابل شنیدن است و به آن نوعی حالت صدای چهچه میدهد. اکثر شنوندگان تایید کرده‌اند که حالت حداقل فاز، صدای کلیک بهتری میدهد. با توجه به ساختار شنوایی انسان، توزیع ایده‌آل ارتعاش به این شکل است که مقدار کمی قبل از پالس اصلی باشد و بقیه آن پس از پالس. شکل زیر، برابری اندازه طیف فرکانسی در هر دو حالت را تایید میکند.

شکل 2- طیف اندازه فیلترهای حداقل فاز و فاز صفر بدست آمده از فیلتر پایین‌گذر تابع بیضوی مرتبه 8

 

تولید فیلترها و سیگنالها حداقل فاز

طراحی فیلتر حداقل فاز معمولا نیاز به تولید یک پاسخ فرکانسی حداقل فاز مطلوب \( H(e^{j\omega}) \) از اندازه پاسخ فرکانسی داده شده \( |H(e^{j\omega})| \) دارد. همانطور که قبلا گفته شد، هر تابع تبدیل فیلتر \( H(z) \)، اصولا از طریق انعکاس تمام صفرهای خارج دایره واحد \( z_i \) که \( |z_i|>1 \)، به درون دایره واحد با جایگزین کردن \( z_i \) با \( 1/z_i \)، قابل تبدیل به حالت حداقل فاز است. هر چند که، فاکتورگیری چندجمله‌های بزرگ میتواند غیرعملی و غیرکاربردی باشد. یک روش پارامتری تقریبی بر پایه سپستروم مختلط (Complex Cepstrum) وجود دارد که هر صفر حداقل فاز را متناظر با نمایی غیرعلّی در طیف سپستروم میداند. بنابراین، با محاسبه سپستروم و تبدیل نمای غیرعلّی به نمایی علّی، طیف فرکانسی متناظر به صورت غیرپارامتری به حالت حداقل فاز تبدیل میشود.

 

 

 

 

منبع: www.dsprelated.com

نوشته قبلی

آشنایی با روشهای تخمین MLE، MAP و استنتاج بیزین و مقایسه عملکرد آنها با مثال

نوشته بعدی

پردازش سیگنال چه تاثیری در زندگی ما دارد؟

دیدگاهتان را بنویسید

سبد خرید
ورود

هنوز حساب کاربری ندارید؟

ایجاد حساب کاربری