@mina,
سلام
این سوال خیلی کلیه. بسته به اینکه سیستم خطی باشه یا غیرخطی، نامعینی داشته باشه یا نه و ... تحلیل پایداری با LMI متفاوته ولی نقطه مشترک برای تمام حالتها استفاده از روش مستقیم لیاپونوف هستش.
به نظرم بهتره از حالت ساده (سیستم خطی بدون نامعینی) که جلسه 5 مطرح کردم شروع بکنید
با عرض سلام خدمت آقای دکتر
میشه خواهش کنم من رو راهنمایی کنید که برای بررسی پایداری مجانبی یک سیستم با روش lmi از چه دستوری و چطور استفاده کنم
سپاس فراوان
از پاسختون ممنونم استاد
در واقع فیلترها به صورت گسسته طراحی شدهاند ولی زمان نمونه برداری T را نمی توانم از میکرو ثانیه بزرگتر بگیرم. آیا راه حلی وجود دارد.
نعیم(مهمان)
–
@نعیم,
این نرم افزار کد فعال سازی می خواد. میشه لطف کنید بفرستید. من با مدیریت تماس گرفتم ولی جوابگو نبودند
علی جوادی
–
@نعیم,
سلام
از این پلیر استفاده کنید:
https://www.controlref.com/player/
اگر مشکلی بود با مدیر سایت تماس بگیرید
نعیم(مهمان)
–
سلام. فرمت جلسه 4 zxp هستش. چطور بازش کنم؟
علی جوادی
–
@حسین,
سلام
من متوجه نشدم که شما از ekf گسسته استفاده کردید یا هیبریدی. از طرفی گفتید گسسته و بعد گفتید رانگ کوتا. اگر از روش هیبریدی استفاده کنید dt اهمیتی نداره چقدر کوچک باشه چیزی که مهمه T یا زمان نمونه برداری هست.
با توجه به اینکه گفتید معادلات اندازهگیری خطی است، بنابراین ممکنه فیلترهای مختلف غیرخطی نسبت به هم بهبود خاصی نداشته باشند. هر چی غیرخطی گری سیستم بالاتر باشه، تفاوت روشها خودشو نشون میده.
در مورد تولید جمعیت اولیه هم حق با شماست. در مورد دوم که اشاره کردید تابع f_fun نباید استفاده بشه ولی مورد سوم و اول درست هستند. مورد اول در کدهای خود dan simon استفاده شده و من هم از مورد سوم استفاده کردم. در واقع روشهای اول و سوم معادل هم هستند اما با کدنویسی مختلف انجام شده و شما هم ممکنه به یک روش دیگه همین کار رو بکنید. داخل مثال کتاب (و کد خود dan simon) چون سیستم اسکالر هستش، از کد اول میشه استفاده کرد ولی اگه اسکالر نباشه دیگه نمیشه از این کد استفاده کرد و باید اصلاح بشه.
دستور corr_rnd رو برای کلیت قضیه و راحتی معرفی کردم والا اگر ماتریس کواریانس قطری باشه از همون دستوری که گفتید میشه استفاده کرد و اجباری به استفاده از دستور corr_rnd نیست.
ممنون از دقت نظر شما
حسین(مهمان)
–
با سلام و احترام. چند سوال در طراحی فیلترها داشتم. اول اینکه فیلتر ekf و ukf رو پیاده سازی کردم ولی زمان نمونه برداری برای ekf بزرگتر از 5e-6 و برای ukf از 5e-8 بزرگتر نمی تواند باشد و واگرا میشوند. با توجه به اینکه در عمل سنسور اندازه گیری در حد میلی ثانیه هست آیا راه حلی وجود دارد که زمان نمونه برداری را افزایش داد.( فیلترها به صورت گسسته طراحی شده اند). آیا تغییر روش های گسسته سازی مثل ران کوتا و یا ثابت گرفتن اندازه گیری ها بین دو زمان نمونه برداری که در حد میلی ثانیه هستند مشکل را رفع می کند.
سوال دوم اینکه ekf و مرتبه دوم و تکراری آن را پیاده سازی کردم ولی مانند هم شدند. آیا این به دلیل اینست که معادلات اندازه گیری خطی اند و کلا به هیچ طریقی با فیلتر مرتبه بالا بهبود پیدا نمی کند.
آخرین سوال اینکه در روش PF شما X اولیه را به صورت های مختلف انتخاب کردید. آیا تفاوتی دارند؟
for i = 1 : N
xpart(i) = x + sqrt(P) * randn
end
یا
for i = 1:N
( W(:,i) = corr_rnd(zeros(nw,1),P0
end
(X = f_fun(repmat(x0,1,N),W,1
یا
for i = 1:N
(W(:,i) = corr_rnd(zeros(nw,1),P0
end
X = repmat(x0,1,N)+W
همچنین آیا می توان به جای دستور corr_rnd از دستور (sqrt(P)*randn(n,1 چون با دستور اول خطای نامعینی می دهد ولی با مورد دوم حل می شود.
با تشکر
@علی جوادی, خیلی ممنون به خاطر راهنمایی های خوبتون. و خیلی ممنون به خاطر اموزش های خوبتون هم. این درس به بهترین شکل ممکن ارائه شده.
علی جوادی
–
@الهام,
سلام
این خطا معمولا زمانی دیده میشه که فیلتر واگرا بشه. واگرایی هم علتهای مختلفی میتونه داشته باشه. مثلا ممکنه اصلا سیستم رویت پذیر نباشه یا پارامترهای طراحی درست انتخاب نشه مثلا زمان نمونه برداری بزرگ باشه یا پارامترهای فیلتر مناسب نباشه. حتی ممکنه اشتباهی داخل کد نویسی وجود داشته باشه که فیلتر واگرا بشه.
شاید بهتر باشه یه فیلتر دیگه مثل EKF رو پیاده کنید و اگر جواب داد یعنی سیستم رویت پذیره و فقط تو پیاده سازی روش UKF مشکل دارید ولی اگر جواب نداد یعنی رویت پذیری سیستم زیر سواله.
قبل از هر کاری زمان نمونه برداری رو کم کنید و پارامترهای فیلتر رو تغییر بدید و اگر جواب نگرفتید، یه روش دیگه پیاده کنید
الهام(مهمان)
–
سلام
ببخشید من UKF رو با استفاده از اموزش های شما برای سیستم خودم طراحی کردم. اما یه مشکلی دارم. این کد چولسکی رو برای تولید نقاط سیگما در نظر داشته باشید:
[root,p] = chol(3*Pukf);
Pukf که همون محاسبه کواریانس هست رو در ابتدا با توجه به سیستمم اینجوری انتخاب کردم:
Pukf = diag([100 1 1]);
این ماتریس مثبت معین هست، بنابراین در اجرای حلقه هیچ مشکلی وجود نداره در انتها وقتی از معادلات بروز رسانی اندازه گیری برای محاسبه تخمین و کواریانس استفاده شده Pukf به دست آمده به صورت زیر هست:
Pukf =
1.0e+03 *
0 0.0000 -0.0000
0.0000 0.0086 0.1672
-0.0000 0.1672 4.3271
که برای محاسبه نقاط سیگما برای تکرار دوم هست این ارور رو میده:
chol(S_n*Pukf)<<
Error using chol
Matrix must be positive definite.
میشه راهنمایی بفرمایید برای حل این مشل باید چیکار کنم؟ داره به مقدار Pukf محاسبه شده گیر میده !
علی جوادی
–
@یاسمن,
سلام
خواهش میکنم
میتونید همون لایسنس رو تو یه کامپیوتر دیگه تست کنید ببینید که مشکل از لایسنس هستش یا احیانا متلب و یا ویندوز.
یاسمن(مهمان)
–
@علی جوادی,
سلام
سپاس از وقتی که برای پاسخ دهی قرار می دهید.
نسخه جدید یالمیپ و موزک را هم نصب کردم اما یالمیپ با موزک کار نمی کند و متاسفانه دلیلش را متوجه نشدم.
بهرحال از شما سپاسگزارم.
علی جوادی
–
@یاسمن,
این عبارتی که شما تحت عنوان خطا معرفی کردید در واقع یک هشداره و نه خطا. معمولا خطا مانع کار کردن کد میشه نه هشدار. ظاهرا لایسنس شما داره کار میکنه ولی فقط برای استفاده از fusion باید طبق راهنمای زیر عمل کنید:
https://goo.gl/gfwK6a
البته من تا حالا از fusion استفاده نکردم و اطلاعات بیشتری در موردش ندارم.
در همین حالت ببینید که تولباکس یالمیپ با mosek کار میکنه یا نه. اگر کار نکرد طبق راهنما عمل کنید
mina (مهمان) –
@علی جوادی</a خیلی ممنون از راهنمایی تون
علی جوادی –
@mina, سلام این سوال خیلی کلیه. بسته به اینکه سیستم خطی باشه یا غیرخطی، نامعینی داشته باشه یا نه و ... تحلیل پایداری با LMI متفاوته ولی نقطه مشترک برای تمام حالتها استفاده از روش مستقیم لیاپونوف هستش. به نظرم بهتره از حالت ساده (سیستم خطی بدون نامعینی) که جلسه 5 مطرح کردم شروع بکنید
مدیر سایت –
@نعیم, خواهش میکنم. موفق باشید
mina (مهمان) –
با عرض سلام خدمت آقای دکتر میشه خواهش کنم من رو راهنمایی کنید که برای بررسی پایداری مجانبی یک سیستم با روش lmi از چه دستوری و چطور استفاده کنم سپاس فراوان
نعیم (مهمان) –
@مدیر سایت, سلام.مشکلش حل شد.ممنون
مدیر سایت –
@حسین, شاید دینامیک سیستم سریعه و با زمان نمونه برداری بزرگ جواب نمیده
مدیر سایت –
@نعیم, من پیگیری میکنم بهتون اطلاع میدم
حسین (مهمان) –
از پاسختون ممنونم استاد در واقع فیلترها به صورت گسسته طراحی شدهاند ولی زمان نمونه برداری T را نمی توانم از میکرو ثانیه بزرگتر بگیرم. آیا راه حلی وجود دارد.
نعیم (مهمان) –
@نعیم, این نرم افزار کد فعال سازی می خواد. میشه لطف کنید بفرستید. من با مدیریت تماس گرفتم ولی جوابگو نبودند
علی جوادی –
@نعیم, سلام از این پلیر استفاده کنید: https://www.controlref.com/player/ اگر مشکلی بود با مدیر سایت تماس بگیرید
نعیم (مهمان) –
سلام. فرمت جلسه 4 zxp هستش. چطور بازش کنم؟
علی جوادی –
@حسین, سلام من متوجه نشدم که شما از ekf گسسته استفاده کردید یا هیبریدی. از طرفی گفتید گسسته و بعد گفتید رانگ کوتا. اگر از روش هیبریدی استفاده کنید dt اهمیتی نداره چقدر کوچک باشه چیزی که مهمه T یا زمان نمونه برداری هست. با توجه به اینکه گفتید معادلات اندازهگیری خطی است، بنابراین ممکنه فیلترهای مختلف غیرخطی نسبت به هم بهبود خاصی نداشته باشند. هر چی غیرخطی گری سیستم بالاتر باشه، تفاوت روشها خودشو نشون میده. در مورد تولید جمعیت اولیه هم حق با شماست. در مورد دوم که اشاره کردید تابع f_fun نباید استفاده بشه ولی مورد سوم و اول درست هستند. مورد اول در کدهای خود dan simon استفاده شده و من هم از مورد سوم استفاده کردم. در واقع روشهای اول و سوم معادل هم هستند اما با کدنویسی مختلف انجام شده و شما هم ممکنه به یک روش دیگه همین کار رو بکنید. داخل مثال کتاب (و کد خود dan simon) چون سیستم اسکالر هستش، از کد اول میشه استفاده کرد ولی اگه اسکالر نباشه دیگه نمیشه از این کد استفاده کرد و باید اصلاح بشه. دستور corr_rnd رو برای کلیت قضیه و راحتی معرفی کردم والا اگر ماتریس کواریانس قطری باشه از همون دستوری که گفتید میشه استفاده کرد و اجباری به استفاده از دستور corr_rnd نیست. ممنون از دقت نظر شما
حسین (مهمان) –
با سلام و احترام. چند سوال در طراحی فیلترها داشتم. اول اینکه فیلتر ekf و ukf رو پیاده سازی کردم ولی زمان نمونه برداری برای ekf بزرگتر از 5e-6 و برای ukf از 5e-8 بزرگتر نمی تواند باشد و واگرا میشوند. با توجه به اینکه در عمل سنسور اندازه گیری در حد میلی ثانیه هست آیا راه حلی وجود دارد که زمان نمونه برداری را افزایش داد.( فیلترها به صورت گسسته طراحی شده اند). آیا تغییر روش های گسسته سازی مثل ران کوتا و یا ثابت گرفتن اندازه گیری ها بین دو زمان نمونه برداری که در حد میلی ثانیه هستند مشکل را رفع می کند. سوال دوم اینکه ekf و مرتبه دوم و تکراری آن را پیاده سازی کردم ولی مانند هم شدند. آیا این به دلیل اینست که معادلات اندازه گیری خطی اند و کلا به هیچ طریقی با فیلتر مرتبه بالا بهبود پیدا نمی کند. آخرین سوال اینکه در روش PF شما X اولیه را به صورت های مختلف انتخاب کردید. آیا تفاوتی دارند؟ for i = 1 : N xpart(i) = x + sqrt(P) * randn end یا for i = 1:N ( W(:,i) = corr_rnd(zeros(nw,1),P0 end (X = f_fun(repmat(x0,1,N),W,1 یا for i = 1:N (W(:,i) = corr_rnd(zeros(nw,1),P0 end X = repmat(x0,1,N)+W همچنین آیا می توان به جای دستور corr_rnd از دستور (sqrt(P)*randn(n,1 چون با دستور اول خطای نامعینی می دهد ولی با مورد دوم حل می شود. با تشکر
علی جوادی –
@الهام, خواهش میکنم. شما لطف دارید موفق باشید
الهام (مهمان) –
@علی جوادی, خیلی ممنون به خاطر راهنمایی های خوبتون. و خیلی ممنون به خاطر اموزش های خوبتون هم. این درس به بهترین شکل ممکن ارائه شده.
علی جوادی –
@الهام, سلام این خطا معمولا زمانی دیده میشه که فیلتر واگرا بشه. واگرایی هم علتهای مختلفی میتونه داشته باشه. مثلا ممکنه اصلا سیستم رویت پذیر نباشه یا پارامترهای طراحی درست انتخاب نشه مثلا زمان نمونه برداری بزرگ باشه یا پارامترهای فیلتر مناسب نباشه. حتی ممکنه اشتباهی داخل کد نویسی وجود داشته باشه که فیلتر واگرا بشه. شاید بهتر باشه یه فیلتر دیگه مثل EKF رو پیاده کنید و اگر جواب داد یعنی سیستم رویت پذیره و فقط تو پیاده سازی روش UKF مشکل دارید ولی اگر جواب نداد یعنی رویت پذیری سیستم زیر سواله. قبل از هر کاری زمان نمونه برداری رو کم کنید و پارامترهای فیلتر رو تغییر بدید و اگر جواب نگرفتید، یه روش دیگه پیاده کنید
الهام (مهمان) –
سلام ببخشید من UKF رو با استفاده از اموزش های شما برای سیستم خودم طراحی کردم. اما یه مشکلی دارم. این کد چولسکی رو برای تولید نقاط سیگما در نظر داشته باشید: [root,p] = chol(3*Pukf); Pukf که همون محاسبه کواریانس هست رو در ابتدا با توجه به سیستمم اینجوری انتخاب کردم: Pukf = diag([100 1 1]); این ماتریس مثبت معین هست، بنابراین در اجرای حلقه هیچ مشکلی وجود نداره در انتها وقتی از معادلات بروز رسانی اندازه گیری برای محاسبه تخمین و کواریانس استفاده شده Pukf به دست آمده به صورت زیر هست: Pukf = 1.0e+03 * 0 0.0000 -0.0000 0.0000 0.0086 0.1672 -0.0000 0.1672 4.3271 که برای محاسبه نقاط سیگما برای تکرار دوم هست این ارور رو میده: chol(S_n*Pukf)<< Error using chol Matrix must be positive definite. میشه راهنمایی بفرمایید برای حل این مشل باید چیکار کنم؟ داره به مقدار Pukf محاسبه شده گیر میده !
علی جوادی –
@یاسمن, سلام خواهش میکنم میتونید همون لایسنس رو تو یه کامپیوتر دیگه تست کنید ببینید که مشکل از لایسنس هستش یا احیانا متلب و یا ویندوز.
یاسمن (مهمان) –
@علی جوادی, سلام سپاس از وقتی که برای پاسخ دهی قرار می دهید. نسخه جدید یالمیپ و موزک را هم نصب کردم اما یالمیپ با موزک کار نمی کند و متاسفانه دلیلش را متوجه نشدم. بهرحال از شما سپاسگزارم.
علی جوادی –
@یاسمن, این عبارتی که شما تحت عنوان خطا معرفی کردید در واقع یک هشداره و نه خطا. معمولا خطا مانع کار کردن کد میشه نه هشدار. ظاهرا لایسنس شما داره کار میکنه ولی فقط برای استفاده از fusion باید طبق راهنمای زیر عمل کنید: https://goo.gl/gfwK6a البته من تا حالا از fusion استفاده نکردم و اطلاعات بیشتری در موردش ندارم. در همین حالت ببینید که تولباکس یالمیپ با mosek کار میکنه یا نه. اگر کار نکرد طبق راهنما عمل کنید