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

فرض نمائید که 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 ای است که در برنامه اصلی آمده است.

منبع: ال مو یا

  • ashvazdanghe  - ردیف کردن بیتها
    سلام
    من به یه مشکل برخوردم اگه زودتر جوابمو بدین ممنون میشم توی متلب 2009 یه برنامه نوشتم که بیتهای 0و1 را در چند خط زیرهم بهم نشون میده حالا از چه چیزی استفاده کنم که این بیتها رو روی یک خط ببینم
  • admin
    سوالتون رو به همراه کد در فروم مطرح کنید.
  • ناشناس
    خیلی خیلی ممنون
نوشتن نظر
Your Contact Details:
نظر:
[b] [i] [u] [url] [quote] [code] [img]   
:D:):(:0:shock::confused:8):lol::x:P:oops::cry:
:evil::twisted::roll::wink::!::?::idea::arrow:
Security
کد آنتی اسپم نمایش داده شده در عکس را وارد کنید.
آخرین بروز رسانی در یکشنبه, 27 شهریور 1390 ساعت 18:25