info@matlabiran.ir

خانه » کتاب آموزشی » آموزش متلب – بخش 6

آموزش متلب – بخش 6

متلب ایران

متلب ایران

در این مجموعه به آموزش متلب از طریق متن نوشتاری می پردازیم. بدیهی است برای فهم توضیحات ارائه شده، اجرا کردن خط به خط دستورات در متلب می تواند بسیار کمک کننده باشد. لذا از دانشجویان عزیز خواهش می کنیم برای بالا بردن مهارت خود در استفاده از متلب؛ پا به پای این آموزش تمرینات خود را انجام دهند.

[divider]

دستورات حلقه و شرط: 

در متلب مشابه زبان های برنامه نويسی دستورات حلقه و شرط وجود دارد.

دستور if :  

if     شرط

 < دستورات >

end

حلقه : برای ايجاد حلقه از دو دستور for و while استفاده می شود.

دستور for : تعداد گام های مشخص دارد.

دستور while : يک شرط خروجی دارد که يک حلقه بينهايت می سازد.

 

عملگر مقايسه ای در متلب:

 (نقيض)~    (يا منطقی)|    (و منطقی)&    نامساوی =~    مساوی ==     =<     =>     <     >

دستور break : برای قطع برنامه ناشی از حلقه for از دستور break استفاده می شود.

  : Matlab در (function) نوشتن تابع

  • يک m فايل بصورت مقابل ايجاد می کنيم:          (function y=afun(a,b
  • afun اسم تابع است. y برگشتی تابع است.
  • afun اسم تابع است. y برگشتی تابع است. a و b ورودی های تابع هستند.
  • بعد از نوشتن  mفايل ٬ آن را با نام تابع (در اينجا afun) ذخيره نمائيد.
  • سپس می توان در پنجره command تابع را اجرا کرد. مثلا اگر بنويسيم (afun(3,4 ٬ 3 به جای a و 4 به جای b قرار می گيرد. تابع اجرا می شود و مقدار y بدست آمده نشان داده می شود.

در مثال زير ٬ تابع مقدار قدرمطلق عدد ورودی x را محاسبه و در متغير y بر می گرداند.

function y= abs(x)

if(x>0)

     y=x;

else

     y=-x;

end

  :نکات

  • نام تابع بايد هم نام با m-file باشد.
  • می توان در يک m-file چندين تابع نوشت.
  • متغيرهای موجود در يک تابع محلی هستند و توسط توابع ديگر قابل دسترسی نمی باشند.

 

 

توابع کتابخانه ای: 

  •  atan , acos , asin , cot , tan , cos , sin   : توابع مثلثاتی
  • Exp (نمايی) – log (لگاريتم طبيعی) – log10 (لگاريتم در مبنای ۱۰) – factorial (محاسبه فاکتوريل) – floor (جزء صحيح) – fix (قسمت صحيح) – ceil (سقف) – sqrt (جذر) – abs (قدر مطلق)
  • Inv (وارون ماتريس) – eye (ايجاد ماتريس واحد) – zeros (ايجاد ماتريس حاوی فقط صفر) – ones(ماتريس با عناصر فقط يک)

 

تابعی برای تبديل مختصات دکارتی به قطبی :

1

function [r,theta]=r2p(x,y)

theta =(180/pi)*atan2(x,y)

r=sqrt(x.^2+y.^2);

 end

برای اجرای اين تابع پس از ذخيره کردن mfile ٬ در پنجره command به صورت زير می نويسيم.

>> r2p(3,4)

theta =   36.8699

ans =     5   

تابعی برای تبديل مختصات قطبی به دکارتی:

x= r cosθ          y=r sinθ                x2 + y2 = r2

  function[x,y]=p2r(r,theta)

x=r.*cos(theta*(pi/180))

y=r.*sin(theta*(pi/180))

end

 .دستور زير را می نويسيم command برای اجرا در پنجره

>> p2r(5,36)

x  =    4.0451

y  =    2.9389

ans =    4.0451

قضيه انتقال توان ماکزيمم 

تمرين: مطلوب است ماکزيمم توان رسيده به مقاومت بار در مدار شکل زير.  0Ω < Rl < 100Ω , مقاومت منبع       Rs = 50Ω

20

 

                  

 

1. Rs=50;

2. Rl=1:100;

3. amper=120./(Rs+Rl);

4. Pl=(amper.^2).*Rl;

5. plot(Rl,Pl);

6. title(‘plot of power versus load resistance’);

7. xlabel(‘load resistance (ohm)’);

8. ylabel(‘power (watts)’);

9. grid on

10.[Pmax,Rl]= max(Pl)

21

Pmax =    72

Rl =    50

Rs=Rl=50Ω                           همان گونه که مشخص است ماکزیمم انتقال توان در مقاومتی برابر با مقاومت منبع رخ داده است

مثال: برنامه ای بنوسيد که نمرات دانشجويان را بگيرد . اگر بالاتر از ۹۵ بود نمره A و اگر بين 85-95 بود نمره B و در غير اين صورت نمره C بدهد.

1. n=input(‘nomre:’)

2. if n>95

3. disp(‘nomre A’)

4. elseif n>86

5. disp(‘nomre B’)

6. else

7. disp(‘nomre c’)

8. end

 دنباله فيبوناچی (fibbonacci) : 

1. function f = fibbo(n)

2. f(1)=1;

3. f(2)=1;

4. for k=3:n

5. f(k)=f(k-1)+f(k-2);

6. end

7. end

به صورت زير برنامه را در پنجره command اجرا می کنيم:

>> fibbo(8)

ans =

     1     1     2     3     5     8    13    21

دستور fprintf : برای چاپ خروجی از اين دستور استفاده می کنيم.

مثال: برنامه ای بنويسيد که ضرايب را از يک معادله درجه ۲ به شکل Ax2 + Bx +c  دريافت نموده و با نمايش توضيحات مناسب ريشه های آن را بدست آورد.

% calc roots                  (در ابتدای توضيحات برنامه از % استفاده می شود)

a=input(‘A=’);

b=input(‘B=’);

c=input(‘C=’);

delta=b.^2-(4*a.*c);

if delta>0

    x1=(-b+sqrt(delta))/(2*a);

     x2=(-b-sqrt(delta))/(2*a);

    disp(‘two real roots’)

    fprintf(‘x1=%f\n’,x1)                  .يعنی جواب را چاپ کرده و به خط بعد برود f\n

    fprintf(‘x2=%f\n’,x2)

elseif delta==0

     x1=(-b)/(2*a);

    disp(‘two identical real roots’)

     fprintf(‘x1=x2=%f\n’,x1)

else

    real_part=(-b)/(2*a);

    image_part=sqrt(abs(delta))/(2*a);

     disp(‘cmplex roots’)

     fprintf(‘x1=%f+i%f\n’,real_part,image_part)

     fprintf(‘x2=%f-i%f\n’,real_part,image_part)

end

 اجرا در پنجره command :

A=8

B=4

C=-6

two real roots

x1=0.651388

x2=-1.151388

 ترکيب ماتريس ها و ساخت آرايه سلولی: 

  :مثال

>> a={[1 2] ‘hello’;3 [5;6]};

>> b={spiral(3) eye(2);’good’ ‘bad’};

>> c=cat(3,a,b)

c(:,:,1) =

    [1×2 double]    ‘hello’

          [         3]    [2×1 double]

c(:,:,2) =

    [3×3 double]    [2×2 double]

    ‘good’          ‘bad’

>> cellplot(c)

>> cellplot(c(:,:,2))                برای دستيابی به صفحات ديگر از اين دستور استفاده می کنيم

 معکوس کردن محورها: 

مثال :

>> t=0:900;

>> plot(t,0.25*exp(-0.05*t))

5

>> set(gca,’XDir’,’reverse’)6

>> set(gca,’XDir’,’rev’,’YDir’,’rev’)

7

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد.