همونطور که میدانید بحث تخمینگر (Estimator) یا رویتگر (Observer) نه تنها در مهندسی کنترل (Control Engineering) و مهندسی برق (Electrical Engineering)، بلکه در تمامی رشتههای مهندسی و حتی غیر مهندسی از جمله مهندسی مکانیک (Mechanical Engineering)، مهندسی شیمی (Chemical Engineering)، مهندسی هوافضا (Aerospace Engineering)، روباتیک (Robotics)، اقتصاد (Economics)، بومشناسی (Ecology) و زیستشناسی (Biology) کاربرد فراوانی دارد. از طرف دیگر، فیلتر کالمن (Kalman Filter) به عنوان یک تخمینگر بهینه پرکاربردترین و محبوبترین رویتگر در تمامی کاربردهاست که مقالات و کتابهای بسیاری در مورد آن نوشته شده و هنوز هم کارهای تحقیقاتی زیادی در مورد آن انجام میشود. البته بحث تخمین به فیلتر کالمن و مشتقات آن محدود نشده و تخمینگرهای زیاد دیگری هم وجود دارند که استفاده میشوند.
من به عنوان یک مهندس کنترل در درسهای مختلفی که گذراندهام، به صورت جسته گریخته با یک سری اطلاعات گسسته در مورد تخمینگرها مواجه شدم؛ از جمله بحث رویتگرهای لیونبرگر در درس کنترل مدرن یا فیلتر کالمن در درس کنترل فرآیندهای اتفاقی، اما هیچوقت به صورت منظم و سازمان یافته تخمینگرها را نشناختم. بنابراین قصد دارم در این سری فیلمها، سیر تا پیاز تخمینگرها، انواع، کاربردها، نحوه تحلیل و طراحی، نحوه پیادهسازی در متلب و هر چیزی که ممکن است در این مسیر مورد نیاز باشد، خدمت شما تقدیم کنم.
برای این کار یکی از کتابهای خیلی خوب و جامع را به عنوان مرجع اصلی این سری فیلمها در نظر گرفتم. نام کامل این کتاب “تخمینگرهای بهینه حالت، کالمن، ∞H و روشهای غیرخطی” بوده و نویسند آن Dan Simon از دانشگاه کلیولند است. این کتاب مزایای زیادی دارد که در جلسه اول به بعضی از آنها اشاره کردهام. علاوه بر این کتاب که جنبه تئوری بحث را از آن دنبال میکنم، یک تولباکس (بر اساس متلب) رایگان و خیلی مفید را خدمت شما معرفی میکنم که شامل بسیاری از روشهای موجود بوده و از آن میتوان برای پیادهسازی اکثر تخمینگرها استفاده کرد. نام این تولباکس “فیلترینگ بهینه با استفاده از فیلترهای کالمن و اسموترها” بوده و تهیه کننده اصلی آن Simo Sarkka از دانشگاه آلتو فنلاند است که خودش در زمینه فیلتر کالمن و هموارسازها تحقیقات زیادی انجام داده است. با توجه به اینکه این تولباکس تمام روشهای موجود در کتاب رو پوشش نمیدهد، توابع مورد نیاز برای پیاده سازی این روشها به تدریج معرفی شده و نحوه اضافه کردن آنها به تولباکس و نحوه استفاده از آنها به طور کامل توضیح داده میشود.
به صورت خلاصه مباحث زیر در این سری فیلمها مورد بررسی قرار می گیرند:
- مقدمات ریاضی از جمله جبرخطی و سیستمهای دینامیکی و فرآیندهای تصادفی
- تخمین حداقل مربعات (Least Squares Estimation)
- انتشار حالت و کواریانس (Propagation of States and Covariance)
- فیلتر کالمن گسسته (Discrete Kalman Filter) و هموارساز آن (Kalman Smoother)
- انواع فرمولبندیهای دیگر فیلتر کالمن
- فیلتر کالمن برای سیستمهای دارای نویز رنگی (Colored Noise) و همبسته (Correlated)
- فیلتر کالمن پیوسته Kalman Bucy Filter) KBF)
- فیلتر ∞H
- ترکیب فیلتر ∞H و کالمن
- فیلتر کالمن توسعه یافته Extended Kalman Filter) EKF) و هموارساز آن (EKF Smoother)
- فیلتر کالمن بدون بو! Unscented Kalman Filter) UKF) و هموارساز آن (UKF Smoother)
- فیلتر ذرهای (Particle Filter)
- فیلتر Extended Kalman Particle Filter) EKPF)
- فیلتر کالمن مکعبی Cubature Kalman Filter) CKF) و هموارساز آن (CKF Smoother)
- فیلتر کالمن گاوس-هرمیت Gauss-Hermite Kalman Filter) GHKF) و هموارساز آن (GHKF Smoother)
- فیلتر کالمن تفاضل مرکزی Central Difference Kalman Filter) CDKF)
- فیلتر کالمن برای سیستمهای دارای مدل چندگانه (سیستمهای سویچینگ مارکوف) Interacting Multiple Models Filters) IMM)
پیش نیازها: آشنایی اولیه با کدنویسی در متلب
لطفا قبل از دیدن ادامه پست حتما این ویدئو را ببینید:
برای اطلاع از فهرست موضوعی تمامی جلسات اینجا کلیک کنید
نکته آخر اینکه شاید برایتان جالب باشد که دکتر کیوان افشار مقاله زیر را با راهنمایی دکتر جوادی از جلسه 108 این مجموعه چاپ کرده است.
Mass estimation and adaptive output feedback control of nonlinear electromagnetic levitation system
برای دیدن جزئیات هر جلسه شامل: پیش نمایش هر جلسه، موضوع هر جلسه، مدت زمان هر جلسه و …. به تب فهرست جلسات بروید
برای خرید یک یا چند فصل به تب خرید موضوعی بروید.
- لینک دانلود فایل بلافاصله بعد از پرداخت وجه به نمایش در خواهد آمد.
- همچنین لینک دانلود به ایمیل شما ارسال خواهد شد به همین دلیل ایمیل خود را به دقت وارد نمایید.
- ممکن است ایمیل ارسالی به پوشه اسپم یا Bulk ایمیل شما ارسال شده باشد.
- در صورتی که به هر دلیلی موفق به دانلود فایل مورد نظر نشدید با ما تماس بگیرید.
ساسان امینی
سلام
با تشکر از مطالبتون در مورد Ensemble kalman filter مطلبی ندارید؟
علی جوادی
@ساسان امینی,
سلام
در این مجموعه EnKF رو پوشش ندادم. شاید در آینده فرصت شد و در یک مجموعه جدا بهش پرداختم. علی الحساب میتونید به آدرس زیر سر بزنید:
http://enkf.nersc.no/
sia
درود/ بنده ایمیل حاوی اطلاع رسانی کد تخفیف به مناسبت امام رضا رو الان مشاهده کردمْ از شما خواهش میکنم فعالش کنید تا بتونم استفاده کنم-شش رو ز گذشته لطف کنید فعال کنید
مدیر سایتادمین سایت ( مالک تایید شده )
@sia,
سلام
متاسفانه زمان تخفیف تمام شده و شما منتظر تخفیفات هفتگی باشید که در کانال اعلام خواهد شد
فرزاد
سلام ، امیدوارم حالتون خوب باشه، خواستم بپرسم جزوه فیلتر کالمن که یه سری گفتین قراره تهیه بشه، اماده شده؟ کی میزارین توی سایت؟ یا اینکه اماده کردن جزوه کنسل شده؟
مدیر سایتادمین سایت ( مالک تایید شده )
@فرزاد,
سلام
108 جلسه فیلم آموزشی در سایت آماده شد از این مجموعه کاملتر وجود خارجی نداره. ضمن اینکه نت هایی که ایشان در حین آموزش داشتن داخل جلسات مربوطه هست و این یک جزوه کامل هست.
اما اینکه به صورت مجزا جزوه ای آماده شده باشه خیر
سپاسگزارم
امین
سلام
اقای جوادی شما SRUKF رو هم در این فیلم های اموزشی درس میدید؟
علی جوادی
@امین,
سلام
نسخه SR فقط برای فیلتر کالمن خطی در جلسات 23 تا 25 مفصل بحث شده و تابعش معرفی شده و مثال هم داره اما برای فیلترهای دیگه از جمله UKF نسخه SR بحث نشده چون داخل کامپیوتر جوابهای فیلتر UKF و SRUKF یکسان هستند. البته میتونید به کتاب Van der Merwe مراجعه کنید که الگوریتم SRUKF اونجا کامل گفته شده
فاروق
سلام استاد خدا قوت ، من دیروز فایل های 18 و 19 فیلتر کالمن رو خریدم ولی توی اجرا در متلب error میده ، مشکل چیه؟
علی جوادی
@فاروق,
سلام
خطا دقیقا چیه؟
فاروق
در تمرین 5-11 این خطا رو دارم :
Undefined function or variable ‘gauss_rnd’.
Error in Exercise_5_11 (line 30)
x(:,i) = F*x(:,i-1) + gauss_rnd(zeros(nx,1), Q);
که مربوط به اینه که تابع gauss_rnd رو نمیشناسه و set patch هم زدم و بعد add folder و به روش شما ، save و close . در نهایت می دیدم اصلا add نشده . وچندین بار اینو تکرار کردم باز نشد.
در تمرین 5-12 هم این خطا رو دارم:
Undefined function or variable ‘lti_disc’.
Error in Exercise_5_12 (line 10)
[F,Q]=lti_disc(A,L,Qctild,dt)
اگر راهنمایی کنید ممنون میشم.
علی جوادی
@فاروق,
قبل از اجرای کدها حتما باید تولباکس به درستی نصب شده باشه تا بتونید از دستوراتش استفاده کنید. چیزی که به ذهنم میرسه اینه که شما تولباکس رو داخل یک پوشه با نام فارسی قرار دادید. اگر در مسیری که add path میکنید هر اسم فارسی هست، به حروف انگلیسی تغییر بدید و دوباره نصب کنید
فاروق
حلش کردم ممنون
علی جوادی
@فاروق,
موفق باشید
سیویل
من می خوام در مورد Data Assimilation کار کنم و رشتم هم عمران هست. حالا میخوام بدونم این آموزش تخمین گر شما ربطی به اون داره یا نه و میتونه کمکم کنه؟
علی جوادی
@سیویل,
سلام
یکی از روشهای Data assimilation استفاده از EnKF هستش ولی من در این مجموعه به EnKF اشاره نکردم. برای اطلاعات بیشتر در مورد EnKF و کاربردش در Data assimilation به آدرس زیر سر بزنید:
http://enkf.nersc.no
احمد جعفرزاده
با سلام
من به دنبال بهبود نتایج شبیه سازی ANN با استفاده از فیلتر کالمن هستم. هدف این است که تأثیر فیلتر کالمن را روی جوابهای خروجی شبکه عصبی بررسی کنم. لطفاض راهنماییم کنید و یا در صورت لازم آموزش مورد نظر رو مشخص بفرمایید.
پیشاپیش از همکاری شما کمال تشکر را دارم
علی جوادی
@احمد جعفرزاده,
سلام
سوالتون خیلی کلیه. معلوم نیست سیستم خطیه یا غیرخطی، گسسته یا پیوسته یا هیبریدی؟ بعد که اینارو تعیین کردید و روش مورد نظر رو انتخاب کردید، به فهرست کتاب و توضیحات هر جلسه مراجعه کنید تا ببینید کدوم جلسه به کارتون میاد
احمد جعفرزاده
@علی جوادی,
سلام سیستم شبکه عصبی یک سیستم غیرخطی به حساب میاد. نوع مدلسازی که انجام شده هم روی شبیه سازی سری داده های بارش مشاهداتی روزانه است. 3000 داده مشاهداتی داریم و با استفاده از ANN به دنبال شبیه سازی اون ها هستیم. البته باید توجه داشت که ANN برای شبیه سازی این داده های مشاهداتی از یک سری ورودی ها (سرعت باد، رطوبت، رطوبت نسبی در ارتفاع های مختلف، توپوگرافی) استفاده میکنه و بارندگی رو به عنوان خروجی به ما میده.
حالا من در مقالات مختلف دیدم که نتایج شبیه سازی رو با استفاده از فیلتر کالمن بهبود میدهند مثل این مقاله
“Wind Speed Forecasting Using Hybrid ANN- Kalman Filter Technique” که در آن خروجی های ANN با استفاده از EnKF بهبود پیدا کرده.
بازم ممنون بابت پاسختون
علی جوادی
@احمد جعفرزاده,
با سلام و تشکر از لطف شما
طبق مقاله ای که ذکر کردید، سیستم شما غیرخطی و گسسته هستش و تمام روشهای غیرخطی که ارائه شده میتونه استفاده بشه: EKF (جلسه 72)، UKF (جلسه 84)، CKF (جلسه 99)، GHKF (جلسه 101) و CDKF (جلسه 104). البته قبلش جلسه 17 رو ببینید تا نحوه نصب تولباکس ekf/ukf رو یاد بگیرید.
مصطفی
سلام
آیا میشه مباحث مربوط به حالت گسسته رو ندیده گرفت ؟ در یادگیری گسستگی ایجاد نمیشه ؟
با تشکر
علی جوادی
@مصطفی,
سلام
اگر با روند دستورات تولباکس آشنایی داشته باشید، بعید میدونم مشکلی پیش بیاد چون هر دستوری برای حالت هیبریدی نیاز بوده معرفی کردم و داخل مثال نحوه استفاده از اونها توضیح داده شده. میتویند جلسه مربوط به فیلتر هیبریدی رو ببینید و اگر نیاز بود به جلسات قبلش مراجعه کنید
علی
@علی, منظورم این هست رابطه من به صورت
(y_(t )=β_t x_t+ε_(t ,
(β_(t+1)=β_t+δ_(t
میباشد که xوy شاخص کل و شاخص گروه بانکها میباشد در فاصله زمانی ۱۳۸۸تا ۱۳۹۴ و هدفم پیدا کردن بتای متغیر با زمان در این بازه زمانی است لطفا بفرمایید فیلتر من گسسته و خطی میباشد؟
علی جوادی
@علی,
بله، سیستم شما هم گسسته و هم خطی است.
توصیه میکنم جلسات 79 و 88 رو ببینید چون خیلی مفصل در مورد تخمین پارامتر و دوگانه توضیح دادم. مساله شما هم در واقع یک مساله تخمین پارامتر است. برای تعیین واریانس نویز δ توصیه میکنم از روش رابینز-مونرو که در جلسه 88 گفتم استفاده کنید تا بهترین نتیجه رو بگیرید. البته تو جلسه 79 فیلتر EKF و در جلسه 88 فیلتر UKF استفاده شده که برای شما همون فیلتر خطی گسسته مورد نیازه و به فیلترهای غیرخطی نیاز ندارید.
علی
سلام من رشته اقتصاد میخونم و از فیلتر کالمن استفاده کردم برای پیدا کردن ضریب متغیر بازمان برای دو شاخص بورس این فیلتر کالمن از نوع گسسته میباشد که نرم افزار جوابهایش را به من داده است؟ داده ها شاخص های روزانه میباشد بین دو سال 1388 و 1394
علی جوادی
@علی,
سلام
من متوجه سوال نشدم!