🍀🍀 آموزش کاربرد متلب در کنترل خطی و کنترل مدرن 🍀🍀
____________________________
💡 جلسه هفتم
💡 استاد : مهندس ورمقانی
____________________________
قسمت پنجم:
استفاده از ode45 برای یافتن پاسخ یک سیستم به ورودی و شرایط اولیه دلخواه:
در این قسمت میخواهیم پاسخ یک سیستم کلی (خطی – غیر خطی – متغیر با زمان) به ورودی و شرایط اولیه دلخواه را بدست آوریم.
برای این کار سیستم را توسط مدل فضای حالت مدل میکنیم. در واقع به طور ساده معدلات دیفرانسیل حاکم بر سیستم را مینویسیم. سپس از دستور ode45 برای حل این معادلات استفاده میکنیم.
مثال:
پاسخ سیستم زیر به ورودی( sin(2t و شرایط اولیه[ X0=[0.1,0.3 را بیابید.
A=[-5 -6;1 0] ; B=[1;0] ; C=[1 1] ; D=0
____________________________
#Modern_Control
#آموزش_مقدماتی
#جلسه_هفتم
#ورمقانی
#کنترل_مدرن
#مثال
© @MATLAB_tutorial
© @MATLAB_files
____________________________
____________________________
💡 جلسه هفتم
💡 استاد : مهندس ورمقانی
____________________________
قسمت پنجم:
استفاده از ode45 برای یافتن پاسخ یک سیستم به ورودی و شرایط اولیه دلخواه:
در این قسمت میخواهیم پاسخ یک سیستم کلی (خطی – غیر خطی – متغیر با زمان) به ورودی و شرایط اولیه دلخواه را بدست آوریم.
برای این کار سیستم را توسط مدل فضای حالت مدل میکنیم. در واقع به طور ساده معدلات دیفرانسیل حاکم بر سیستم را مینویسیم. سپس از دستور ode45 برای حل این معادلات استفاده میکنیم.
مثال:
پاسخ سیستم زیر به ورودی( sin(2t و شرایط اولیه[ X0=[0.1,0.3 را بیابید.
A=[-5 -6;1 0] ; B=[1;0] ; C=[1 1] ; D=0
____________________________
#Modern_Control
#آموزش_مقدماتی
#جلسه_هفتم
#ورمقانی
#کنترل_مدرن
#مثال
© @MATLAB_tutorial
© @MATLAB_files
____________________________
🍀🍀 آموزش کاربرد متلب در کنترل خطی و کنترل مدرن 🍀🍀
____________________________
💡 جلسه هفتم
💡 استاد : مهندس ورمقانی
____________________________
حل:
ابتدا یک تابع مینویسیم که سیستم را مدل میکند:
function dX=sys(t,X)
dX=zeros(2,1);
u=sin(2*t);
dX(1)=-5*X(1)-6*X(2)+u;
dX(2)=X(1);
سپس از دستور ode45 استفاده میکنیم:
X0=[0.1,0.3];
t=0:0.05:3;
[T,X]=ode45(@sys,t,X0);
y=X(:,1)+X(:,2); % y=c*x+d*u
plot(T,y)
grid on
xlabel('Time (sec)')
ylabel('Amplitude')
____________________________
#Modern_Control
#آموزش_مقدماتی
#جلسه_هفتم
#ورمقانی
#کنترل_مدرن
#مثال
© @MATLAB_tutorial
© @MATLAB_files
____________________________
http://yon.ir/oALE
____________________________
💡 جلسه هفتم
💡 استاد : مهندس ورمقانی
____________________________
حل:
ابتدا یک تابع مینویسیم که سیستم را مدل میکند:
function dX=sys(t,X)
dX=zeros(2,1);
u=sin(2*t);
dX(1)=-5*X(1)-6*X(2)+u;
dX(2)=X(1);
سپس از دستور ode45 استفاده میکنیم:
X0=[0.1,0.3];
t=0:0.05:3;
[T,X]=ode45(@sys,t,X0);
y=X(:,1)+X(:,2); % y=c*x+d*u
plot(T,y)
grid on
xlabel('Time (sec)')
ylabel('Amplitude')
____________________________
#Modern_Control
#آموزش_مقدماتی
#جلسه_هفتم
#ورمقانی
#کنترل_مدرن
#مثال
© @MATLAB_tutorial
© @MATLAB_files
____________________________
http://yon.ir/oALE
🍀🍀 آموزش کاربرد متلب در کنترل خطی و کنترل مدرن 🍀🍀
____________________________
💡 جلسه هفتم
💡 استاد : مهندس ورمقانی
____________________________
تذکر:
برتری روش اخیر این است که هیچ محدودیتی در نوع سیستم نداریم. یعنی سیستم میتواند غیرخطی نیز باشد.
مثال:
سیستمی با معادله دیفرانسیل غیرخطی زیر توصیف میشود. پاسخ آن را به ورودی sin(2t) بیابید. فرض کنید شرایط اولیه درصورت در نظر گرفتن x و مشتق آن به عنوان حالت های سیستم برابر[1,-2] باشد. و خروجی سیستم x میباشد.
x ̈=-x^2 x ̇+u
پاسخ:
ابتدا مدل فضای حالت آن را میابیم:
با فرض متغیرهای حالت به صورت x_1=x و x_2=x ̇ داریم.
x ̇_1=x_2
x ̇_2=〖-x_1^2 x〗_2+u
____________________________
#Modern_Control
#آموزش_مقدماتی
#جلسه_هفتم
#ورمقانی
#کنترل_مدرن
#مثال
© @MATLAB_tutorial
© @MATLAB_files
____________________________
http://yon.ir/oALE
____________________________
💡 جلسه هفتم
💡 استاد : مهندس ورمقانی
____________________________
تذکر:
برتری روش اخیر این است که هیچ محدودیتی در نوع سیستم نداریم. یعنی سیستم میتواند غیرخطی نیز باشد.
مثال:
سیستمی با معادله دیفرانسیل غیرخطی زیر توصیف میشود. پاسخ آن را به ورودی sin(2t) بیابید. فرض کنید شرایط اولیه درصورت در نظر گرفتن x و مشتق آن به عنوان حالت های سیستم برابر[1,-2] باشد. و خروجی سیستم x میباشد.
x ̈=-x^2 x ̇+u
پاسخ:
ابتدا مدل فضای حالت آن را میابیم:
با فرض متغیرهای حالت به صورت x_1=x و x_2=x ̇ داریم.
x ̇_1=x_2
x ̇_2=〖-x_1^2 x〗_2+u
____________________________
#Modern_Control
#آموزش_مقدماتی
#جلسه_هفتم
#ورمقانی
#کنترل_مدرن
#مثال
© @MATLAB_tutorial
© @MATLAB_files
____________________________
http://yon.ir/oALE
🍀🍀 آموزش کاربرد متلب در کنترل خطی و کنترل مدرن 🍀🍀
____________________________
💡 جلسه هفتم
💡 استاد : مهندس ورمقانی
____________________________
حال که مدل فضای حالت را داریم مانند مثال قبل یک تابع برای توصیف آن نوشته و سپس از دستور ode45 استفاده میکنیم:
function dX=sys(t,X)
dX=zeros(2,1);
u=sin(2*t);
dX(1)=X(2);
dX(2)=-X(1)^2*X(2)+u;
حال از دستور ode45 استفاده میکنیم:
X0=[1,-2];
t=0:0.05:10;
[T,X]=ode45(@sys,t,X0);
y=X(:,1); %y=x
plot(T,y)
grid on
xlabel('Time (sec)')
ylabel('Amplitude')
____________________________
#Modern_Control
#آموزش_مقدماتی
#جلسه_هفتم
#ورمقانی
#کنترل_مدرن
#مثال
© @MATLAB_tutorial
© @MATLAB_files
____________________________
http://yon.ir/ZoFc
____________________________
💡 جلسه هفتم
💡 استاد : مهندس ورمقانی
____________________________
حال که مدل فضای حالت را داریم مانند مثال قبل یک تابع برای توصیف آن نوشته و سپس از دستور ode45 استفاده میکنیم:
function dX=sys(t,X)
dX=zeros(2,1);
u=sin(2*t);
dX(1)=X(2);
dX(2)=-X(1)^2*X(2)+u;
حال از دستور ode45 استفاده میکنیم:
X0=[1,-2];
t=0:0.05:10;
[T,X]=ode45(@sys,t,X0);
y=X(:,1); %y=x
plot(T,y)
grid on
xlabel('Time (sec)')
ylabel('Amplitude')
____________________________
#Modern_Control
#آموزش_مقدماتی
#جلسه_هفتم
#ورمقانی
#کنترل_مدرن
#مثال
© @MATLAB_tutorial
© @MATLAB_files
____________________________
http://yon.ir/ZoFc
🎯 هر روز یک دستور 🎯
____________________________
🔆 دستور شماره یک
____________________________
Abs , angle
منظور: تبدیل مقدار مطلق و دنباله عدد
abs(X),abs(S),angle(X)
توصیف: یک عدد مختلط را به دو صورت میتوان نمایش داد: نمایش قدر مطلق و فاز و نمایش قسمتهای حقیقی و موهومی.
Z=X+iY=r*exp(iθ)
که abs (Z) مقدار قدر مطلق Z را نشان میدهد.
اگر Z مختلط باشد ، abs مبین دامنه عناصر موجود در Z است.
abs(Z)=sqrt(real(Z).^2+imag(Z).^2)
که angle(Z) زوایای فاز عناصر موجود در ماتریس مختلط را برحسب رادیان می دهد.
angle(Z)=image(log(Z))=atan(imsg(Z).real(Z))
در abs(S) که S یک متغیر دنباله متلب است ، مقادیر عددی کاراکترهای ASCII دنباله را می دهد.
این کار تغییری در نمایشهای داخلی نمی دهد، فقط روش نمایش آن تغییر می کند.
#Real, #imag, #unwrap, #setstr
____________________________
#هر_روز_یک_دستور
#دستور
#Abs
#angle
____________________________
© @MATLAB_tutorial
© @MATLAB_files
https://telegram.me/MATLAB_tutorial
____________________________
🔆 دستور شماره یک
____________________________
Abs , angle
منظور: تبدیل مقدار مطلق و دنباله عدد
abs(X),abs(S),angle(X)
توصیف: یک عدد مختلط را به دو صورت میتوان نمایش داد: نمایش قدر مطلق و فاز و نمایش قسمتهای حقیقی و موهومی.
Z=X+iY=r*exp(iθ)
که abs (Z) مقدار قدر مطلق Z را نشان میدهد.
اگر Z مختلط باشد ، abs مبین دامنه عناصر موجود در Z است.
abs(Z)=sqrt(real(Z).^2+imag(Z).^2)
که angle(Z) زوایای فاز عناصر موجود در ماتریس مختلط را برحسب رادیان می دهد.
angle(Z)=image(log(Z))=atan(imsg(Z).real(Z))
در abs(S) که S یک متغیر دنباله متلب است ، مقادیر عددی کاراکترهای ASCII دنباله را می دهد.
این کار تغییری در نمایشهای داخلی نمی دهد، فقط روش نمایش آن تغییر می کند.
#Real, #imag, #unwrap, #setstr
____________________________
#هر_روز_یک_دستور
#دستور
#Abs
#angle
____________________________
© @MATLAB_tutorial
© @MATLAB_files
https://telegram.me/MATLAB_tutorial
🎯 هر روز یک دستور 🎯
____________________________
🔆 دستور شماره دو
____________________________
airfoil
منظور: نمایشی –ماتریس های پراکندگی
خلاصه:
airfoil
توصیف: نمایش پراکندگی از ضد هوایی ناسا (NASA). در این مثال از اطلاعات ذخیره شده در فایل airfoil.mat شامل 4253 جفت مختصات (x,y) نقاط مش و یک رشته شامل 12289جفت اندیس های (I,j)
است که ارتباط بین نقاط مش را تعیین می کنند، استفاده میشود . سپس با تغییر مقیاس اطلاعات داده شده و قراردادن آنها در حدوده بین 0و1 یک ماترس پراکنده شکل گرفته و پس از تبدیل آن به یک ماتریس مشت معین، نتایج رسم می شوند.
____________________________
#هر_روز_یک_دستور
#دستور
#airfoil
____________________________
© @MATLAB_tutorial
© @MATLAB_files
https://telegram.me/MATLAB_tutorial
____________________________
🔆 دستور شماره دو
____________________________
airfoil
منظور: نمایشی –ماتریس های پراکندگی
خلاصه:
airfoil
توصیف: نمایش پراکندگی از ضد هوایی ناسا (NASA). در این مثال از اطلاعات ذخیره شده در فایل airfoil.mat شامل 4253 جفت مختصات (x,y) نقاط مش و یک رشته شامل 12289جفت اندیس های (I,j)
است که ارتباط بین نقاط مش را تعیین می کنند، استفاده میشود . سپس با تغییر مقیاس اطلاعات داده شده و قراردادن آنها در حدوده بین 0و1 یک ماترس پراکنده شکل گرفته و پس از تبدیل آن به یک ماتریس مشت معین، نتایج رسم می شوند.
____________________________
#هر_روز_یک_دستور
#دستور
#airfoil
____________________________
© @MATLAB_tutorial
© @MATLAB_files
https://telegram.me/MATLAB_tutorial
🎯 هر روز یک دستور 🎯
____________________________
🔆 دستور شماره پنج
____________________________
area
منظور: رسم سطح دو بعدی پر شده
area(Y)
area(X,Y)
area(….basevalue)
area(….'PropertyName',PropertyValue,….)
area(axes_handle,….)
h-area(….)
area('V6'….)
توصیف: یک گراف سطح، عناصر موجود در Y را بصورت یک یا تعداد بیشتری منحنی نمایش داده و سح بین هر منحنی را پر می کند. اگر Y یک ماتریس باشد، چند منحنی به ازای تعداد ستون ها رسم می شود. در رسم منحنی هر ستون مجموع عناصر سطرهای تا آن ستون رسم می شوند، بطوریکه ارتفاع منحنی در هر فاصله x مبین مجموع ارقام سطری تا هر یک از ستون ها می باشد.
که area(Y) بردار Y یا مجموع هر ستون در ماتریس Y را رسم می کند. محور X بطور خودکار در محدوده l:size(Y,1) مدرج می شود.
که area(X,Y) برای بردارهای X و Y مشابه plot (X,Y) است، با این تفاوت که سطح بین 0 , Y پر می وشد. وقتی Y یک ماتریس باشد، area(X,Y) ستونهای Y را بصورت پر شده رسم می کند . برای هر X ، شبکه حاصل ، مجموع مقادیر متناظر از ستون های Y می باشد.
مثال: رشم سطح پشته ای: در این مثال ، اطلاعات موجود در متغیر Y بصورت پشته ای و در بالای اطلاعات قبلی رسم می شود. توجه داشته باشد که نگاشت رنگ شکل ، رنگ آمیزی سطح خاص را کنترل می کند.
Y = [1, 5, 3;
3, 2, 7;
1, 5, 3;
2, 6, 1];
area(Y)
grid on
colormap summer
set(gca,'Layer','top')
title 'Stacked Area Plot'
____________________________
#هر_روز_یک_دستور
#دستور
#area
____________________________
© @MATLAB_tutorial
© @MATLAB_files
http://yon.ir/kvK6
____________________________
🔆 دستور شماره پنج
____________________________
area
منظور: رسم سطح دو بعدی پر شده
area(Y)
area(X,Y)
area(….basevalue)
area(….'PropertyName',PropertyValue,….)
area(axes_handle,….)
h-area(….)
area('V6'….)
توصیف: یک گراف سطح، عناصر موجود در Y را بصورت یک یا تعداد بیشتری منحنی نمایش داده و سح بین هر منحنی را پر می کند. اگر Y یک ماتریس باشد، چند منحنی به ازای تعداد ستون ها رسم می شود. در رسم منحنی هر ستون مجموع عناصر سطرهای تا آن ستون رسم می شوند، بطوریکه ارتفاع منحنی در هر فاصله x مبین مجموع ارقام سطری تا هر یک از ستون ها می باشد.
که area(Y) بردار Y یا مجموع هر ستون در ماتریس Y را رسم می کند. محور X بطور خودکار در محدوده l:size(Y,1) مدرج می شود.
که area(X,Y) برای بردارهای X و Y مشابه plot (X,Y) است، با این تفاوت که سطح بین 0 , Y پر می وشد. وقتی Y یک ماتریس باشد، area(X,Y) ستونهای Y را بصورت پر شده رسم می کند . برای هر X ، شبکه حاصل ، مجموع مقادیر متناظر از ستون های Y می باشد.
مثال: رشم سطح پشته ای: در این مثال ، اطلاعات موجود در متغیر Y بصورت پشته ای و در بالای اطلاعات قبلی رسم می شود. توجه داشته باشد که نگاشت رنگ شکل ، رنگ آمیزی سطح خاص را کنترل می کند.
Y = [1, 5, 3;
3, 2, 7;
1, 5, 3;
2, 6, 1];
area(Y)
grid on
colormap summer
set(gca,'Layer','top')
title 'Stacked Area Plot'
____________________________
#هر_روز_یک_دستور
#دستور
#area
____________________________
© @MATLAB_tutorial
© @MATLAB_files
http://yon.ir/kvK6
🎯 هر روز یک دستور 🎯
____________________________
🔆 دستور شماره چهار
____________________________
assignin
منظور: تخصیص یک مقدار به متغیر موجود در فضای کاری
assignin(ws,'var',val)
مقدار val را به متغیر Var در فضای کاری ws تخصیص می دهد. در صورتیکه وجود نداشته باشد، ایجاد می شود. برای مشخص کردن فضای کاری پایه متلی یا فضای کاری تابع اختصار کننده می توان از مقادیر 'base' یا 'caller' برای ws استفاده کرد.
تابع assignin بخصوص برای مقاصد زیر مفید است:
• صدور اطلاعات از یک تابع به فضای کاری متلب
• تغییر دادن یک متغیر که در فضای کاری تایع احضار کننده تعیرف شده است، در درون تایع(نظیر یک متغیر موجود در لیست آرگومانهای تابع)
مثال: در این مثال یک جعبه محاوره ای برای تابع نمایش تصویر ایجاد می شود و سپس برای دریافت نام تصویر و نام نگاشت رنگ از کاربر کمک می گیرد. از تابع assignin برای صدور مقادیر وارد شده توسط کاربر به متغیرهای imfile و cmap موجود در فضای کاری متلی استفاده می شود.
prompt = {'Enter image name:', 'Enter colormap name:'};
title = 'Image display - assignin example';
lines = 1;
def = {'my_image', 'hsv'};
answer = inputdlg(prompt, title, lines, def);
assignin('base', 'imfile', answer{1});
assignin('base', 'cmap', answer{2});
____________________________
#هر_روز_یک_دستور
#دستور
#assignin
____________________________
© @MATLAB_tutorial
© @MATLAB_files
http://yon.ir/0jb3
____________________________
🔆 دستور شماره چهار
____________________________
assignin
منظور: تخصیص یک مقدار به متغیر موجود در فضای کاری
assignin(ws,'var',val)
مقدار val را به متغیر Var در فضای کاری ws تخصیص می دهد. در صورتیکه وجود نداشته باشد، ایجاد می شود. برای مشخص کردن فضای کاری پایه متلی یا فضای کاری تابع اختصار کننده می توان از مقادیر 'base' یا 'caller' برای ws استفاده کرد.
تابع assignin بخصوص برای مقاصد زیر مفید است:
• صدور اطلاعات از یک تابع به فضای کاری متلب
• تغییر دادن یک متغیر که در فضای کاری تایع احضار کننده تعیرف شده است، در درون تایع(نظیر یک متغیر موجود در لیست آرگومانهای تابع)
مثال: در این مثال یک جعبه محاوره ای برای تابع نمایش تصویر ایجاد می شود و سپس برای دریافت نام تصویر و نام نگاشت رنگ از کاربر کمک می گیرد. از تابع assignin برای صدور مقادیر وارد شده توسط کاربر به متغیرهای imfile و cmap موجود در فضای کاری متلی استفاده می شود.
prompt = {'Enter image name:', 'Enter colormap name:'};
title = 'Image display - assignin example';
lines = 1;
def = {'my_image', 'hsv'};
answer = inputdlg(prompt, title, lines, def);
assignin('base', 'imfile', answer{1});
assignin('base', 'cmap', answer{2});
____________________________
#هر_روز_یک_دستور
#دستور
#assignin
____________________________
© @MATLAB_tutorial
© @MATLAB_files
http://yon.ir/0jb3
🍀🍀 آموزش کاربرد متلب در کنترل خطی و کنترل مدرن 🍀🍀
____________________________
💡 جلسه هشتم
💡 استاد : مهندس ورمقانی
____________________________
در این جلسه رسم مکان هندسی ریشه ها را یاد خواهیم گرفت(قسمت اول)
برای رسم مکان هندسی ریشه ها از دستور rlocus استفاده میکنیم:
rlocus(sys)
rlocus(sys,k)
[r,k] = rlocus(sys)
r = rlocus(sys,k)
شکل استاندارد فیدبک برای رسم مکان هندسی ریشه ها به شکل زیر است:
____________________________
#Modern_Control
#آموزش_مقدماتی
#جلسه_هشتم
#ورمقانی
#کنترل_مدرن
#مثال
© @MATLAB_tutorial
© @MATLAB_files
____________________________
http://yon.ir/X0YK
____________________________
💡 جلسه هشتم
💡 استاد : مهندس ورمقانی
____________________________
در این جلسه رسم مکان هندسی ریشه ها را یاد خواهیم گرفت(قسمت اول)
برای رسم مکان هندسی ریشه ها از دستور rlocus استفاده میکنیم:
rlocus(sys)
rlocus(sys,k)
[r,k] = rlocus(sys)
r = rlocus(sys,k)
شکل استاندارد فیدبک برای رسم مکان هندسی ریشه ها به شکل زیر است:
____________________________
#Modern_Control
#آموزش_مقدماتی
#جلسه_هشتم
#ورمقانی
#کنترل_مدرن
#مثال
© @MATLAB_tutorial
© @MATLAB_files
____________________________
http://yon.ir/X0YK
🍀🍀 آموزش کاربرد متلب در کنترل خطی و کنترل مدرن 🍀🍀
____________________________
💡 جلسه هشتم
💡 استاد : مهندس ورمقانی
____________________________
که در آن K بهره سیستم میباشد. با مشخص بودن K به صورت یک عدد ثابت سیستم حلقه بسته دارای n قطب خواهد بود. با تغییر مقدار K و بدست آوردن قطب های متناظر و سپس رسم این قطب ها در صفحه مختلط نمودار مکان هندسی ریشه ها بدست می آید.
مثال :
مکان هندسی ریشه های سیستمی با تابع تبدیل حلقه باز زیر را رسم کنید:
P(s)=(s+1)/((s+3)(s+2)(s-1))
____________________________
#Modern_Control
#آموزش_مقدماتی
#جلسه_هشتم
#ورمقانی
#کنترل_مدرن
#مثال
© @MATLAB_tutorial
© @MATLAB_files
____________________________
____________________________
💡 جلسه هشتم
💡 استاد : مهندس ورمقانی
____________________________
که در آن K بهره سیستم میباشد. با مشخص بودن K به صورت یک عدد ثابت سیستم حلقه بسته دارای n قطب خواهد بود. با تغییر مقدار K و بدست آوردن قطب های متناظر و سپس رسم این قطب ها در صفحه مختلط نمودار مکان هندسی ریشه ها بدست می آید.
مثال :
مکان هندسی ریشه های سیستمی با تابع تبدیل حلقه باز زیر را رسم کنید:
P(s)=(s+1)/((s+3)(s+2)(s-1))
____________________________
#Modern_Control
#آموزش_مقدماتی
#جلسه_هشتم
#ورمقانی
#کنترل_مدرن
#مثال
© @MATLAB_tutorial
© @MATLAB_files
____________________________
🍀🍀 آموزش کاربرد متلب در کنترل خطی و کنترل مدرن 🍀🍀
____________________________
💡 جلسه هشتم
💡 استاد : مهندس ورمقانی
____________________________
clc
clear
close all
num=[1 1];
den=[1 4 1 -6];
rlocus(num,den)
____________________________
#Modern_Control
#آموزش_مقدماتی
#جلسه_هشتم
#ورمقانی
#کنترل_مدرن
#مثال
© @MATLAB_tutorial
© @MATLAB_files
____________________________
http://yon.ir/1EGe
____________________________
💡 جلسه هشتم
💡 استاد : مهندس ورمقانی
____________________________
clc
clear
close all
num=[1 1];
den=[1 4 1 -6];
rlocus(num,den)
____________________________
#Modern_Control
#آموزش_مقدماتی
#جلسه_هشتم
#ورمقانی
#کنترل_مدرن
#مثال
© @MATLAB_tutorial
© @MATLAB_files
____________________________
http://yon.ir/1EGe