صافی سیگنال

ساخت وبلاگ

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

انگیزه

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

گاهی اوقات وقتی داده های ورودی را بررسی می کنید ، ممکن است بخواهید داده ها را صاف کنید تا بتوانید روند در سیگنال را ببینید. در مثال ما مجموعه ای از خوانش های دما را در سالیوس هر ساعت در فرودگاه لوگان در بوستون برای کل ماه ژانویه 2011 گرفته ایم.

باربوسترمروز = (1: 31*24)/24 ؛محور (روز ، روز) محورتنگylabel ("دما ( circc)") xlabel ("زمان سپری شده از 1 ژانویه 2011 (روزها)") عنوان("دمای لامپ خشک فرودگاه لوگان (منبع: NOAA)")

Figure contains an axes object. The axes object with title Logan Airport Dry Bulb Temperature (source: NOAA), xlabel Time elapsed from Jan 1, 2011 (days), ylabel Temp ( degree C ) contains an object of type line.

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

یک فیلتر متوسط متحرک

در ساده ترین شکل خود ، یک فیلتر متوسط در حال حرکت از طول n به طور متوسط هر نمونه متوالی از شکل موج را می گیرد.

برای اعمال یک فیلتر متوسط در حال حرکت در هر نقطه داده ، ما ضرایب خود را از فیلتر خود می سازیم تا هر نقطه به همان اندازه وزن داشته باشد و 1/24 را به طور متوسط کمک کند. این دمای متوسط را در هر دوره 24 ساعته به ما می دهد.

Hoursperday = 24 ؛ضریب 24hma = آنهایی (1 ، ساعتهای روز)/ساعتهای ساعت ؛AVG24HTEMPC = فیلتر (ضریب 24HMA ، 1 ، TEMPC) ؛طرح (روزها ، [TEMPC AVG24HTEMPC]) افسانه ("دمای ساعتی","میانگین 24 ساعته (تأخیر)",'محل','بهترین') ylabel ("دما ( circc)") xlabel ("زمان سپری شده از 1 ژانویه 2011 (روزها)") عنوان("دمای لامپ خشک فرودگاه لوگان (منبع: NOAA)")

Figure contains an axes object. The axes object with title Logan Airport Dry Bulb Temperature (source: NOAA), xlabel Time elapsed from Jan 1, 2011 (days), ylabel Temp ( degree C ) contains 2 objects of type line. These objects represent Hourly Temp, 24 Hour Average (delayed).

تاخیر در فیلتر

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

هر فیلتر متقارن از طول n تأخیر نمونه (N-1)/2 را خواهد داشت. ما می توانیم این تأخیر را به صورت دستی حساب کنیم.

fdelay = (طول (ضریب 24HMA) -1)/2 ؛طرح (روزها ، دما ،.محور Days-Fdelay/24 ، AVG24HTEMPC)تنگافسانه("دمای ساعتی","میانگین ساعت 24 ساعت",'محل','بهترین') ylabel ("دما ( circc)") xlabel ("زمان سپری شده از 1 ژانویه 2011 (روزها)") عنوان("دمای لامپ خشک فرودگاه لوگان (منبع: NOAA)")

Figure contains an axes object. The axes object with title Logan Airport Dry Bulb Temperature (source: NOAA), xlabel Time elapsed from Jan 1, 2011 (days), ylabel Temp ( degree C ) contains 2 objects of type line. These objects represent Hourly Temp, 24 Hour Average.

استخراج اختلاف متوسط

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

شکل deltatempc = tempc - avg24htempc ؛deltatempc = تغییر شکل (deltatempc ، 24 ، 31). '؛طرح (1:24 ، میانگین (deltatempc)) محورتنگعنوان("میانگین دیفرانسیل دما از میانگین 24 ساعته") xlabel ("ساعت روز (از نیمه شب)") ylabel ("اختلاف دما ( circc)")

Figure contains an axes object. The axes object with title Mean temperature differential from 24 hour average, xlabel Hour of day (since midnight), ylabel Temperature difference ( degree C ) contains an object of type line.

استخراج پاکت اوج

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

[envhigh ، envlow] = پاکت (tempc ، 16 ،'اوج') ؛envmean = (envhigh+envlow)/2 ؛طرح (روزها ، دما ،.روز ، Envhigh ،.روز ، envmean ،.روز ، envlow) محورتنگافسانه("دمای ساعتی","بالا",'منظور داشتن','کم','محل','بهترین') ylabel ("دما ( circc)") xlabel ("زمان سپری شده از 1 ژانویه 2011 (روزها)") عنوان("دمای لامپ خشک فرودگاه لوگان (منبع: NOAA)")

Figure contains an axes object. The axes object with title Logan Airport Dry Bulb Temperature (source: NOAA), xlabel Time elapsed from Jan 1, 2011 (days), ylabel Temp ( degree C ) contains 4 objects of type line. These objects represent Hourly Temp, High, Mean, Low.

فیلترهای متوسط متحرک وزن

انواع دیگر فیلترهای متوسط در حال حرکت ، هر نمونه را به طور مساوی وزن نمی کنند.

یکی دیگر از فیلترهای رایج از گسترش دوتایی [1/2 ، 1/2] n پیروی می کند. این نوع فیلتر یک منحنی طبیعی را برای مقادیر بزرگ n تقریب می دهد. برای فیلتر کردن نویز فرکانس بالا برای N کوچک مفید است. برای پیدا کردن ضرایب برای فیلتر دوتایی ، [1/2 ، 1/2] را با خود حل کنید و سپس به طور تکراری خروجی را با [1/2 ، 1/2] یک بار مشخص کنید. در این مثال ، از پنج تکرار کل استفاده کنید.

H = [1/2 1/2] ؛BinomialCoeff = Conv (H ، H) ؛برایn = 1: 4 binomialcoeff = conv (binomialcoeff ، h) ؛پایانشکل fdelay = (طول (binomialcoeff) -1)/2 ؛binomialma = فیلتر (binomialcoeff ، 1 ، tempc) ؛طرح (روزها ، دما ،.Days-fdelay/24 ، Binomialma) محورتنگافسانه("دمای ساعتی","میانگین وزنی دوتایی",'محل','بهترین') ylabel ("دما ( circc)") xlabel ("زمان سپری شده از 1 ژانویه 2011 (روزها)") عنوان("دمای لامپ خشک فرودگاه لوگان (منبع: NOAA)")

Figure contains an axes object. The axes object with title Logan Airport Dry Bulb Temperature (source: NOAA), xlabel Time elapsed from Jan 1, 2011 (days), ylabel Temp ( degree C ) contains 2 objects of type line. These objects represent Hourly Temp, Binomial Weighted Average.

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

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

آلفا = 0. 45 ؛Exponentialma = فیلتر (آلفا ، [1 alpha-1] ، tempc) ؛طرح (روزها ، دما ،.Days-fdelay/24 ، Binomialma ،.رو ز-1/24 ، Exponentialma) محورتنگافسانه("دمای ساعتی", . "میانگین وزنی دوتایی", . "میانگین وزنی نمایی",'محل','بهترین') ylabel ("دما ( circc)") xlabel ("زمان سپری شده از 1 ژانویه 2011 (روزها)") عنوان("دمای لامپ خشک فرودگاه لوگان (منبع: NOAA)")

Figure contains an axes object. The axes object with title Logan Airport Dry Bulb Temperature (source: NOAA), xlabel Time elapsed from Jan 1, 2011 (days), ylabel Temp ( degree C ) contains 3 objects of type line. These objects represent Hourly Temp, Binomial Weighted Average, Exponential Weighted Average.

برای یک روز در خوانش ها بزرگنمایی کنید.

محور ([3 4-5 2])

Figure contains an axes object. The axes object with title Logan Airport Dry Bulb Temperature (source: NOAA), xlabel Time elapsed from Jan 1, 2011 (days), ylabel Temp ( degree C ) contains 3 objects of type line. These objects represent Hourly Temp, Binomial Weighted Average, Exponential Weighted Average.

فیلترهای Savitzky-Golay

توجه داشته باشید که با صاف کردن داده ها ، مقادیر شدید تا حدودی قطع شده است.

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

به عنوان یک راحتی ، می توانید از عملکرد SGOLAYFILT برای اجرای یک فیلتر هموار سازی Savitzky-Golay استفاده کنید. برای استفاده از sgolayfilt ، شما یک بخش عجیب و غریب از داده ها و یک ترتیب چند جمله ای را کاملاً کمتر از طول قطعه مشخص می کنید. عملکرد SgolayFilt در داخل ضرایب چند جمله ای هموار سازی ، انجام تراز تاخیر را انجام می دهد و در شروع و پایان سوابق داده از جلوه های گذرا مراقبت می کند.

cubicma = sgolayfilt (tempc ، 3 ، 7) ؛quarticma = sgolayfilt (tempc ، 4 ، 7) ؛quinticma = sgolayfilt (tempc ، 5 ، 9) ؛طرح (روزها ، [tempc cubicma quarticma quinticma])) ("دمای ساعتی","MA با وزن مکعب", "MA با وزن کوارتیک", . "MA با وزن Quintic",'محل',"جنوب شرقی") ylabel ("دما ( circc)") xlabel ("زمان سپری شده از 1 ژانویه 2011 (روزها)") عنوان("دمای لامپ خشک فرودگاه لوگان (منبع: NOAA)") محور ([3 5-5 2])

Figure contains an axes object. The axes object with title Logan Airport Dry Bulb Temperature (source: NOAA), xlabel Time elapsed from Jan 1, 2011 (days), ylabel Temp ( degree C ) contains 4 objects of type line. These objects represent Hourly Temp, Cubic-Weighted MA, Quartic-Weighted MA, Quintic-Weighted MA.

بازپرداخت

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

در مثال بعدی ما ، ولتاژ حلقه باز را در ورودی یک ابزار آنالوگ در حضور تداخل از سر و صدای خط برق 60 هرتز AC نمونه برداری کردیم. ما ولتاژ را با نرخ نمونه برداری 1 کیلوهرتز نمونه برداری کردیم.

بارOpenLoop60hertzfs = 1000 ؛t = (0: numel (OpenLoopVoltage) -1) / fs ؛طرح (t ، OpenLoopVoltage) ylabel ("ولتاژ (V)") xlabel ('بار)') عنوان("اندازه گیری ولتاژ حلقه باز")

Figure contains an axes object. The axes object with title Open-loop Voltage Measurement, xlabel Time (s), ylabel Voltage (V) contains an object of type line.

بیایید با استفاده از یک فیلتر متوسط در حال حرکت ، اثر نویز خط را حذف کنیم.

اگر یک فیلتر متوسط متحرک با وزن یکنواخت بسازید ، هر مؤلفه ای را که با توجه به مدت زمان فیلتر ، دوره ای است ، حذف می کند.

تقریباً 1000 /60 = 16. 667 نمونه در یک چرخه کامل 60 هرتز هنگام نمونه برداری در 1000 هرتز وجود دارد. بیایید سعی کنیم "دور هم جمع شویم" و از یک فیلتر 17 نقطه ای استفاده کنیم. این کار حداکثر فیلتر را در فرکانس اساسی 1000 هرتز / 17 = 58. 82 هرتز به ما می دهد.

طرح (t ، sgolayfilt (OpenLoopVoltage ، 1،17)) ylabel ("ولتاژ (V)") xlabel ('بار)') عنوان("اندازه گیری ولتاژ حلقه باز") افسانه("میانگین فیلتر حرکت در 58. 82 هرتز", . 'محل',"جنوب شرقی")

Figure contains an axes object. The axes object with title Open-loop Voltage Measurement, xlabel Time (s), ylabel Voltage (V) contains an object of type line. This object represents Moving average filter operating at 58.82 Hz.

توجه داشته باشید که در حالی که ولتاژ به طور قابل توجهی صاف است ، اما هنوز هم حاوی یک موج کوچک 60 هرتز است.

اگر سیگنال را دوباره نمونه برداری کنیم ، می توانیم موج را به طور قابل توجهی کاهش دهیم تا یک چرخه کامل کامل از سیگنال 60 هرتز را با فیلتر متوسط متحرک خود ضبط کنیم.

اگر سیگنال را با سرعت 17 * 60 هرتز = 1020 هرتز دوباره نمونه برداری کنیم ، می توانیم از فیلتر میانگین حرکت 17 نقطه خود برای از بین بردن نویز خط 60 هرتز استفاده کنیم.

fsresamp = 1020 ؛VResAmp = RESAMPLE (OpenLoopVoltage ، FSResamp ، FS) ؛tresamp = (0: numel (vresamp) -1) / fsresamp ؛vavgresamp = sgolayfilt (vresamp ، 1،17) ؛طرح (Tresamp ، Vavgresamp) ylabel ("ولتاژ (V)") xlabel ('بار)') عنوان("اندازه گیری ولتاژ حلقه باز") افسانه("حرکت متوسط فیلتر در 60 هرتز کار می کند", . 'محل',"جنوب شرقی")

Figure contains an axes object. The axes object with title Open-loop Voltage Measurement, xlabel Time (s), ylabel Voltage (V) contains an object of type line. This object represents Moving average filter operating at 60 Hz.

فیلتر متوسط

میانگین حرکت ، میانگین متحرک وزنی و فیلترهای Savitzky-Golay تمام داده های فیلتر شده را صاف می کند. با این حال ، این ممکن است همیشه چیزی نباشد که تحت تعقیب باشد. به عنوان مثال ، اگر داده های ما از سیگنال ساعت گرفته شود و دارای لبه های تیز باشد که مایل به صاف کردن آن نیستیم؟فیلترهای مورد بحث تاکنون خیلی خوب کار نمی کنند:

بارکلهymovingavere = conv (x ، موارد (5،1)/5 ،'یکسان') ؛ysavitzkygolay = sgolayfilt (x ، 3،5) ؛طرح (t ، x ،.t ، ymovingavery ،.افسانه t ، ysavitzkygolay) ("سیگنال اصلی","میانگین حرکت","Savitzky-Golay")

Figure contains an axes object. The axes object contains 3 objects of type line. These objects represent original signal, moving average, Savitzky-Golay.

میانگین متحرک و فیلترهای Savitzky-Golay به ترتیب در نزدیکی لبه های سیگنال ساعت اصلاح شده و بیش از حد درست است.

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

ymedfilt = medfilt1 (x ، 5 ،"کوتاه کردن") ؛طرح (t ، x ،.افسانه t ، ymedfilt) ("سیگنال اصلی","فیلتر میانه")

Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent original signal, median filter.

حذف دور از طریق فیلتر همپل

بسیاری از فیلترها به Outliers حساس هستند. فیلتر که از نزدیک با فیلتر میانه ارتباط دارد ، فیلتر Hampel است. این فیلتر بدون صاف کردن بیش از حد داده ها به حذف دور از سیگنال کمک می کند.

برای دیدن این موضوع ، ضبط صوتی سوت قطار را بار کنید و برخی از سنبله های سر و صدای مصنوعی را اضافه کنید:

بارقطار - تعلیم دادنy (1: 400: پایان) = 2. 1 ؛طرح (Y)

Figure contains an axes object. The axes object contains an object of type line.

از آنجا که هر سنبله ای که ما معرفی کردیم فقط یک نمونه از یک نمونه دارد ، می توانیم از یک فیلتر میانه فقط سه عنصر برای از بین بردن سنبله استفاده کنیم.

نگه داشتنonطرح (medfilt1 (y ، 3)) نگه داریداز رویافسانه("سیگنال اصلی","سیگنال فیلتر شده")

Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent original signal, filtered signal.

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

افسانه Hampel (Y ، 13) ('محل','بهترین')

Figure contains an axes object. The axes object contains 3 objects of type line. One or more of the lines displays its values using only markers These objects represent original signal, filtered signal, outliers.

فقط قسمتهای خارج از سیگنال اصلی حذف می شوند.

بیشتر خواندن

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

مرجع: کندال ، موریس جی. ، آلن استوارت و جی. کیت اربد. نظریه پیشرفته آمار ، جلد. 3: طراحی و تجزیه و تحلیل و سری زمانی. چاپ چهارم. لندن: مک میلان ، 1983.

همچنین ببینید

نمونه باز

شما یک نسخه اصلاح شده از این مثال دارید. آیا می خواهید این مثال را با ویرایش های خود باز کنید؟

فارکس کاران ایران...
ما را در سایت فارکس کاران ایران دنبال می کنید

برچسب : نویسنده : ناهید طباطبایی بازدید : <-PostHit-> تاريخ : پنجشنبه 16 شهريور 1402 ساعت: 14:36