این مثال نشان می دهد که چگونه می توان از فیلترهای متوسط در حال حرکت و تغییر شکل مجدد برای جداسازی اثر اجزای دوره ای زمان روز در خواندن دمای ساعتی و همچنین حذف نویز خط ناخواسته از اندازه گیری ولتاژ حلقه باز استفاده کرد. مثال همچنین نشان می دهد که چگونه می توان سطح یک سیگنال ساعت را هنگام حفظ لبه ها با استفاده از فیلتر میانه صاف کرد. مثال همچنین نحوه استفاده از فیلتر Hampel را برای از بین بردن فضای بزرگ نشان می دهد.
هموار سازی نحوه کشف الگوهای مهم در داده های خود در حالی که چیزهایی را که بی اهمیت هستند (یعنی سر و صدا) کشف می کنیم. ما برای انجام این هموار سازی از فیلتر استفاده می کنیم. هدف از هموار سازی ایجاد تغییرات آهسته در ارزش به گونه ای است که دیدن روند داده های ما آسان تر است.
گاهی اوقات وقتی داده های ورودی را بررسی می کنید ، ممکن است بخواهید داده ها را صاف کنید تا بتوانید روند در سیگنال را ببینید. در مثال ما مجموعه ای از خوانش های دما را در سالیوس هر ساعت در فرودگاه لوگان در بوستون برای کل ماه ژانویه 2011 گرفته ایم.
باربوسترمروز = (1: 31*24)/24 ؛محور (روز ، روز) محورتنگylabel ("دما ( circc)") xlabel ("زمان سپری شده از 1 ژانویه 2011 (روزها)") عنوان("دمای لامپ خشک فرودگاه لوگان (منبع: NOAA)")

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

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

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

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

انواع دیگر فیلترهای متوسط در حال حرکت ، هر نمونه را به طور مساوی وزن نمی کنند.
یکی دیگر از فیلترهای رایج از گسترش دوتایی [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)")

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

برای یک روز در خوانش ها بزرگنمایی کنید.
محور ([3 4-5 2])

توجه داشته باشید که با صاف کردن داده ها ، مقادیر شدید تا حدودی قطع شده است.
برای ردیابی سیگنال کمی دقیق تر ، می توانید از یک فیلتر متوسط در حال حرکت وزنی استفاده کنید که سعی در ایجاد چند جمله ای از یک سفارش مشخص دارد بیش از تعداد مشخصی از نمونه ها به معنای حداقل مربعات.
به عنوان یک راحتی ، می توانید از عملکرد 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])

گاهی اوقات برای استفاده صحیح از میانگین در حال حرکت ، دوباره نمونه برداری از یک سیگنال مفید است.
در مثال بعدی ما ، ولتاژ حلقه باز را در ورودی یک ابزار آنالوگ در حضور تداخل از سر و صدای خط برق 60 هرتز AC نمونه برداری کردیم. ما ولتاژ را با نرخ نمونه برداری 1 کیلوهرتز نمونه برداری کردیم.
بارOpenLoop60hertzfs = 1000 ؛t = (0: numel (OpenLoopVoltage) -1) / fs ؛طرح (t ، OpenLoopVoltage) ylabel ("ولتاژ (V)") xlabel ('بار)') عنوان("اندازه گیری ولتاژ حلقه باز")

بیایید با استفاده از یک فیلتر متوسط در حال حرکت ، اثر نویز خط را حذف کنیم.
اگر یک فیلتر متوسط متحرک با وزن یکنواخت بسازید ، هر مؤلفه ای را که با توجه به مدت زمان فیلتر ، دوره ای است ، حذف می کند.
تقریباً 1000 /60 = 16. 667 نمونه در یک چرخه کامل 60 هرتز هنگام نمونه برداری در 1000 هرتز وجود دارد. بیایید سعی کنیم "دور هم جمع شویم" و از یک فیلتر 17 نقطه ای استفاده کنیم. این کار حداکثر فیلتر را در فرکانس اساسی 1000 هرتز / 17 = 58. 82 هرتز به ما می دهد.
طرح (t ، sgolayfilt (OpenLoopVoltage ، 1،17)) ylabel ("ولتاژ (V)") xlabel ('بار)') عنوان("اندازه گیری ولتاژ حلقه باز") افسانه("میانگین فیلتر حرکت در 58. 82 هرتز", . 'محل',"جنوب شرقی")

توجه داشته باشید که در حالی که ولتاژ به طور قابل توجهی صاف است ، اما هنوز هم حاوی یک موج کوچک 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 هرتز کار می کند", . 'محل',"جنوب شرقی")

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

میانگین متحرک و فیلترهای Savitzky-Golay به ترتیب در نزدیکی لبه های سیگنال ساعت اصلاح شده و بیش از حد درست است.
یک روش ساده برای حفظ لبه ها ، اما هنوز هم سطح صاف استفاده از فیلتر میانه است:
ymedfilt = medfilt1 (x ، 5 ،"کوتاه کردن") ؛طرح (t ، x ،.افسانه t ، ymedfilt) ("سیگنال اصلی","فیلتر میانه")

بسیاری از فیلترها به Outliers حساس هستند. فیلتر که از نزدیک با فیلتر میانه ارتباط دارد ، فیلتر Hampel است. این فیلتر بدون صاف کردن بیش از حد داده ها به حذف دور از سیگنال کمک می کند.
برای دیدن این موضوع ، ضبط صوتی سوت قطار را بار کنید و برخی از سنبله های سر و صدای مصنوعی را اضافه کنید:
بارقطار - تعلیم دادنy (1: 400: پایان) = 2. 1 ؛طرح (Y)
از آنجا که هر سنبله ای که ما معرفی کردیم فقط یک نمونه از یک نمونه دارد ، می توانیم از یک فیلتر میانه فقط سه عنصر برای از بین بردن سنبله استفاده کنیم.
نگه داشتنonطرح (medfilt1 (y ، 3)) نگه داریداز رویافسانه("سیگنال اصلی","سیگنال فیلتر شده")

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

فقط قسمتهای خارج از سیگنال اصلی حذف می شوند.
برای کسب اطلاعات بیشتر در مورد فیلتر و نمونه برداری ، به جعبه ابزار پردازش سیگنال مراجعه کنید.
مرجع: کندال ، موریس جی. ، آلن استوارت و جی. کیت اربد. نظریه پیشرفته آمار ، جلد. 3: طراحی و تجزیه و تحلیل و سری زمانی. چاپ چهارم. لندن: مک میلان ، 1983.
شما یک نسخه اصلاح شده از این مثال دارید. آیا می خواهید این مثال را با ویرایش های خود باز کنید؟
فارکس کاران ایران...
برچسب :
نویسنده : ناهید طباطبایی
بازدید : <-PostHit->