کار کردن با توابع درونی متلب
کار کردن با توابع داخلی(built-in)
توابع داخلی، توابعی هستند که به همراه متلب می آیند و به یک افزونه یا add-on تعلق دارند. شما معمولا به سورس کد این توابع دسترسی ندارید، و باید این توابع را مانند جعبه ای تصور کنید که یک ورودی دارد و یک خروجی را تولید می کند. شما تا به حال، برای انجام کارها در متلب، از توابع داخلی استفاده کرده اید. به عنوان مثال اگر به خاطر داشته باشید، در فصل 8، از توابع ()input و ()disp استفاده کردیم که جزو توابع داخلی محسوب می شوند. در بخش های زیر، مطالبی در مورد توابع داخلی خواهید آموخت.
روش یادگیری توابع داخلی در متلب
برای یادگیری توبع داخلی متلب، راه های زیادی وجود دارند. اگر از قبل نام یک تابع را می دانید، کافیست دستور ('نام تابع')help را در متلب وارد کنید تا آموزش های مربوط به این تابع را مشاهده کنید. هم اکنون این موضوع را امتحان کنید. مثلا عبارت ('help('input را در متلب تایپ کنید و سپس کلید Enter را فشار دهید. خروجی همانند عکس 9.1 (در پایین) خواهد بود.
اگر عبارت help('elfun') را در متلب تایپ کنید و کلید Enter را فشار دهید، لیستی از توابع مقدماتی ریاضی در اختیار شما قرار خواهد گرفت. در صورتی که عبارت help('specfun') را در متلب تایپ کنید و سپس کلید Enter را فشار دهید، لیستی از توابع تخصصی ریاضی، به شما نمایش داده خواهند شد.
گاهی اوقات، راهنمای ارائه شده توسط تابع ()help بیش از حد طولانی می شود. و بهتر آنها را صفحه بندی کنیم. بنابراین ، شما می توانید از تابع ()more استفاده کنید تا اطلاعات یک تابع را صفحه بندی کنید. پس، قبل از اینکه از تابع ()help استفاده کنید، دستور more('on') را تایپ کنید و کلید Enter را فشار دهید تا متلب به حالت صفحه به صفحه(paged mode)، برود. با انجام این کار، در صورتی که اطلاعات تابع، بیش از یک صفحه طول داشته باشند، یک علامت مانند زیر را در پایین صفحه مشاهده خواهید نمود:
--more--
اکنون برای مشاهده ی صفحه ی بعدی، کلید فاصله(space) را فشار دهید. اما اگر تنها می خواهید که خط بعد را مشاهده کنید، کافیست به جای کلید فاصله، کلید Enter را فشار دهید. هنگامی که دیگر به مطالعه ی راهنما به صورت صفحه به صفحه نیاز نداشتید، کافیست دستور more('off') را تایپ کنید و کلید Enter را فشار دهید. با انجام این کار، حالت صفحه به صفحه، غیرفعال می شود.
تابع ()help تابع مفیدی است زیرا اطلاعات را به طور مستقیم در پنجره ی Command نمایش می دهد. اما گاهی اوقات، استفاده از تابع ()doc مناسب تر است. بعنوان مثال اگر عبارت doc('input') را تایپ کنید و کلید Enter را فشار دهید، خواهید دید که خروجی همانند عکس 9.2 خواهد بود. از این مورد زمانی باید استفاده کنید که می خواهید جزئیات یک تابع را به طور دقیق مشاهده کنید. اگر که با استفاده از تابع ()help اطلاعات مورد نظر خود را پیدا نکردید، می توانید از تابع ()doc استفاده کنید تا اطلاعات بیشتری را به دست بیاورد. استفاده از تابع ()help، همیشه امکان پذیر نیست زیرا ممکن است شما نام دقیق آنچه می خواهید بیابید را ندانید.
یک تابع کاربردی دیگر که قصد معرفی آن را داریم، تابع ()docsearch است. از این تابع زمانی استفاده می شود که شما نام دقیق تابعی را نمی دانید و در مورد آن تابع اطلاعات کمی دارید. بعنوان مثال در پنجره ی Command، دستور docsearch('input') را وارد کنید و کلید Enter را فشار دهید. خواهید دید که لیستی همچون عکس 9.3 به شما نشان داده می شود.
توجه داشته باشید که در میان مقالات و نوشته های ظاهر شده، اطلاعات مربوط به تابع ()input در ابتدای لیست قرار دارند اما یک سری مطالب مرتبط نیز به خوبی نمایش داده می شوند.
یکی از راه های جالب برای جستجوی توابع داخلی این است که از تابع ()lookfor استفاده کنیم. در این مورد، متلب در مستندات خود جستجو نمی کند بلکه در فایل های سورس کد جستجو می کند.برای اینکه مشاهده کنید که این نوع جستجو چگونه کار می کند، دستور ('lookfor('input را تایپ کنید و کلید Enter را فشار دهید. خواهید دید که خروجی همانند عکس 9.4 خواهد بود. توجه کنید که تابع ()input نیز در لیست قرار دارد، اما در بالای لیست قرار ندارد.
در صورتی که واقعا تصمیم دارید تا از منظر کدنویسی، درباره ی توابع داخلی، اطلاعات بیشتری به دست بیاورید، از تابع ()which استفاده کنید.
این تابع، مکان و موقعیت تابع داخلی مورد نظر را به شما اعلام می کند. بعنوان مثال دستور which('input') را تایپ کنید و کلید Enter را فشار دهید. خواهید دید که موقعیت تابع داخلی مورد نظر در سیستم شما نمایش داده می شود.
مثلا در سیستم نویسنده، خروجی به صورت زیر خواهد بود:
built-in (C:\Program Files\MATLAB\R2013b\toolbox\matlab\lang\input).
اکنون شما می دانید که تابع ()input در پوشه ی lang قرار دارد. اما شما نمی دانید که چه توابع مرتبطی ممکن است در این پوشه وجود داشته باشند. پس از تابع ()what استفاده کنید تا اطلاعات اضافی را در مورد محتوای پوشه ی lang به دست بیاورید. برای اینکه این موضوع را امتحان کنید، دستور what('lang') را وارد کنید و کلید Enter را فشار دهید. خواهید دید که خروجی مانند عکس 9.5 خواهد بود.
اگر به خروجی دقت کنید، خواهید دید که شامل تابع ()disp نیز می باشد. از این تابع به همراه تابع ()input در فصل 8 استفاده کرده ایم. همچنین شما در این لیست، تعدادی تابع جذاب را مشاهده می کنید گه می توانند مفید واقع شوند.
وارد کردن داده ها و خارج کردن داده ها
ماهیت یک تابع، همچون یک جعبه است. که درون آن چیزی را وارد می کنیم و داده ها از خروجی آن بیرون می آیند. درست مانند یک چرخ گوشت. مدیریت داده ها، یکی از ضروری ترین جزء توابع است. برخی از توابع تنها نیاز به ورودی دارند و برخی نیز تنها خروجی دارند و برخی نیز به جای کار کردن مستقیم بر روی داده ها، وظایف دیگری را انجام می دهند. بعنوان مثال، تابع ()clc پنجره ی Command را پاک می کند و هیچ نیازی به تعیین ورودی ندارد و برای انجام این کار هیچ داده ای را بر نمی گرداند. هر تابع وظیفه ای را انجام می دهد. ایجاد یک تابع که هیچ کاری انجام ندهد، بی معنی است. مشکل بیشتر مردم در مورد توابع درونی، مشخص کردن ورودی ها(آرگومان ها) و خروجی های ضروری است.
بهترین راه برای یافتن این اطلاعات، این است که از توابع ()help و ()doc استفاده کنیم. برای این مورد، راحت ترین راه، استفاده از تابع ()doc می باشد. آرگومان های ورودی و خروجی در پایین صفحه ی راهنما قرار دارند. برای اینکه خودتان این موضوع را مشاهده کنید، عبارت doc('input') را تایپ کنید و کلید Enter را فشار دهید. حالا در صفحه ی نتیجه، به سمت پایین اسکرول کنید. خواهید دید که ورودی ها و خروجی ها همانند عکس 9.6 نمایش داده خواهند شد.
در این مورد شما بعنوان آرگومان ورودی، یک prompt را مشاهده می کنید، این یعنی باید این آرگومان را به صورت یک رشته ارائه دهید. این مستندات توضیح می دهند که از prompt مورد نظر باید برای درخواست یک نوع ورودی توسط کاربر استفاده نمود. همان طور که در عکس 9.6 مشاهده می کنید، خروجی می تواند دو حالت را بپذیرد که عبارتند از: یک آرایه که نسبت به ورودی ایجاد شده است و یا یک رشته که دقیقا همان متنی که کاربر تایپ کرده است.
هرگاه که برای یک تابع، دو نوع خروجی مشاهده می کنید، بدان معنی است که باید به آن تابع اطلاع دهید که کدام نوع خروجی ارائه داده شود و به صورت پیش فرض باشد. در این مورد، مجبوریم که آرگومان دوم را برای تابع ()input مشخص کنیم و برای مشخص کردن خروجی بعنوان رشته(string) مقدار 's' را قرار دهیم. مقدار پیش فرض خروجی برای این تابع، array است.
- نوشته شده توسط احسان عباسی
- بازدید: 8424