آخرين ارسالهاي تالار

ارسالي جهت نمايش وجود ندارد

متغیرهای global مشاهده در قالب PDF چاپ فرستادن به ایمیل
نوشته شده توسط admin   
یکشنبه, 27 شهریور 1390 ساعت 21:47

فرض نمائید که m فایلی به نام test.m به دستورات زیر وجود دارد:


x=2;

k=f(3);
disp(k)

در این برنامه از تابع f استفاده شده است. فرض کنید که تابع f نیز به صورت زیر تعریف شده باشد:


function y=f(t)

y=t+x;

با اجرای برنامه test هنگامیکه متلب می خواهد تابع f را محاسبه نماید وارد این تابع می شود. در تابع f هنگامیکه متغیر y در حال محاسبه شدن می باشد، متلب به متغیر x خطا داده و برنامه متوقف خواهد شد. علت این خطا است که متغیرهای درون function اصطلاحا local یا محلی می باشند و حوزه فعالیت آنها تنها در خود function می باشد و متغیرهای درون function هیچ ارتباطی با برنامه های دیگر ندارند. با اینکه با اجرای برنامه test، متغیر x در workspace ایجاد شده است اما function، نمی تواند از x استفاده کند چرا که متغیرهای درون function محلی می باشند و function در حالت عادی نمی تواند به متغیرهای برنامه اصلی دسترسی داشته باشد.

 

 

 

global x

x=2;

k=f(3);

disp(k)



و برنامه f هم به صورت زیر اصلاح می شود:

function y=f(t)

global x

y=t+x;

اگر بخواهید x ای که در function استفاده می شود همان x برنامه اصلی در test.m باشد باید این متغیر را در هر دو برنامه، اصطلاحاً global یا عمومی نمائید. به این نکته توجه کنید که دستور global باید در هر دو برنامه نوشته شود. پس برنامه test.m به صورت زیر اصلاح می گردد:

در نتیجه به کمک دستور global ، حوزه فعالیت متغیرهای برنامه اصلی، تا داخل function ها و یا m فایل های دیگر گسترش می یابد.
با این کار متغیر x ای که در function قرار دارد، از آنجا که global شده است همان x=2 ای است که در برنامه اصلی آمده است.

منبع: ال مو یا

نظر ها (6)
  • رضا  - merc
    tanx
  • ashvazdanghe  - ردیف کردن بیتها
    سلام
    من به یه مشکل برخوردم اگه زودتر جوابمو بدین ممنون میشم توی متلب 2009 یه برنامه نوشتم که بیتهای 0و1 را در چند خط زیرهم بهم نشون میده حالا از چه چیزی استفاده کنم که این بیتها رو روی یک خط ببینم
  • admin
    سوالتون رو به همراه کد در فروم مطرح کنید.
  • ناشناس
    خیلی خیلی ممنون
  • hossein safikhani
    salam kasi mitone komakam kone
    hale daghighe in moadele?

    d/dx(x(du/dx))-u=o
    ba bc:

    u(0)=1
    &

    (x(du/dx))(0)=1 )
  • tavakoli  - حل معادله گرما در مطلب
    سلام.باتشکر از مطالب مفیدی که درسایت گذاشته اید.
    کدهای در مورد حل معادله گرما را در متلب اجرا کردم.ولی چون تابه چند ضابطه ای است مقدار dudx می خواهد .در معادله شما گفته بودید و تابع دوضابطه ای مقدار dudx چگونه اختیار کنیم.ممنون
تنها کاربران عضو شده می توانند نظر ارسال کنند!
آخرین بروز رسانی در یکشنبه, 27 شهریور 1390 ساعت 21:55