انجام پایان نامه و پروپوزال و شبیه سازی مقالات
انجام پایان نامه و پروپوزال و شبیه سازی مقالات

انجام پایان نامه و پروپوزال و شبیه سازی مقالات

پردازش سیگنال در نرم افزار متلب

  

پردازش سیگنالهای دیجیتال یکی از مهم ترین و پرکاربردترین مباحث درزمینه ی مهندسی است و در خیلی رشته ها مانند مکانیک و ریاضی و برق و ….کاربرد دارد که در راستای این موضوع می توان از نرم افزار متلب استفاده کرد.

اگر بخواهیم هر پردازشی روی یک سیگنال یا داده یا رشته اعداد اعمال کنیم (مثلا یک سیگنال را ببریم یا به سیگنال دیگری وصل کنیم و …) باید از ابزاری استفاده کنیم که تولباکس پردازش دیجیتال نرم افزار متلب یکی ازآنهاست.

سیگنال چیست؟

هرکمیت متغیری در زمان یا مکان که بتوان آن را اندازه گیری کرد سیگنال گویند.مثلا صوت کمیتی است که متغیر در زمان و قابل اندازه گیری است.پس صوت یک سیگنال است.

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

پردازش سیگنال های دیجیتال علمی است که به آنالیز سیگنال ها می پردازد.

سیگنال ها به دو دسته تقسیم می شوند :انالوگ و دیجیتال(پیوسته یا گسسته)

1

 

 

همان طور که در شکل های بالا میبینید اولین شکل یک سیگنال پیوسته و دومین شکل یک سیگنال گسسته را نمایش می دهد.

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

 

 

دیجیتال کردن سیگنال بر روی سیستم های کامپیوتری امروزی توسط کارت های صوتی انجام می پذیرد. یک سیگنال آنالوگ از لحظه ورود تا دیجیتال شدن مراحل زیر را به ترتیب طی می کند:

۱٫آماده کردن سیگنال ورودی

۲٫فیلتر کردن سیگنال ورودی

۳٫نمونه برداری

۴٫چندی کردن





 

 

 

نمونه برداری(sampling)

نمونه برداری بدین مفهوم است که در بازه های زمانی مشخص مقدار سیگنال ورودی را خوانده و برای چندی شدن به مرحله بعد انتقال دهیم.

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

2

….

 

 

 

 

 

پیچش (convolution)

پیچش در ریاضیات یا به طور دقیق‌تر آنالیز تابعی، یک عملگرریاضی است که بر روی دو تابعf و g عمل کرده، و تابع سومی را تولید می‌کند که می‌توان به عنوان نسخه تصحیح شده یکی از دو تابع اصلی نگریسته شود. کانولوشن (همگشت)f   وgبه صورت ƒ*gنوشته می‌شود. این تعریف به صورت انتگرال حاصلضرب دو تابع که یکی از آنها برعکس شده و روی یکدیگر می‌لغزند تعریف می‌شود.(وقتی می خواهیم دو سیگنال را  convکنیم سیگنال اول را ثابت قرار داده میشود و سیگنال دوم وارون می شود و شروع می کنیم از ابتدا با لغزاندن سیگنال دوم روی محورxها و هر لحظه مقدار ان قسمتی را که با هم تداخل دارند حساب میکنیم.)با این تعریف، کانولوشن یک نوع خاص از تبدیل انتگرالی است.

کانولوشن دو سیگنال طبق دستور c=conv(a,b)محاسبه میشود که در ان a,b بردار های حاوی  نمونه های سیگنال ها هستند که میتوانند در فرمت float,doubleباشند طول c برابر خواهد بود با مجموع طول دو بردار منهای یک.

3

 

5

 

6

 

7

حال می پردازیم به مثالی از کانولوشن در متلب:

دو سیگنال یا رشته ی اعداد را تعریف نموده ایم و با استفاده از دستور conv(x,y) متلب مقدار کانولوشن این دو سیگنال را محاسبه میکند.

8

 

9

معکوس convolution :

فرض کنید یکی از سیگنال های ورودی را داریم و همچنین حاصل کانولوشن را نیز داریم حال می خواهیم سیگنال ورودی دوم  را پیدا کنیم. دستور مورد نظر deconv(x,y)میباشد .در مثال زیر x , yسیگنال های ورودی بوده اندکه x مجهول است.hحاصل کانولوشن و معلوم است.

10

11

 

Correlation

فرض کنیم دو سیگنال بطور دلخواه داریم و می خواهیم correlation این دو سیگنال را محاسبه کنیم برای این کار می توانیم از دستور xcorr(a,b)  استفاده کنیم که a , b سیگنال های دلخواه هستند این دستور همانند دستور convolution  عمل می کند با این تفاوت که سیگنال دوم را وارون نکرده روی سیگنال دوم می لغزانیم.این دستور برای یافتن میزان حداکثر شباهت دو سیگنال کاربرد دارد مثلا دو سیگنال تقریبا مشابه از یک منبع مشخص ضبط شده باشند با این تفاوت که دومی با تاخیرضبط  شده باشد و ما از این مقدار تاخیر اطلاع نداریم و میخواهیم این مقدار را بیابیم در این حالت می توان از این دستور استفاده کرد.وهم چنین وقتی این سیگنال ها شییفت داده می شوند به ازای کدام شیفت بیشترین شباهت را دارند یعنی اگر بطور مثال یک سیگنال را با خودش در نظر بگیریم به ازای هیچ شیفتی یعنی شیفت صفر دارای ماکسیمم مقدار است.

دستور  covariance تقریبا همانند correlation   عمل می کند با این تفاوت که برای این دستور میانگین سیگنال مهم نیست یعنی چه به درایه ها مقداری اضافه کنیم چه نکنیم دو شکل بطور یکسان ظاهر می شوند.در متلب این دستور را به این صورتxcov(a,b)  نمایش می دهیم.

 

 

 

 

 

 

fast fourier transform(fft)

تبدیل سریع فوریه (fft) نام الگوریتمی‌است برای انجام تبدیلات مستقیم و معکوس گسستهٔ فوریه به صورتی سریع و بسیار کارآمد. یک تبدیل فوریه سریع تجزیه یک رشته از مقادیر به مولفه‌هایی با فرکانس‌های متفاوت است. اما محاسبه مستقیم آن از تعریف گاهی اوقات در عمل بسیار کند است. تبدیل فوریه سریع یک راه برای محاسبه همان نتایج به طور سریع تر است؛ ازتبدیل فوریه سریع به عنوان «مهم‌ترین الگوریتم عددی عصر زندگی ما» یاد می‌شود

اگر تابع  f(x)  یک تابع متناوب و انتگرال آن در دوره تناوب محدود باشد و تعداد مینیمم و ماکزیممها و ناپیوستگی های آن محدود باشد، می توان آن را با یک سری توابع پایه (سینوسی و کسینوسی) نوشت و جزو پرکاربردترین مباحث ریاضی در مهندسی، فیزیک، پزشکی، هواشناسی، مخابرات و پردازش سیگنال و…است.

111111111

 

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

12

 

 

 

 

در شکل اگر ما همه ی سیگنال های ابی را با هم جمع کنیم  سیگنال قرمز را به ما میدهد.

13

 

حال هر کدام از این سینوسی ها یک فرکانس مشخص دارند به این ضریب میدهند مثلا به نمودار سینوسی که فرکانسش بالاتر است یعنی دوره تناوبش کوتاه تر است ضریب کمتری می گیرند. پس این مجموعه ای از ضرایبی که به سینوسی ها دادیم می تواند برای ما یک سیگنال بسازد .اگر این سیگنال را بصورت مجموعه ای از ضرایب سینوسی ها بتوانیم نمایش بدهیم تبدیل فوریه اعمال کردیم و ضریب سینوسی ها ضرایب فوریه ما هستند.

کاربردهای تبدیل فوریه:

پردازش سیگنال ( صوت، تصویر، قلب، مغز و…)

طراحی فیلترها و کنترل کننده ها

طراحی فرستنده، گیرنده و آنتن ها………

حال می پردازیم به مثالی از تبدیل فوریه در متلب :

 

 

 

14

19

متلب برعکس کتاب ها بازه را از ۰   تا ۲pi می یرد نه –pi  تا piبرای همین راهکار متلب دسور fftshiftاست.

16

 

17

Inverse fast fourier transform(ifft)

در این دستور هدف محاسبه fft معکوس می باشد.اگر x یک سیگنال دلخواه باشد nنشانده ی این است که تبدیل فوریه گسسته معکوس چند نقطه ای می باشد با استفاده از دستورifft  می توان fft  معکوس ان را محاسبه کرد.که x همان fft مذکوراست در اینجا نیز وارد کردن ورودی دوم ضروری نیست.

با مثالی که در پایین اوردم بهتر متوجه این موضوع می شویم:

18

 

 

 

21

 

 

 

 

حالا می خواهیم از دستور ifftاستفاده کنیم ولی قبل از ان باید به این نکته اشاره کنم که برای اجرای دستور ifftروی خروجی این تابع خروجی باید مجددا به حالت ۰ تا ۲pi برگردد در نتیجه لازم است که یک بار دیگر از دستور fftshift استفاده گردد هم چنین با توجه به اینکه تبدیل فوریه در حالت کلی مختلط می باشد برای رسم اندازه ی ان باید از دستور abs استفاده کنیم تا اندازه تبدیل فوریه رسم گردد.

20

 

 

19

 

می بینیم که با دستور ifft  توانستیم سیگنال اول را تا حد زیادی بازسازی کنیم.

 

کاهش نرخ نمونه برداری:

بطور دقیق با دستور  downsample(x,n)  تعداد نمونه ها به ۱\n  کاهش می یابدیعنی از هر n نمونه یکی را میگیریم و بقیه را رها میکنیم از این دستور برای این استفاده می کنیم که گاهی اوقات نرخ نمونه برداری بیش از حد مورد نیاز است. در اینجا می خواهیم به مفاهیم نمونه برداری و تغییر نرخ نمونه برداری بپردازیم:

کاهش نرخ نمونه برداری:بدین معناست که بیاییم از هرچند نمونه یک سری نمونه را حذف کنیم بطور

 

حال این حد مورد نیاز چگونه تعیین می شود؟

از نرخ نمونه برداری Nyquistاستفاده می کنیم:

فرکانس نایکوئیست

براساسNyquist Theorem  در نمونه‌برداری از سیگنال‌های آنالوگ، برای این‌ که سیگنال گسسته-زمان به دست آمده قابل تبدیل به سیگنال اولیه باشد، باید نرخ نمونه‌برداری حداقل ۲ برابر بالاترین مؤلفهٔ فرکانسی موجود در سیگنال اولیه باشد. برای مثال در مورد صوت انسان که حداکثر فرکانس آن ۴ کیلوهرتز است این فرکانس برابر ۸ کیلوهرتز باید باشد.این فرکانس خاص را فرکانس نمونه‌برداری نایکوئست می‌نامند. برای کاربردهای عملی نرخ ۲/۲ مورد استفاده قرار می‌گیرد تا داده‌ها دارای افزونگی (Redundancy) کافی باشند. این فرکانس در واقع دو برابر ماکزیمم فرکانس سیگنال آنالوگ است.

یعنی می توان سیگنال را از روی سیگنال نمونه برداری شده بازسازی کرداگر که فرکانس نمونه‌برداریبزرگتر از دو برابر بالاترین مولفه فرکانسی سیگنال باشد. فرکانس نمونه‌برداری را بزرگتر از دو برابر پهنای باند لازم در نظر می‌گیرند.

حال اگر این نرخ نمونه برداری را هر چه از نرخ Nyquistبالاتر ببریم به کیفیت افزوده نمی شودو فقط حجم بالا می رود چون با افزایش نرخ نمونه برداری تعداد نمونه ها افزایش می یابد مثلا وقتی می خواهیم فیلم یا اهنگی را دانلود کنیم به جای انکه ۵mgبه ۵۰mg تبدیل می شود در صورتی که به کیفیت افزوده نمی شود پس از حد Nyquistنمی توانیم پایین تر بیایم ولی بالاتر هم نیازی نیست ببریم و بهترین حالت همان حد Nyquistاست.مثلا شکل زیر را در نظر بگیرید:

22

در اینجا مبهم است که نقاطی که نمونه برداری شده اند برای سیگنال ابی رنگ است یا برای سیگنال قرمز رنگ.ولی با توجه به نرخ Nyquist برای سیگنال ابی که فرکانسش کمتر از سیگنال قرمز است این نرخ نمونه برداری برای ان(یعنی سیگنال ابی)مناسب ست و برای سیگنال قرمز نامناسب می باشد.

 

در زیر مثالی از کاهش نرخ نمونه برداری در متلب اورده شده است:

23

24

وقتی یک سیگنال در حوزه ی زمان فشرده می شود و یا نرخ نمونه برداری ان کاهش پیدا می کند فوریه سیگنال در حوزه ی فوریه پهن تر می شود.

مثال:

25

26

 

27

28

در مثال بالا دیدیم که هرچه بیشتر نرخ نمونه برداری را کاهش دهیم سیگنال در حوزه ی فوریه پهن تر می شود اگر نرخ نمونه برداری را تا بیش ازحد مشخصی کاهش دهیم تداخل ایجاد می شود.

برای روشن تر شدن این موضوع به شکل زیر توجه کنید:

29

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

حال گاهی اوقات ما مجبوریم یا می خواهیم نرخ نمونه برداری را کاهش دهیم تا حجم را کاهش دهیم و همچنین نمی خواهیم تداخل ایجاد شود در این صورت میایم آن نواحی که قرار است دچار تداخل شوند را فیلتر می کنیم و مقادیرشان را صفر می گذاریم.که در متلب می توان از دستور decimate استفاده کرد در واقع این دستور مان کار downsampleرا انجام می دهد با ای تفاوت که قبلش سیگنال را فیلتر می کند.که با این روش حذف اطلاعات داریم .

افزایش نرخ نمونه برداری:

در افزایش نرخ نمونه برداری تعداد نمونه ها افزایش می یابد برعکس کاهش نرخ نمونه برداری.دستوری که در متلب برای افزایش نرخ نمونه برداری استفاده می شود upsample می باشد.که در این دستور نمونه های اضافه شده مقدار صفر می گیرند یعنی فقط تعدادی نمونه با مقدار صفر به نمونه های قبلی اضافه می شود.که این موضوع به خودی خود کاربرد ندارد بلکه بطور مثال فرض کنیم با افزایش نرخ نمونه برداری تعداد نمونه های صفرمان را زیاد کنیم سپس با استفاده از درون یابی این نمونه های صفر مقداری بگیرند و یک فیلتر پایین گذر اعمال کنیم.متلب در این مورد دستور interp(x,n) را قرار داده است که این دستور خود فیلتر پایین گذر را اعمال می کند.

 

 

 

کاربردهای upsample :

فرض کنید بخواهیم طول سیگنال را افزایش دهیم یا مثلا نیم نمونه آن را شیفت دهیم در این صورت باید نرخ نمونه برداری را دو برابر افزایش بدهیم و بعد یک نمونه شیفت می دهیم و بعد دو برابر کاهش می دهیم.

هم چنین برای کاهش و یا افزایش نرخ نمونه برداری بطور کسری این مفهوم کاربرد دارد.مثلا اگر بخواهیم یک سیگنال را با ۴\۵  نرخ نمونه برداری ان را کاهش دهیم باید نرخ نمونه برداری را با ۵ افزایش و با ۴ کاهش دهیم.که  برای این مفهوم می توان از دستور resample(x,L,M) استفاده کرد.که L ضریب افزایش نرخ نمونه برداری و M  ضریب کاهش نرخ نمونه برداری می باشد.

 

حال می پردازیم به توابعی که برای کار کردن با صوت در متلب وجود دارند:

: wavrecordاین تابع پس از فراخوانی،از یک دستگاه ورودی صدا مثلا میکروفون در زمان مشخصی تحت فرکانس تعیین شده ای صدا را ضبط می کند.توجه داشته باشید که برای ضبط صدا باید سیستم در حال ضبط باشد.ساختار تابع به این صورت است: data=wavrecord(n,fs); این تابع تعدادnنمونه از یک سیگنال صوتی را تحت فرکانسfsهرتز ضبط می کند و آن را در متغیرdataذخیره می کند.مقدار پیش فرضfsبرابر ۱۱۰۲۵هرتز است.البته این دستور در متلب حذف شده است و دستور جایگزینauidiorecorder  استفاده می شود.

 

 

مثلا:

ar= audiorecorder(fs,nbits,nchans)

fs : نرخ نمونه برداری

Nbits :تعداد بیت های هر نمونه

Nchans :تعداد کانال ها(می تواند ۱ یا ۲ باشد که ۱ فقط از یک میکروفون یک صدایی را ضبط می کند ولی ۲ کاناله صدا استریو است.)

 

 

Wavwrite: این دستور سیگنال مورد نظر را گرفته و هم چنین نرخ نمونه برداری ان را نیز می گیرد و با نام data  ان را ذخیره می کند بطور مثال:wavwrite(s,12000,’data’)          .

اگر هرچه این نرخ نمونه برداری را بالاتر ببریم بطور مثال voiceای که در حال ذخیره کردن هستیم تندتر اجرا می شود.مثلا اگر ۱۲۰۰۰ را به ۶۰۰۰تبدیل کنیم صدا کندتر و قابل فهم تر می شود.یعنی با نصف سرعت اجرا می شود.

Wavread: این دستور فایل مورد نظربطور مثال data را می خواند و در s  می ریزد و نرخ نمونه برداری ان را در fs  می ریزد.

دستورات wav  در متلب قدیمی هستند و دستورات زیر جایگزین شده اند:

Audioread :این دستور همانند دستور wavread  عمل می کند.با این تفاوت که محدود به صرفا فایل های wav نمی شود و می تواند فایل های flac,mp3, mp4, oggرا فراخوانی بکند.

[s,fs]=audioread(‘data.wav’)

برای play ,pause,resume,stop و غیره از audioplayer استفاده می کنیم.

ao=audioplayer (s,fs);

play(ao)

pause(ao)

resume(ao0

stop(ao)

 

 

در دستور رو برو به اندازه ی عددی که در پرانتز بگذاریم به همون تعداد ثانیه متلب کاری انجام نمی دهد.pause(number)

audiowrite: همانند wavwrite عمل می کند یعنی سیگنال مورد نظر را با نامی که می دهیم با پسوند فایل ذخیره و هم چنین نرخ نمونه برداری را نیز می دهیم و ذخیره می کند.

30

 

 

 

 

 

 

در این مثال ما فایل ‘signal.wav’  را در s  میریزیم و هم چنین نرخ نمونه برداری ان را درfs

میریزیم و ان را play  می کنیم.با افزایش n باعث نرخ نمونه برداری را بیشتر کاهش می دهیم که باعث ایجاد تداخل می شودو اگر سیگنال را با دستور downsample  اجرا کنیم یعنی تداخل داریم و سیگنال فیلتر نشده اجرا می شود.که در صدا خش خش و noise کاملا مشخص است و اگر با دستور decimate اجرا کنیم یعنی سیگنال را فیلتر کرده ایم و اطلاعات از دست داده ایم و باعث کاهش کیفیت صدا شده ایم ولی دیگر noise و خش خش وجود ندارد.

Filtering

در پردازش سیگنال فیلتر یک المان یا فرآیندی است که طی آن بخشها یا عناصر نامطلوب سیگنال

حذف می گردند . اغلب منظور از فیلتر کردن حذف برخی از فرکانسها یا عبور سیگنال و کاهش

نویز است .

فیلترها را می توان بر اساس ملاکها و معیارهای مختلفی تقسیم بندی نمود از جمله:

آنالوگ و دیجیتال

پیوسته در زمان و گسسته در زمان

خطی وغیر خطی

تغیرپذیر با زمان و تغیرناپذیر با زمان

پاسخ ضربه محدود(FIR)  وپاسخ ضربه نامحدود(IIR)

تابع تبدیل

تابع تبدیل H(S) یک فیلتر نرخ تغییرات سیگنال خروجی Y(S) نسبت به ورودی X(S) را به صورت تابعی از فرکانس نشان میدهد:

 

 

پاسخ فرکانسی هر فیلتر بر اساس اینکه کدام فرکانس حذف و کدام عبور داده شود به صورت زیر طبقه بندی می گردد:

پایین گذر: فرکانس های پایین تر از حد مورد نظر عبور داده می شوند فرکانسهای بالاتر حذف می گردند .

بالا گذر: فرکانس های بالاتر از حد مورد نظر عبور داده می شوند فرکانسهای پایین تر حذف می گردند

میان گذر: فقط فرکانس های داخل باند میانی عبور داده می شوند .

فیلترها را می توان از لحاظ فناوری ساخت به صورت زیر دسته بندی نمود :

۱ فیلترهای الکترونیکی آنالوگ

۲ فیلترهای المان توزیع شده

۳ فیلترهای مکانیکی

۴فیلترهای دیجیتال: در این نوع از فیلترها ابتدا توسط مبدل آنالوگ به دیجیتال سیگنال از حالت پیوسته به گسسته تبدیل می گردد سپس توسط پردارنده عملیات ریاضی روی آن انجام می گردد و دوباره سیگنال به کمک مبدل دیجیتال به آنالوگ به حالت پیوسته تبدیل می گردد . گسسته بودن تابع تبدیل این فیلترها و وجود پردازنده های مختلف به ما امکان پیاده سازی انواع توابع تبدیل پیچیده ای را می دهد که با فیلترهای آنالوگ امکان پیاده سازی آن وجود ندارد . در ازای این مزیت قیمت فیلترهای دیجیتال بسیار بالاتر از فیلتر های آنالوگ می باشد.

3132

 

فیلترهای دیجیتال را می توان از لحاظ نوع پاسخ ضربه به دوسته ی IIR )پاسخ ضربه نامحدود( و FIR )پاسخ ضربه محدود( تقسیم کرد .

ساختار فیلتر های FIR  :

33

پاسخ ایمپالس محدود در واقع برای این محدود می باشد که تعداد ضرایب در فرموال بالا محدود است.با توجه به شکل   x ورودی و y  خروجی می باشد.حالا می خواهیم از روی ورودی خروجی را بسازیم.که در واقع ورودی را در عددی ضرب کرده و به خروجی می فرستیم.و هم چنین نمونه های تاخیر داده شده ی ورودی را هم در عددی ضرب کرده و به خروجی می فرستیم.و هر چه این تاخیرها بیشتر شوند طول سیگنال نیز  بیشتر می شود و اگر طول فیلتر مثلا ۵ باشد یعنی ورودی در همان لحظه و با ۴ ورودی قبلی را  در ضرایبی ضرب کرده و به خروجی می دهیم.به این  فیلتر: FIR می گویند.

 

ساختار فیلترهای IIR:

تابع تبدیل زیر را می توان

34

به صورت سری نمودن دو فیلتر با تابع تبدیل های H1 و H2 پیاده سازی نمود

35

36

تابع تبدیل H1 یک فیلتر FIR است که می توان آن را به صورت زیر تحقق بخشید :

37

38

این شکل تحقق صورت تابع تبدیل به کمک ساختار مستقیم را نمایش می دهد.

تابع تبدیل H2 را نیز می توان به صورت زیر تحقق بخشید:

40

41

این شکل تحقق مخرج تابع تبدیل به کمک ساختار مستقیم را نمایش می دهد.

و در نهایت سری نمودن این دو ساختار منجر به تحقق H(z) می گردد

42

این شکل ساختار مستقیم نوع اول است.این ساختار تا حدودی همانند ساختار FIR  می باشد با این تفاوت که خروجی در هر لحظه خود تابعی از خروجی  در لحظه قبل می باشد

در متلب دستوری با نام filter(B,A,X)  موجود است که x  همان ورودی وA  ضرایب مخرج در تابع تبدیل و B ضرایب صورت می باشد که فیلترهای FIR فقط B داشتند و جای A باید ۱ بگذاریم.به بیان واضح تر در واقع در این دستور x را از سیستمی که تابع تبدیل آن B  و  Aمی باشد عبور می دهد و خروجی را محاسبه می کند.و با این کار نوسان های ورودی را از بین می برد.

نظرات 0 + ارسال نظر
ایمیل شما بعد از ثبت نمایش داده نخواهد شد