برنامه نويسي (m-files) در متلب

مجموعه اي از دستورات MATLAB را مي توانيد در يك پرونده ذخيره كنيد و سپس آنها را يكجــا اجرا نمائيد.  چنين پرونده اي براي آنكه در محيط MATLAB قابل اجـرا باشـد بـايد حتمـا” داراي دنباله “.m” باشد.  در صورتي كه از ويرايشــگرMATLAB Editor) MATLAB ) اسـتفاده كنيـد،دنباله “.m” بطور خودكار در هنگام ذخيره پرونده به نام آن افزوده مي گردد.  در صورت اســتفاده ازويرايشگر ديگري بغير از ويرايشگر MATLAB (نظير Notepad) اطمينان حاصل كنيد كــه پرونـده حتما” به روش ascii و با دنباله “.m” ذخيره گردد.

 

در اين بخش از يادداشت فقط بر نحوه برنامه نويسي و اجراي برنامه هـا تـاكيد شـده اسـت و نتـايج اجراي برنامه‌هاي مورد بحث نشان داده نشده اند.  به خواننده توصيه مي گردد كه خود برنامه‌ها را اجرا كرده و نتايج آنها را مشاهده نمايد.

برنامه اصلي

m-file‌ها مي توانند به دو شكل برنامه اصلي و تابع باشند.  برنامه اصلي عبارتست از مجموعـه اي از دستورها كه مي توان آنها را بطور جداگانه در محيط كار MATLAB اجرا نمود.  هنگــامي كـه نـام برنامه اصلي را در محيط كار MATLAB  بنويسيد اين دستورها به ترتيــب اجـرا مـي گردنـد.  بـه عنوان مثال براي محاسبه حجم گاز كامل، در دماهاي مختلف و فشــار معلـوم، دسـتورات زيـر را در ويرايشگر MATLAB بنويسيد و سپس تحت عنوان pvt.m ذخيره كنيد :

% A sample scritp file: pvt.m

disp(‘ Calculating the volume of an ideal gas.’)

R = 8314; % Gas constant (J/kmol.K)

t =   input(‘ Vector of temperature (K) = ‘);

p = input(‘ Pressure (bar) = ‘)*1e5;

v = R*t/p;   % Ideal gas law

% Plotting the results

plot(t,v)

xlabel(‘T (K)’)

ylabel(‘V (m^3/kmol)’)

title(‘Ideal gas volume vs temperature’)

mm11

mm2

علامت % نشانگر وجـود توضيحات در بـرنامه است.  علامت % و آنچه بدنبـــال آن در همـان ســطر مي آيد به هنگام اجراي برنامه ناديده گرفته مي شود.  همچنيــن علامـت . . . بيـانگر آن اسـت كـه دستور مورد نظر در اين سطر تمام نشده و در سطر بعدي ادامه مي يابد.  مورد استفاده اين علامــت بيشتر در مورد دستورهاي محاسباتي طولاني است كه براي مطالعه راحت تر ايــن قسـمت از برنامـه بهتر است در دو يا سه خط نوشته شود.

پس از ايجاد پرونده pvt.m، براي اجراي آن كافي اس ت كـه نـام آن را در محيـط كـار MATLAB بنويسيد و نتايج را مشاهده كنيد

 

استفاده از diary براي ايجاد برنامه

يك روش ايجاد برنامه براي مبتديان بكار بردن دستور diary است.  در صورت استفاده از دستور زير

» diary xyz

 

تمامي نوشته‌هاي محيط كار MATLAB پس از آن در پرونده xyz حك مي گردنــد.  پرونـده xyz بدون دنباله خواهد بود مگر آنكه خودتان براي آن دنباله مشخص كنيد.  در اين حــالت مـي توانيـد شروع به نوشتن دستورات مورد نظر در محيط كار MATLAB كنيد، نتايج را همان جا ببينيد و در صورت لزوم تصحيحات لازم را انجام دهيد.  هنگامي كه به پايان محاسبات و نتيجه دلخواه رسيديد، پرونده xyz را به كمك دستور زير ببنديد:

» diary off

اکنون مي توانيد پرونده xyz را باز كرده، خطوط و دستورهاي اضافي را از آن پاك كنيد و سپس بــا دنباله .m آن را ذخيره نمائيد.  به اين ترتيب يك m-file ايجاد كرده اي د كـه بـه نتـايج اجـراي آن اطمينان داريد.

تابع

علاوه بر توابعي كه همراه MATLAB هستند، شما مي توانيد توابعي را كه محاسبات مورد نيازتــان را انجام بدهد نيز ايجاد كنيد.  يك تابع يك يا چنـد داده را در ورودي دريـافت مـي كنـد و پـس از انجام محاسبات لازم نتايج را در قالب يك يا چند متغير خروجي به شما برمي گرداند.  خط اول يك تابع كه خط تعريف تابع نيز ناميده مي شود بايد از ترتيب زير پيروي نمايد:

–      function كلمه

–     نام متغير يا متغيرهاي خروجي.  در صورت وجود بيش از يك متغــير خروجـي بـايد آنـها را در كروشه گذاشته و با ويرگول از هم جدا كنيد.

–     علامت =

–     نام تابع.  پرونده اي كه تابع در آن ذخيره مي گردد بايد داراي همين نام با دنباله .m باشد.

–     آرگومان يا آرگومانهاي ورودي (كه با ويرگول از هم جدا شده باشند) در داخل پرانتز.

 

براي مثال تابع زير، كه بـايد در پرونـده ideal.m ذخـيره گـردد، حجـم گـاز كـامل را در فشـارها و دماهاي مختلف محاسبه مي نمايد:

function v = ideal(t,p)

% ideal: Calculation of ideal gas specific volume

% v=ideal(t,p) takes the vector of temperature (t) in K

% and the vector of pressure (p) in Pa and returns the % matrix of specific volume (v) in m3/kmol.

% Start of calculations

R = 8314; % Gas constant (J/kmol.K)

for k = 1:length(p)   

    v(k,:) = R*t/p(k); % Ideal gas law

end

حال اين تابع را مي توانيد در محيط كار MATLAB، در يك برنامه اصلي و يا در تابع ديگري بكــار ببريد.  مثلا”

» p=1:10; t=300:10:400;

» vol=ideal(t,p);

» surf(t,p,vol)

» view(135,45), colorbar

mm3

توصيه مي شود در توابعي كه مي نويسيد، پس از خط تعريف تابع، كار تابع و نحــوه بكـاربردن آن را در چند خط توضيح دهيد.  خطوط توضيح پيوسته اي كه در ابتداي تــابع مـي آينـد را مـي توانيـد همانند ديگر توابع و دستورهاي موجود در MATLAB با استفاده از دستور help مرور كنيد.

 

كنترل جريان محاسبات

MATLAB داراي چندين تركيب كنترل جريان محاسبات است كه به برنامه امكان مي دهد كه در حين اجرا تصميمات لازم را اتخاذ كرده و ترتيب اجراي دستورات را كنترل كند.  ايــن دسـتورها در زير شرح داده مي شوند.

if . . . (else . . .) end– دستور if برنامه را قادر مي سازد كه تصميم بگيرد كه چه دستورهايي بايد اجرا گردند.  مثال:

x = input(‘ x = ‘);

if x >= 0   

     y=x^2

end

عبارتي كه به دنبال كلمه if مي آيد بايد يك عبارت منطقي باشــد.  در صـورت درسـت بـودن ايـنعبارت منطقي، دستورهايي كه در سطرهاي بين if و end قرار دارند بترتيب اجــرا مـي گردنـد و در صورت نادرست بودن اين عبارت منطقي، دستورهاي گفته شده ناديده گرفته مي شوند.

 

شما همچنين مي توانيد از دستور else استفاده كنيد.  مثال:

x = input(‘ x = ‘);

if x >= 0   

   y=x^2

else   

   y=-x^2

end

در اين حـالت اگر عبارت منطقي مورد نظر درست باشد، مجموعه دسـتورهاي بيـن if و else اجــرا مي گردند و در غير اين صورت دستورهاي بين else و end قابل اجرا مي باشند.

 

for . . . end– دستور for به برنامه اجازه مي دهد كه دستورهاي درج شــده بيـن for و end را بـه دفعات معيني تكرار نمايد.  مثال:

k = 0;

for x = 0:0.2:1   

     k = k + 1   

     y = exp(-x)

end

while . . . end– در مواردي كه لازم باشد كه در حين اجراي برنامه مجموعه اي از دستورات تكرار گردند ولي تعداد دفعات تكرار معلوم نباشد بلكه اين عمليات تا ارضا شدن شرط يــا شـروط معينـي ادامه يابند، مي توان از دستور while استفاده نمود.  مثال:

x = 0;

while x < 1   

    y = sin(x)   

    x = x + 0.1;

end

همانند آنچه در مورد دستور if گفته شد، عبارتي كه به دنبال كلمه while مي آيد بايد يك عبــارت منطقي باشد كه در واقع همان شرط مورد نظر است.  در صورت صادق بودن ايــن عبـارت منطقـي، دستورهايي كه در سطرهاي بين while و end قرار دارند بترتيب اجرا مي گردند تا آنجايي كه شرط مورد نظر ديگر برقرار نباشد.

 

switch . . . case . . . (otherwise . . .) end – وقتي كه لازم باشــد كـه برنامـه بـر حسـب مقـاديرمختلف يك متغيـر، متناظرا” دستورهاي متفـاوتي را اجـرا كنـد، بكـار بـردن تركيـب switch-case راحت تر از بكار بردن چندين دستور if متداخل است.  مثال:

a = input(‘a =’);

switch a

case 1   

    disp(‘One’)

case 2   

    disp(‘Two’)

case 3   

    disp(‘Three’)

end

break و pause – دو دستور مفيد ديگر كه در برنامه نويسي مي توانند مــورد اسـتفاده قـرار گـيرند عبارتند از break و pause.  شما مي توانيد در صورت لزوم قبل از كامل شدن حلقه به كمك دستور break از آن خارج شويد.  هنگامي كه برنامه در حين اجرا به دستور pause برسد متوقف مــي مـاند تا اينكه شما كليدي را روي صفحه كليد فشار دهيد و سپس اجراي برنامه از دســتور بعـد از pause ادامه مي يابد.  مثال:

k = 0;

for x = 0:0.2:1   

    if k > 5      

       disp(‘k > 5’)      

       break   

    end   

    k = k + 1;   

    y = exp(-x);   

    disp([‘ k = ‘,num2str(k),’  y = ‘,num2str(y)])

    pause

end

در مثال فوق، برنامه هر بار پس از نشان دادن مقادير k و y متوقف مي ماند تــا اينكـه كليـدي روي صفحه كليد فشرده شود.  سپس حلقه for بار ديگر تكرار مي گردد و اين عمل آنقدر ادامه مي يــابد تا اينكه مقدار k از ٥ بيشتر شود.  در اين موقع دستور break باعث خروج برنامه از حلقــه for (و در اين مثال پايان اجراي برنامه) مي شود.

 

دیدگاه‌ خود را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *