🍀🍀 آموزش کاربرد متلب در کنترل خطی و کنترل مدرن 🍀🍀
____________________________
💡 جلسه دهم
💡 استاد : مهندس ورمقانی
____________________________
رسم دیاگرام بوده به کمک دستور bode :
bode(num,den)
bode(num,den,w)
bode(num,den)
bode(A,B,C,D)
bode(A,B,C,D,iu)
bode(A,B,C,D,iu,w)
bode(sys)
اگر بردار w را وارد نکنیم خود متلب یک بردار برای آن در نظر میگیرد.
اگر بخواهیم ورودی را انتخاب کنیم باید از فرم فضای حالت استفاده کنیم. که در آنها iu شماره ورودی است.
مثال :
همان مثال قبل را به کمک دستور bode رسم کنید:
clc
clear
close all
num=[1];
den=[0.004 0.06 0.3 1];
bode(num,den)
grid on
نتیجه:
____________________________
#Modern_Control
#آموزش_مقدماتی
#جلسه_دهم
#ورمقانی
#کنترل_مدرن
#مثال
© @MATLAB_tutorial
© @MATLAB_files
____________________________
http://yon.ir/98NC
____________________________
💡 جلسه دهم
💡 استاد : مهندس ورمقانی
____________________________
رسم دیاگرام بوده به کمک دستور bode :
bode(num,den)
bode(num,den,w)
bode(num,den)
bode(A,B,C,D)
bode(A,B,C,D,iu)
bode(A,B,C,D,iu,w)
bode(sys)
اگر بردار w را وارد نکنیم خود متلب یک بردار برای آن در نظر میگیرد.
اگر بخواهیم ورودی را انتخاب کنیم باید از فرم فضای حالت استفاده کنیم. که در آنها iu شماره ورودی است.
مثال :
همان مثال قبل را به کمک دستور bode رسم کنید:
clc
clear
close all
num=[1];
den=[0.004 0.06 0.3 1];
bode(num,den)
grid on
نتیجه:
____________________________
#Modern_Control
#آموزش_مقدماتی
#جلسه_دهم
#ورمقانی
#کنترل_مدرن
#مثال
© @MATLAB_tutorial
© @MATLAB_files
____________________________
http://yon.ir/98NC
🍀🍀 آموزش کاربرد متلب در کنترل خطی و کنترل مدرن 🍀🍀
____________________________
💡 جلسه دهم
💡 استاد : مهندس ورمقانی
____________________________
که مطابق انتظار همان نتیجه قبلی را میدهد.
مثال :
نمودار بوده سیستم فوق را برای فرکانسهای بین 0 تا 100 رادیان بر ثانیه رسم کنید.(250 فرکانس)
ابتدا باید یک بردار w ساخت که شامل فرکانسهای مدنظر باشد برای این کار از دستور logspace استفاده میکنیم:
w = logspace(a,b)
w = logspace(a,b,n)
دستور اول یک بردار سطری 50 تایی ایجاد میکند که درایههای آن به صورت لگاریتمی بین 10a و 10b میباشد.
دستور دوم یک بردار سطری n تایی ایجاد میکند که درایههای آن به صورت لگاریتمی بین 10a و 10b میباشد.
بنابراین در این مثال :
a=0;
b=2;
clc
clear
close all
w=logspace(0,2,250);
num=[1];
den=[0.004 0.06 0.3 1];
bode(num,den,w)
grid on
نتیجه :
____________________________
#Modern_Control
#آموزش_مقدماتی
#جلسه_دهم
#ورمقانی
#کنترل_مدرن
#مثال
© @MATLAB_tutorial
© @MATLAB_files
____________________________
yon.ir/mHv0
____________________________
💡 جلسه دهم
💡 استاد : مهندس ورمقانی
____________________________
که مطابق انتظار همان نتیجه قبلی را میدهد.
مثال :
نمودار بوده سیستم فوق را برای فرکانسهای بین 0 تا 100 رادیان بر ثانیه رسم کنید.(250 فرکانس)
ابتدا باید یک بردار w ساخت که شامل فرکانسهای مدنظر باشد برای این کار از دستور logspace استفاده میکنیم:
w = logspace(a,b)
w = logspace(a,b,n)
دستور اول یک بردار سطری 50 تایی ایجاد میکند که درایههای آن به صورت لگاریتمی بین 10a و 10b میباشد.
دستور دوم یک بردار سطری n تایی ایجاد میکند که درایههای آن به صورت لگاریتمی بین 10a و 10b میباشد.
بنابراین در این مثال :
a=0;
b=2;
clc
clear
close all
w=logspace(0,2,250);
num=[1];
den=[0.004 0.06 0.3 1];
bode(num,den,w)
grid on
نتیجه :
____________________________
#Modern_Control
#آموزش_مقدماتی
#جلسه_دهم
#ورمقانی
#کنترل_مدرن
#مثال
© @MATLAB_tutorial
© @MATLAB_files
____________________________
yon.ir/mHv0
🍀🍀 آموزش کاربرد متلب در کنترل خطی و کنترل مدرن 🍀🍀
____________________________
💡 جلسه دهم
💡 استاد : مهندس ورمقانی
____________________________
مثال دیاگرام بوده را برای سیستم زیر رسم کنید:
G=[((s+1)/(s^2+3s+4)*1/(s+3))]
پاسخ :
clc
clear
close all
s=tf('s');
G=[(s+1)/(s^2+3*s+4) 1/(s+3)];
bode(G)
grid on
____________________________
#Modern_Control
#آموزش_مقدماتی
#جلسه_دهم
#ورمقانی
#کنترل_مدرن
#مثال
© @MATLAB_tutorial
© @MATLAB_files
____________________________
yon.ir/w9HS
____________________________
💡 جلسه دهم
💡 استاد : مهندس ورمقانی
____________________________
مثال دیاگرام بوده را برای سیستم زیر رسم کنید:
G=[((s+1)/(s^2+3s+4)*1/(s+3))]
پاسخ :
clc
clear
close all
s=tf('s');
G=[(s+1)/(s^2+3*s+4) 1/(s+3)];
bode(G)
grid on
____________________________
#Modern_Control
#آموزش_مقدماتی
#جلسه_دهم
#ورمقانی
#کنترل_مدرن
#مثال
© @MATLAB_tutorial
© @MATLAB_files
____________________________
yon.ir/w9HS
🍀🍀 آموزش کاربرد متلب در کنترل خطی و کنترل مدرن 🍀🍀
____________________________
💡 جلسه دهم
💡 استاد : مهندس ورمقانی
____________________________
توجه کنید که در مثال قبل 2 ورودی و یک خروجی داشتیم.
مثال :
دیاگرام بوده مثال قبل را فقط برای ورودی اول رسم کنید.
ابتدا باید فرم فضای حالت را بیابیم. (در جلسه سوم به طور کامل طریقه بدست آوردن فرم فضای حالت سیستم چند متغیره را بحث کردیم.)
clc
clear
close all
w=logspace(-1,2,250);
NUM11=[1 1];
NUM12=[1];
DEN1=[1 3 4];
DEN2=[1 3];
NUM1=NUM11;
NUM2=NUM12;
[A1,B1,C1,D1]=tf2ss(NUM1,DEN1);
[A2,B2,C2,D2]=tf2ss(NUM2,DEN2);
za1=zeros(size(A1,1),size(A2,2));
za2=zeros(size(A2,1),size(A1,2));
A=[A1 za1;za2 A2];
zb1=zeros(size(A1,1),1);
zb2=zeros(size(A2,1),1);
B=[B1 zb1;zb2 B2];
C=[C1 C2];
D=[D1 D2];
bode(A,B,C,D,1,w)
grid on
نتیجه :
____________________________
#Modern_Control
#آموزش_مقدماتی
#جلسه_دهم
#ورمقانی
#کنترل_مدرن
#مثال
© @MATLAB_tutorial
© @MATLAB_files
____________________________
http://yon.ir/lIx7
____________________________
💡 جلسه دهم
💡 استاد : مهندس ورمقانی
____________________________
توجه کنید که در مثال قبل 2 ورودی و یک خروجی داشتیم.
مثال :
دیاگرام بوده مثال قبل را فقط برای ورودی اول رسم کنید.
ابتدا باید فرم فضای حالت را بیابیم. (در جلسه سوم به طور کامل طریقه بدست آوردن فرم فضای حالت سیستم چند متغیره را بحث کردیم.)
clc
clear
close all
w=logspace(-1,2,250);
NUM11=[1 1];
NUM12=[1];
DEN1=[1 3 4];
DEN2=[1 3];
NUM1=NUM11;
NUM2=NUM12;
[A1,B1,C1,D1]=tf2ss(NUM1,DEN1);
[A2,B2,C2,D2]=tf2ss(NUM2,DEN2);
za1=zeros(size(A1,1),size(A2,2));
za2=zeros(size(A2,1),size(A1,2));
A=[A1 za1;za2 A2];
zb1=zeros(size(A1,1),1);
zb2=zeros(size(A2,1),1);
B=[B1 zb1;zb2 B2];
C=[C1 C2];
D=[D1 D2];
bode(A,B,C,D,1,w)
grid on
نتیجه :
____________________________
#Modern_Control
#آموزش_مقدماتی
#جلسه_دهم
#ورمقانی
#کنترل_مدرن
#مثال
© @MATLAB_tutorial
© @MATLAB_files
____________________________
http://yon.ir/lIx7
🎯 هر روز یک دستور 🎯
____________________________
🔆 دستور شماره هفده
____________________________
✅Beta,betainc,betaln
📌منظور: تابع بتا، بتای ناقص، و تابع لگاریتمی بتا
📌خلاصه:
y=beta(x,a,b)
y = beta(Z,W)
y=betainc(x,a,b)
y = betaln(Z,W)
📌توصیف: y= beta(Z,W) تابع لگاریتمی با آرگومانهای
Z,W را محاسبه میکند.
که y=beta(x,a,b) و y=betainc(x,a,b)
تابع بتای ناقص را میدهند..عناصر X بایستی در فاصله [0,1]
باشند و a و b بایستی اسکالر باشند.
که y = betaln(Z,W) تابع لگارتیمی بتار ا محاسبه
میکند. Z, w بایستی برای جمع سازگار باشند.
📙مثال:
beta(n,3)
= (n-1)!*2!/(n+2)!
= 2/(n*(n+1)*(n+2))
____________________________
#هر_روز_یک_دستور
#دستور
#Beta
#betainc
#betaln
____________________________
© @MATLAB_tutorial
© @MATLAB_files
https://telegram.me/MATLAB_tutorial
____________________________
🔆 دستور شماره هفده
____________________________
✅Beta,betainc,betaln
📌منظور: تابع بتا، بتای ناقص، و تابع لگاریتمی بتا
📌خلاصه:
y=beta(x,a,b)
y = beta(Z,W)
y=betainc(x,a,b)
y = betaln(Z,W)
📌توصیف: y= beta(Z,W) تابع لگاریتمی با آرگومانهای
Z,W را محاسبه میکند.
که y=beta(x,a,b) و y=betainc(x,a,b)
تابع بتای ناقص را میدهند..عناصر X بایستی در فاصله [0,1]
باشند و a و b بایستی اسکالر باشند.
که y = betaln(Z,W) تابع لگارتیمی بتار ا محاسبه
میکند. Z, w بایستی برای جمع سازگار باشند.
📙مثال:
beta(n,3)
= (n-1)!*2!/(n+2)!
= 2/(n*(n+1)*(n+2))
____________________________
#هر_روز_یک_دستور
#دستور
#Beta
#betainc
#betaln
____________________________
© @MATLAB_tutorial
© @MATLAB_files
https://telegram.me/MATLAB_tutorial
🎯 هر روز یک دستور 🎯
____________________________
🔆 دستور شماره هجده
____________________________
bicg
📌منظور: روش گرادیان های مزدوج دوبل
📌خلاصه:
x = bicg(A,b)
bicg(A,b,tol)
bicg(A,b,tol,maxit)
bicg(A,b,tol,maxit,M)
bicg(A,b,tol,maxit,M1,M2)
bicg(A,b,tol,maxit,M1,M2,x0)
[x,flag] = bicg(A,b,...)
[x,flag,relres] = bicg(A,b,...)
[x,flag,relres,iter] = bicg(A,b,...)
[x,flag,relres,iter,resvec] = bicg(A,b,...)
📌توصیف: x = bicg(A,b) سیستم معادلات خطی A*x=b را برای x حل می کند.
✅مثال:
n = 100;
on = ones(n,1);
A = spdiags([-2*on 4*on -on],-1:1,n,n);
b = sum(A,2);
tol = 1e-8;
maxit = 15;
M1 = spdiags([on/(-2) on],-1:0,n,n);
M2 = spdiags([4*on -on],0:1,n,n);
x = bicg(A,b,tol,maxit,M1,M2);
پیام زیر نمایش داده میشود:
bicg converged at iteration 9 to a solution with relative
residual 5.3e-009
____________________________
#هر_روز_یک_دستور
#دستور
#bicg
____________________________
© @MATLAB_tutorial
© @MATLAB_files
https://telegram.me/MATLAB_tutorial
____________________________
🔆 دستور شماره هجده
____________________________
bicg
📌منظور: روش گرادیان های مزدوج دوبل
📌خلاصه:
x = bicg(A,b)
bicg(A,b,tol)
bicg(A,b,tol,maxit)
bicg(A,b,tol,maxit,M)
bicg(A,b,tol,maxit,M1,M2)
bicg(A,b,tol,maxit,M1,M2,x0)
[x,flag] = bicg(A,b,...)
[x,flag,relres] = bicg(A,b,...)
[x,flag,relres,iter] = bicg(A,b,...)
[x,flag,relres,iter,resvec] = bicg(A,b,...)
📌توصیف: x = bicg(A,b) سیستم معادلات خطی A*x=b را برای x حل می کند.
✅مثال:
n = 100;
on = ones(n,1);
A = spdiags([-2*on 4*on -on],-1:1,n,n);
b = sum(A,2);
tol = 1e-8;
maxit = 15;
M1 = spdiags([on/(-2) on],-1:0,n,n);
M2 = spdiags([4*on -on],0:1,n,n);
x = bicg(A,b,tol,maxit,M1,M2);
پیام زیر نمایش داده میشود:
bicg converged at iteration 9 to a solution with relative
residual 5.3e-009
____________________________
#هر_روز_یک_دستور
#دستور
#bicg
____________________________
© @MATLAB_tutorial
© @MATLAB_files
https://telegram.me/MATLAB_tutorial
🎯 هر روز یک دستور 🎯
____________________________
🔆 دستور شماره نوزده
____________________________
bitcmp
📌منظور: بیت های مکمل
📌خلاصه:
C= bitcmp(A,n)
📌توصیف: C= bitcmp(A,n) مکمل A را بصورت یک عدد صحیح n بیتی بدون علامت برمیگرداند. هیچ یک از بیت های مقدار تخصیص داده شده A نمیتوانند مقداری بزرگتر از n داشته باشند.اگر n تعداد بیتهای A در کلاس اعداد صحیح بدون علامت باشد، در اینصورت مقدار A میتواند بین صفرو inmax(class(A)) باشد.
✅مثال1: با محاسبات 8 بیتی مکمل یک 011000011 (معادل 99دسیمال) برابر 100111100 می باشد.
C= bitcmp(unit8(99),8)
C=
156
✅مثال2: مکمل 255(معادل FF هگزا دسیمال) را بیابید.
A=unit16(inmax('unit8'));
bitcmp(a,8)
Ans=
0
____________________________
#هر_روز_یک_دستور
#دستور
#bitcmp
____________________________
© @MATLAB_tutorial
© @MATLAB_files
https://telegram.me/MATLAB_tutorial
____________________________
🔆 دستور شماره نوزده
____________________________
bitcmp
📌منظور: بیت های مکمل
📌خلاصه:
C= bitcmp(A,n)
📌توصیف: C= bitcmp(A,n) مکمل A را بصورت یک عدد صحیح n بیتی بدون علامت برمیگرداند. هیچ یک از بیت های مقدار تخصیص داده شده A نمیتوانند مقداری بزرگتر از n داشته باشند.اگر n تعداد بیتهای A در کلاس اعداد صحیح بدون علامت باشد، در اینصورت مقدار A میتواند بین صفرو inmax(class(A)) باشد.
✅مثال1: با محاسبات 8 بیتی مکمل یک 011000011 (معادل 99دسیمال) برابر 100111100 می باشد.
C= bitcmp(unit8(99),8)
C=
156
✅مثال2: مکمل 255(معادل FF هگزا دسیمال) را بیابید.
A=unit16(inmax('unit8'));
bitcmp(a,8)
Ans=
0
____________________________
#هر_روز_یک_دستور
#دستور
#bitcmp
____________________________
© @MATLAB_tutorial
© @MATLAB_files
https://telegram.me/MATLAB_tutorial
🎯 هر روز یک دستور 🎯
____________________________
🔆 دستور شماره بیست
____________________________
bin2dec
📌منظور: تبدیل عدد باینری به دسیمال
📌خلاصه:
bin2dec(binarystr)
📌توصیف: bin2dec(binarystr) دنباله بانری binarystr را تفسیر کرده و به معادل عددی دسیمال آن برمیگردد.
که Bin2dec از کاراکترهای فضای خالی (' ') موجو در دنباله ورودی صرفنظر میکند.
✅مثال:دنباله باینری 010111 به عدد دسیمال 23 تبدیل می شود.
bin2dec('010111')
ans =
23
از آنجا که از کاراکترهای فضای خالی صرفنظر می شود،دنباله زیر نیز منجر به همان نتیجه میشود.
bin2dec(' 010 111 ')
ans =
23
____________________________
#هر_روز_یک_دستور
#دستور
#bin2dec
____________________________
© @MATLAB_tutorial
© @MATLAB_files
https://telegram.me/MATLAB_tutorial
____________________________
🔆 دستور شماره بیست
____________________________
bin2dec
📌منظور: تبدیل عدد باینری به دسیمال
📌خلاصه:
bin2dec(binarystr)
📌توصیف: bin2dec(binarystr) دنباله بانری binarystr را تفسیر کرده و به معادل عددی دسیمال آن برمیگردد.
که Bin2dec از کاراکترهای فضای خالی (' ') موجو در دنباله ورودی صرفنظر میکند.
✅مثال:دنباله باینری 010111 به عدد دسیمال 23 تبدیل می شود.
bin2dec('010111')
ans =
23
از آنجا که از کاراکترهای فضای خالی صرفنظر می شود،دنباله زیر نیز منجر به همان نتیجه میشود.
bin2dec(' 010 111 ')
ans =
23
____________________________
#هر_روز_یک_دستور
#دستور
#bin2dec
____________________________
© @MATLAB_tutorial
© @MATLAB_files
https://telegram.me/MATLAB_tutorial
🎯 هر روز یک دستور 🎯
____________________________
🔆 دستور شماره بیست ویک
____________________________
bitmax
📌منظور: حداکثر عدد ممیز شناور
📌خلاصه:
bitmax
📌توصیف: bitmax به بزرگترین عدد ممیز شناور با دقت مضاعف بدون علامت در کامپیوتر برمیگردد.
✅مثال:
بزرگترین عدد صحیح ممیز شناور و بزرگترین عدد صحیح 32 بیتی بدون علامت را در فرمت های مختلف نشان دهید:
format long e
bitmax
ans =
9.007199254740991e+015
____________________________
#هر_روز_یک_دستور
#دستور
#bitmax
____________________________
© @MATLAB_tutorial
© @MATLAB_files
https://telegram.me/MATLAB_tutorial
____________________________
🔆 دستور شماره بیست ویک
____________________________
bitmax
📌منظور: حداکثر عدد ممیز شناور
📌خلاصه:
bitmax
📌توصیف: bitmax به بزرگترین عدد ممیز شناور با دقت مضاعف بدون علامت در کامپیوتر برمیگردد.
✅مثال:
بزرگترین عدد صحیح ممیز شناور و بزرگترین عدد صحیح 32 بیتی بدون علامت را در فرمت های مختلف نشان دهید:
format long e
bitmax
ans =
9.007199254740991e+015
____________________________
#هر_روز_یک_دستور
#دستور
#bitmax
____________________________
© @MATLAB_tutorial
© @MATLAB_files
https://telegram.me/MATLAB_tutorial
🎯 هر روز یک دستور 🎯
____________________________
🔆 دستور شماره بیست و دو
____________________________
bitor
📌منظور: گزاره منطقی "یا" (OR) در حد یک بیت
خلاصه:
C=bitor(A,B)
📌توصیف: C=bitor(A,B) به نتیجه گزاره منطقی "یا" (OR) در حد بیت های دو آرگومان عدد صحیح بدون علامت A یا B برمیگرداند.
✅مثال1)
C = -5;
D = 6;
bitor(C,D,'int8')
ans =
-1
✅مثال 2)
A = uint8([0 1; 0 1]);
B = uint8([0 0; 1 1]);
TTable = bitor(A, B)
TTable =
0 1
1 1
Bench
____________________________
#هر_روز_یک_دستور
#دستور
#bitor
____________________________
© @MATLAB_tutorial
© @MATLAB_files
https://telegram.me/MATLAB_tutorial
____________________________
🔆 دستور شماره بیست و دو
____________________________
bitor
📌منظور: گزاره منطقی "یا" (OR) در حد یک بیت
خلاصه:
C=bitor(A,B)
📌توصیف: C=bitor(A,B) به نتیجه گزاره منطقی "یا" (OR) در حد بیت های دو آرگومان عدد صحیح بدون علامت A یا B برمیگرداند.
✅مثال1)
C = -5;
D = 6;
bitor(C,D,'int8')
ans =
-1
✅مثال 2)
A = uint8([0 1; 0 1]);
B = uint8([0 0; 1 1]);
TTable = bitor(A, B)
TTable =
0 1
1 1
Bench
____________________________
#هر_روز_یک_دستور
#دستور
#bitor
____________________________
© @MATLAB_tutorial
© @MATLAB_files
https://telegram.me/MATLAB_tutorial
🎯 هر روز یک دستور 🎯
____________________________
🔆 دستور شماره بیست و سه
____________________________
🌺bitset🌺
📌منظور:انتقال دادن بیت ها
📌خلاصه:
bitset(A,bit)
bitset(A,bit,v)
📌توصیف: C=bitset(A,bit) بیت موجود در موقعیت bit ، A را معادل 1 قرار می دهد. A بایستی یک عدد صحیح بدون علامت باشد و hit نیز بایستی یک عدد بین 1 و تعداد بیت های عدد صحیح بدون علامت در کلاس A باشد.(مثلا 32 برای کلاس unit32)
C=bitset(A,bit,v) بیت موجود در موقعیت bit ، A را به مقدار v که بایستی برابر صفر یا یک باشد،تغییر می دهد.
✅مثال:کسرکردن متوالی توان های 2 از بزرگترین مقدار صحیح unit32 داریم:
a = intmax('uint8')
for k = 0:7
a = bitset(a, 8-k, 0);
b(1,k+1) = a;
end
b
a =
255
b =
127 63 31 15 7 3 1 0
____________________________
#هر_روز_یک_دستور
#دستور
#bitset
____________________________
© @MATLAB_tutorial
© @MATLAB_files
https://telegram.me/MATLAB_tutorial
____________________________
🔆 دستور شماره بیست و سه
____________________________
🌺bitset🌺
📌منظور:انتقال دادن بیت ها
📌خلاصه:
bitset(A,bit)
bitset(A,bit,v)
📌توصیف: C=bitset(A,bit) بیت موجود در موقعیت bit ، A را معادل 1 قرار می دهد. A بایستی یک عدد صحیح بدون علامت باشد و hit نیز بایستی یک عدد بین 1 و تعداد بیت های عدد صحیح بدون علامت در کلاس A باشد.(مثلا 32 برای کلاس unit32)
C=bitset(A,bit,v) بیت موجود در موقعیت bit ، A را به مقدار v که بایستی برابر صفر یا یک باشد،تغییر می دهد.
✅مثال:کسرکردن متوالی توان های 2 از بزرگترین مقدار صحیح unit32 داریم:
a = intmax('uint8')
for k = 0:7
a = bitset(a, 8-k, 0);
b(1,k+1) = a;
end
b
a =
255
b =
127 63 31 15 7 3 1 0
____________________________
#هر_روز_یک_دستور
#دستور
#bitset
____________________________
© @MATLAB_tutorial
© @MATLAB_files
https://telegram.me/MATLAB_tutorial