تئوری نمونه برداری سیگنال
نمونه برداری سیگنال (Signal Sampling) یکی از مباحث مهم در پردازش سیگنال است. در این مطلب ابتدا به بیان قضیه نمونه برداری نایکویست (Nyquist Theorem) و اثبات آن میپردازیم و سپس تکنیکهای نمونه برداری از سیگنالها را بیان میکنیم.
بیان قضیه نایکوئیست در نمونه برداری سیگنال
یک سیگنال پیوسته در زمان را میتوان توسط نمونههای (Samples) آن نمایش داد. بر اساس قضیه نمونه برداری سیگنال نایکویست یا نایکوئیست-شانون، عکس این عمل، یعنی ساخت مجدد سیگنال اصلی از روی سیگنال نمونه برداری شده، در شرایطی امکانپذیر است که فرکانس نمونه برداری fsfs بزرگتر یا مساوی با دو برابر بزرگترین مولفه فرکانسی سیگنال پیام یا سیگنال اصلی باشد. بنابراین شرط زیر باید در نمونه برداری برقرار باشد:
fs≥2fmfs≥2fm
اثبات قضیه نایکوئیست
یک سیگنال پیوسته در زمان x(t)x(t) را در نظر بگیرید. طیف فرکانسی این سیگنال در محدوده باند fmfm هرتز قرار دارد. به عبارت دیگر، طیف فرکانسی سیگنال x(t)x(t) برای |ω|>ωm|ω|>ωm برابر با صفر است.
برای نمونه برداری از سیگنال ورودی x(t)x(t) باید این سیگنال را در قطار ضربه δ(t)δ(t) با تناوب TSTS ضرب کرد. خروجی ضربکننده یک سیگنال گسسته است که سیگنال نمونه برداری شده نام دارد. سیگنال نمونه برداریشده را با y(t)y(t) نمایش میدهند. در تصویر زیر نمایی از نحوه نمونه برداری از یک سیگنال پیوسته در زمان را میتوان مشاهده کرد.
با توجه به تصاویر بالا میتوان به این نکته پی برد که سیگنال نمونه برداری شده فرکانس و دوره تناوبی برابر با دوره تناوب و فرکانس سیگنال ضربه را به دست خواهد آورد. روند نمونه برداری از یک سیگنال پیوسته در زمان را با استفاده از فرمول زیر نیز میتوان نشان داد:
Sampled signaly(t)=x(t).δ(t)……(1)Sampled signaly(t)=x(t).δ(t)……(1)
نمایش سری فوریه مثلثاتی تابع ضربه به صورت زیر خواهد بود:
δ(t)=a0+Σ∞n=1(ancosnωst+bnsinnωst)……(2)δ(t)=a0+Σn=1∞(ancosnωst+bnsinnωst)……(2)
در فرمول بالا داریم:
a0=1Ts∫T2−T2δ(t)dt=1Tsδ(0)=1Tsa0=1Ts∫−T2T2δ(t)dt=1Tsδ(0)=1Ts
an=2Ts∫T2−T2δ(t)cosnωsdt=2T2δ(0)cosnωs0=2Tan=2Ts∫−T2T2δ(t)cosnωsdt=2T2δ(0)cosnωs0=2T
bn=2Ts∫T2−T2δ(t)sinnωstdt=2Tsδ(0)sinnωs0=0bn=2Ts∫−T2T2δ(t)sinnωstdt=2Tsδ(0)sinnωs0=0
با جایگذاری مقادیر بالا در معادله شماره ۲ داریم:
∴δ(t)=1Ts+Σ∞n=1(2Tscosnωst+0)∴δ(t)=1Ts+Σn=1∞(2Tscosnωst+0)
همچنین با جایگذاری δ(t)δ(t) در معادله شماره ۱ داریم:
→y(t)=x(t).δ(t)=x(t)[1Ts+Σ∞n=1(2Tscosnωst)]=1Ts[x(t)+2Σ∞n=1(cosnωst)x(t)]y(t)=1Ts[x(t)+2cosωst.x(t)+2cos2ωst.x(t)+2cos3ωst.x(t)……]→y(t)=x(t).δ(t)=x(t)[1Ts+Σn=1∞(2Tscosnωst)]=1Ts[x(t)+2Σn=1∞(cosnωst)x(t)]y(t)=1Ts[x(t)+2cosωst.x(t)+2cos2ωst.x(t)+2cos3ωst.x(t)……]
از هر دو طرف رابطه بالا تبدیل فوریه میگیریم. در نتیجه معادله زیر را به دست میآوریم:
Y(ω)=1Ts[X(ω)+X(ω−ωs)+X(ω+ωs)+X(ω−2ωs)+X(ω+2ωs)+…]Y(ω)=1Ts[X(ω)+X(ω−ωs)+X(ω+ωs)+X(ω−2ωs)+X(ω+2ωs)+…]
∴Y(ω)=1TsΣ∞n=−∞X(ω–nωs)wheren=0,±1,±2,…∴Y(ω)=1TsΣn=−∞∞X(ω–nωs)wheren=0,±1,±2,…
برای بازسازی x(t)x(t)، باید طیف فرکانسی سیگنال ورودی (X(ω)X(ω)) را از روی طیف فرکانسی سیگنال نمونه برداری شده (Y(ω)Y(ω)) به دست آورد. این عمل زمانی امکان پذیر است که بین تناوبهای Y(ω)Y(ω) هیچ همپوشانی (Overlapping) وجود نداشته باشد. در تصویر زیر نمایی از امکان به دست آوردن طیف فرکانسی سیگنال اصلی از روی طیف فرکانسی سیگنال نمونه برداری شده نشان داده شده است. بر این اساس نمونه برداری از یک سیگنال را به سه دسته بیشنمونه برداری، نمونه برداری ایدهآل و کمنمونه برداری تقسیم میکنند.
در تصویر اول، fs>2fmfs>2fm است و به اصطلاح بیش نمونه برداری (Over Sampling) اتفاق افتاده است. در تصویر دوم، fs=2fmfs=2fm است و در این حالت نمونه برداری ایدهآل انجام گرفته است. اما در تصویر سوم، fs<2fmfs<2fm است که در این حالت کمنمونه برداری (Under Sampling) به وقوع پیوسته است.
اثر تداخل
در حالت کمنمونه برداری، ناحیه دارای همپوشانی نشاندهنده اثر تداخل یا در همروی (Aliasing Effect) است. به عبارت دیگر، زمانی که فرکانس نمونه برداری یعنی fsfs از دو برابر پهنای باند سیگنال یعنی 2fm2fm بیشتر باشد، پدیده تداخل اتفاق میافتد. در این حالت به راحتی میتوان سیگنال اصلی x(t)x(t) را با استفاده از یک فیلتر پایین گذر ایدهآل جداسازی کرد. راه حل دیگر برای حذف کردن اثر تداخل در نمونه برداری این است که فرکانس سیگنال اصلی را بیشتر از دو برابر فرکانس سیگنال ضربه در نظر بگیریم.
تکنیکهای نمونه برداری
در حالت کلی میتوان گفت که سه تکنیک اساسی برای نمونه برداری از سیگنال وجود دارد.
- نمونه برداری تابع ضربه (Impulse Sampling)
- نمونه برداری طبیعی (Natural Sampling)
- نمونه برداری بالا مسطح (Flat Top Sampling)
نمونه برداری سیگنال با استفاده از تابع ضربه
همان طور که در بالا نیز بیان کردیم، نمونه برداری سیگنال به روش تابع ضربه را میتوان از طریق ضرب کردن سیگنال اصلی x(t)x(t) در قطار تابع ضربه Σ∞n=−∞δ(t−nT)Σn=−∞∞δ(t−nT) با تناوب T به دست آورد. در این حالت، دامنه ضربهها متناسب با دامنه سیگنال اصلی ورودی تغییر میکنند. این نوع نمونه برداری در تصویر زیر نشان داده شده است.
سیگنال خروجی نمونه برداری را در این حالت توسط فرمول زیر به دست میآورند:
y(t)==x(t)×Σ∞n=−∞δ(t−nT)y(t)=yδ(t)=Σ∞n=−∞x(nt)δ(t−nT)……1y(t)==x(t)×Σn=−∞∞δ(t−nT)y(t)=yδ(t)=Σn=−∞∞x(nt)δ(t−nT)……1
برای به دست آوردن طیف فرکانس سیگنال نمونه برداری شده، بر روی دو سمت معادله بالا تبدیل فوریه اعمال میکنیم:
Y(ω)=1TΣ∞n=−∞X(ω–nωs)Y(ω)=1TΣn=−∞∞X(ω–nωs)
این نوع نمونه برداری، نمونه برداری ایدهآل یا نمونه برداری تابع ضربه نام دارد. اما مشکلی که وجود دارد این است که از این نوع نمونه برداری در عمل نمیتوان استفاده کرد؛ زیرا عرض پالسها در عمل نمیتواند برابر با صفر شود و به همین دلیل تولید قطار ضربه به صورت عملی و در واقعیت امکانپذیر نیست.
نمونه برداری سیگنال طبیعی
نمونه برداری سیگنال طبیعی مشابه با نمونه برداری تابع ضربه است، با این تفاوت که به جای توابع ضربه از قطار پالسها با تناوب T استفاده میکند. به عبارت دیگر، در این نمونه برداری سیگنال ورودی در قطار پالس Σ∞n=−∞P(t−nT)Σn=−∞∞P(t−nT) ضرب میشود. در تصویر زیر، نمایی از فرایند نمونه برداری طبیعی نشان داده شده است.
خروجی نمونه برداری به صورت زیر خواهد بود:
y(t)=x(t)×pulse trainy(t)=x(t)×pulse train
=x(t)×p(t)=x(t)×p(t)
=x(t)×Σ∞n=−∞P(t−nT)……(3)=x(t)×Σn=−∞∞P(t−nT)……(3)
نمایش سری فوریه نمایی p(t)p(t) را میتوان به صورت زیر نوشت:
p(t)=Σ∞n=−∞Fnejnωst……(4)p(t)=Σn=−∞∞Fnejnωst……(4)
=Σ∞n=−∞Fnej2πnfst=Σn=−∞∞Fnej2πnfst
که در این فرمول داریم:
Fn=1T∫T2−T2p(t)e−jnωstdtFn=1T∫−T2T2p(t)e−jnωstdt
=1TP(nωs)=1TP(nωs)
با جایگذاری مقادیر FnFn در معادله شماره ۴ داریم:
∴p(t)=Σ∞n=−∞1TP(nωs)ejnωst∴p(t)=Σn=−∞∞1TP(nωs)ejnωst
=1TΣ∞n=−∞P(nωs)ejnωst=1TΣn=−∞∞P(nωs)ejnωst
با جایگذاری p(t)p(t) در معادله شماره ۳ داریم:
y(t)=x(t)×p(t)y(t)=x(t)×p(t)
=x(t)×1TΣ∞n=−∞P(nωs)ejnωst=x(t)×1TΣn=−∞∞P(nωs)ejnωst
y(t)=1TΣ∞n=−∞P(nωs)x(t)ejnωsty(t)=1TΣn=−∞∞P(nωs)x(t)ejnωst
برای به دست آوردن طیف سیگنال نمونه برداری شده، باید از هر دو طرف معادله بالا تبدیل فوریه بگیریم. در نتیجه داریم:
F.T[y(t)]=F.T[1TΣ∞n=−∞P(nωs)x(t)ejnωst]F.T[y(t)]=F.T[1TΣn=−∞∞P(nωs)x(t)ejnωst]
=1TΣ∞n=−∞P(nωs)F.T[x(t)ejnωst]=1TΣn=−∞∞P(nωs)F.T[x(t)ejnωst]
بر اساس مشخصه انتقال فرکانسی (Frequency Shifting) میتوان نوشت:
F.T[x(t)ejnωst]=X[ω−nωs]F.T[x(t)ejnωst]=X[ω−nωs]
∴Y[ω]=1TΣ∞n=−∞P(nωs)X[ω−nωs]∴Y[ω]=1TΣn=−∞∞P(nωs)X[ω−nωs]
نمونه برداری سیگنال بالا مسطح
در طول انتقال سیگنال، این امکان وجود دارد که نویزهای ناخواسته به سطح بالایی سیگنال اضافه شوند. در این حالت، اگر سیگنال از فرم بالا مسطح باشد، میتوان به سادگی آنها را حذف کرد. در این جا سطح بالای نمونهها صاف است، به عبارت دیگر، پالسها دارای دامنه ثابت هستند. نمونه برداری بالا مسطح از نمونهها و نیز مدارات نگهدار استفاده میکند. در تصویر زیر نمونهای از فرایند نمونه برداری بالا مسطح نشان داده شده است.
از نظر تئوری، سیگنال نمونه برداری شده را میتوان از طریق کانولوشن پالس مستطیلی p(t)p(t) با سیگنال نمونه برداری شده ایدهآل yδ(t)yδ(t) به دست میآید. بنابراین سیگنال خروجی به صورت زیر به دست میآید:
y(t)=p(t)×yδ(t)……(5)y(t)=p(t)×yδ(t)……(5)
در تصویر زیر نیز دیاگرام این کار نشان داده شده است.
برای به دست آوردن طیف فرکانسی سیگنال نمونه برداری شده، از هر دو طرف معادله بالا تبدیل فوریه میگیریم. بنابراین داریم:
Y[ω]=F.T[P(t)×yδ(t)]Y[ω]=F.T[P(t)×yδ(t)]
با استفاده از مشخصه کانولوشن میتوانیم بنویسیم:
Y[ω]=P(ω)Yδ(ω)Y[ω]=P(ω)Yδ(ω)
در نتیجه داریم:
P(ω)=TSa(ωT2)=2sinωT/ωP(ω)=TSa(ωT2)=2sinωT/ω
نرخ نایکویست در نمونه برداری سیگنال
بر اساس قضیه نایکوئیست-شانون، یک نرخ نمونه برداری کمینه وجود دارد که در آن میتوان یک سیگنال پیوسته را به نمونههای آن تبدیل کرد و نیز بدون اعوجاج آنها را بازیابی کرد. این نرخ را نرخ نایکویست میگویند که به صورت زیر است:
fN=2fmHZfN=2fmHZ
همچنین بازه نایکویست (Nyquist Interval) برابر است با:
1fN=12fm1fN=12fm
نمونه برداری سیگنال میان گذر
در مورد سیگنالهای میان گذر (Band Pass Signals)، طیف فرکانسی این سیگنالها برای فرکانسهای خارج از f1≤f≤f2f1≤f≤f2 برابر با X[ω]=0X[ω]=0 است. فرکانس f1f1 همیشه بزرگتر از صفر است. همچنین، زمانی که fs>2f2fs>2f2 باشد، اثر تداخل در سیگنال خروجی وجود نخواهد داشت. اما دو عیب اساسی در این شرایط وجود دارد:
- نرخ نمونه برداری نسبت به f2f2 بزرگ است که باعث میشود یک محدودیت در کاربردهای عملی محسوب شود.
- طیف فرکانسی سیگنال نمونه برداری شده دارای گپهای طیفی خواهد بود.
برای غلبه بر این مشکلات، قضیه میان گذر (Band Pass Theorem) بیان میکند که اگر فرکانس نمونه برداری fs<2f2fs<2f2 باشد، آنگاه سیگنال ورودی x(t)x(t) را میتوان نمونه برداری کرد و سپس مجددا از روی سیگنال نمونه برداری شده بدون اعوجاج بازیابی کرد. همچنین:
fs=1T=2f2mfs=1T=2f2m
که در این فرمول m برابر با بزرگترین عدد صحیح است که کوچکتر از f2Bf2B باشد. B در این فرمول پهنای باند سیگنال است. اگر f2=KBf2=KB باشد، آنگاه داریم:
fs=1T=2KBmfs=1T=2KBm
برای سیگنالهای میان گذر با پهنای باند 2fm2fm و کمینه نرخ نمونه برداری fs=2B=4fmfs=2B=4fm، طیف فرکانسی سیگنال نمونه برداری شده به صورت زیر به دست میآید:
Y[ω]=1TΣ∞n=−∞X[ω–2nB]Y[ω]=1TΣn=−∞∞X[ω–2nB]
نمونه برداری سیگنال در متلب
در این قسمت میخواهیم نحوه ایجاد کردن یک سیگنال پیوسته در زمان و نمونه برداری از آن با یک نرخ معین را نشان دهیم. در بسیاری از کاربردهای شبیهسازی، ممکن است لازم باشد تا یک سیگنال پیوسته در زمان را از طریق نمونه برداری صحیح به یک سیگنال گسسته در زمان تبدیل کنیم.
همان طور که بیان کردیم، برای یک سیگنال باند پایه پیوسته در زمان باید از قضیه نمونه برداری نایکوئیست-شانون استفاده و نرخ نمونه برداری را توسط آن تعیین کرد. بر اساس این قضیه، حداقل فرکانس نمونه برداری باید بزرگتر از دو برابر فرکانس بیشینه سیگنال اصلی باشد. نرمافزار متلب یا هر نرمافزار شبیهسازی دیگر، تمام پردازشها را به صورت گسسته در زمان انجام میدهد؛ زیرا سیگنالها در حافظه کامپیوتر به صورت گسسته در زمان نشان داده میشوند.
بنابراین نمیتوان یک سیگنال پیوسته در زمان واقعی را در کامپیوتر تولید کنیم و تنها کاری که باید انجام داد این است که از طریق اتخاذ نرخ نمونه برداری بسیار بالا، یک سیگنال شبه پیوسته (Continuous-Like) ایجاد کنیم. چنین سیگنالی پس از رسم شدن بسیار شبیه به یک سیگنال پیوسته در زمان خواهد بود. حال میخواهیم در نرمافزار متلب یک سیگنال سینوسی شبه پیوسته با فرکانس fm=10KHZfm=10KHZ تولید کنیم. برای اینکه سیگنال هنگام ترسیم پیوسته به نظر برسد، نرخ نمونه برداری برابر با fs=500KHZfs=500KHZ در نظر میگیریم. قطعه کد زیر نحوه انجام این کار در متلب را نشان میدهد.
1 2 3 4 5 6 7 8 9 10 |
fs=500e3; %Very high sampling rate 500 kHz f=10e3; %Frequency of sinusoid nCyl=5; %generate five cycles of sinusoid t=0:1/fs:nCyl*1/f; %time index x=cos(2*pi*f*t);
plot(t,x) title('Continuous sinusoidal signal'); xlabel('Time(s)'); ylabel('Amplitude'); |
نمودار زیر در خروجی ترسیم میشود.
حال میخواهیم سیگنال پیوسته در زمان بالا را با استفاده از قضیه نمونه برداری نایکوئیست-شانون به یک سیگنال در حوزه گسسته در زمان تبدیل کنیم. در نتیجه فرکانس نمونه برداری حداقل باید fs=2×fm=20KHZfs=2×fm=20KHZ باشد. به عنوان مثال، ابتدا سیگنال را با فرکانس fs1=30KHZfs1=30KHZ و سپس با فرکانس fs2=50KHZfs2=50KHZ نمونه برداری میکنیم. برای نمونه برداری سیگنال، قطعه کد زیر را در محیط متلب اجرا میکنیم.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
fs1=30e3; %30kHz sampling rate t1=0:1/fs1:nCyl*1/f; %time index x1=cos(2*pi*f*t1);
fs2=50e3; %50kHz sampling rate t2=0:1/fs2:nCyl*1/f; %time index x2=cos(2*pi*f*t2);
subplot(2,1,1); plot(t,x); hold on; stem(t1,x1); subplot(2,1,2); plot(t,x); hold on; stem(t2,x2); |
در تصویر زیر سیگنال گسسته ایجاد شده پس از نمونه برداری در دو فرکانس مختلف نشان داده شده است.