متلب
صفحات وبلاگ
نویسنده: پ متلب - پنجشنبه ۱٧ فروردین ،۱۳٩۱

تا به حال تنها از توابعی استفاده میکردیم که قبلا برای matlab تعریف شده بود؛ ولی ممکن است این

توابع نتوانند نیازهای ما را پاسخ دهند، یا بخواهیم توابعی با کاربری خاص بنویسیم.

 

یک تابع (function file) مانند یک m-file است با این تفاوت که خط اول آن به صورت زیر است:

 

 

function [outputs]= name(inputs)

 

این خط مشخص می کند که این M-file یک تابع است. همچنین تعداد ورودی ها و خروجی ها را مشخص

کرده و هر یک را در یک متغیر قرار می دهد.در صورتی که تنها یک ورودی داشته باشیم نیازی به کروشه []

نیست .name نیز نام تابع را مشخص می کند.

 

بهتر است برای خواناتر شدن برنامه از عبارات توضیحی استفاده کنیم.این عبارات باید ورودی ها و خروجی

ها را مشخص کند.همچنین می توان نام برنامه نویس و تاریخ نوشتن آن را نیز مشخص کرد. این خطوط با

اجرا دستور help name << به نمایش در می آیند .

به عنوان مثال  M-file زیر دستور prod را شبیه سازی می کند:

 

 

 

function p=prod2 (x)

% function p=PROD2 (x)

% shabih sazi farman PROD

% a:radif b:sotoon

[a,b]=size2(x);

p(1,:)=x(1,:);

for i=2:a,

% satr aval p dar satr haye x zarb shode

% va dar satr aval p zakhir mishavad

p(1,:)=p(1,:).*x(i,:);

end

% if x is rowvector

while a==1;

p=1;

for i=1:b,

p=p*x(i);

end

a=0;

end

نویسنده: پ متلب - پنجشنبه ۱٧ فروردین ،۱۳٩۱

نرم افزار متلب MATLAB نیز مانند زبان های برنامه نویسی دیگر دارای متغیراست و قانون هایی برای متغیرها دارد.در اینجا قوانین نرم افزار متلب MATLAB برای نامگذاری متغیرها را می توانید مشاهده کنید:

1)بین حروف متغیر نباید فضای خالی وجود داشته باشد,متغیر باید یک کلمه باشد.

2)نرم افزار متلب MATLAB نسبت به حروف بزرگ و کوچک اسامی متغیرها حساس می باشد.

3)اسامی متغیر ها حداکثر 31 کاراکتر می تواند باشد.

4)اسامی متغیر ها و M-File ها باید با یک حرف شروع شود.بعد از آن می توان از حروف,اعداد,یا کاراکتر زیر خط استفاده کرد.از علائم نقطه گذاری در نامگذاری متغیرها نمی توان استفاده نمود.زیرا اکثر آن ها در نرم افزار متلب MATLAB دارای معنی خاصی می باشد.

5)در نرم افزار متلب MATLAB از برخی کلمات نمی توان برای نامگذاری متغیرها استفاده کرد که این کلمات,کلمات کلیدی می باشند.برخی از این کلمات در ذیل آمده است,در صورت استفاده از این کلمات با پیام خطا مواجه می شوید:

else,try,global,catch,continue,persistent,break,switch,otherwise,case,elseif,for,end,while,function,return

نویسنده: پ متلب - پنجشنبه ۱٧ فروردین ،۱۳٩۱

مقدمه ای بر متلب MATLAB

متلب نام یکی از نرم‌افزارهای رایانه‌ای برای انجام محاسبات ریاضی است. واژه متلب هم به معنی محیط محاسبات رقمی و هم به معنی خود زبان برنامه‌نویسی مربوطه است از ترکیب دو واژهٔ MATrix و LABratuary ایجاد شده است. این نام حاکی از رویکرد ماتریس محور برنامه است، که در آن حتی اعداد عادی هم به عنوان ماتریس در نظر گرفته می‌شوند.

با نرم‌افزار متلب می‌توان ماتریس‌ها را به راحتی تغییر داد، توابع یا داده‌ها را ترسیم کرد، الگوریتم‌ها را اجرا کرد و همچنین صفحات رابط میان کاربر و رایانه ایجاد کرد.

متلب که از محصولات شرکت مث‌ورکس (The MathWorks) است، برای گروه‌های مختلف مهندسان رشته‌های مختلف از جمله مهندسی برق، مکانیک، کامپیوتر و ... کاربرد بسیاری دارد.

قدرت متلب

 برنامه‌های متلب همگی متن‌باز هستند و در واقع متلب مفسر است نه کامپایلر. قدرت متلب از انعطاف‌پذیری آن و راحت بودن کار با آن ناشی می‌شود، همچنین شرکت سازنده و گروه‌های مختلف، از جمله دانشگاه‌های سرتاسر جهان و برخی شرکتهای مهندسی هر ساله جعبه‌ابزارهای خاص-کاربردی به آن می‌افزایند که باعث افزایش کارای و محبوبیت آن شده است. فهرستی از این جعبه‌ابزارها در زیر آمده است:

    جعبه‌ابزار مخابرات متلب
    جعبه‌ابزار کنترل متلب
    جعبه‌ابزار فازی متلب
    جعبه‌ابزار محاسبات متلب
    جعبه‌ابزار سیمولینک متلب
    جعبه‌ابزار تخمین متلب
    جعبه‌ابزار آمار متلب
    جعبه‌ابزار جمع‌آوری دادهٔ متلب
    جعبه‌ابزار شبکه عصبی متلب
    جعبه‌ابزار پردازش تصویر متلب
    جعبه‌ابزار پردازش صوت متلب
    جعبه‌ابزار احتمالات متلب
    جعبه‌ابزار کارگاه بلادرنگ متلب

 

MATLAB محیطی برای محاسبات عددی و زبان برنامه سازی می باشد که توسط MATH WORKS ساخته شده است ، MATLAB   امکان دستکاری و کارکردن ساده با ماتریس ، رسم نمودار توابع و دیتا ، اجرای الگوریتم ، ساخت واسط کاربر و واسط برنامه با سایر زبانهای برنامه نویسی را بوجود می آورد . اگر چه MATLAB مخصوص محاسبات عددی است اما toolbox ی با استفاده از موتور maple آنرا به سیستم کامپیوتری – جبری تبدیل می کند . این نرم افزار توسط یک میلیون نفر در دانشگاهها و صنعت مورد استفاده قرار می گیرد . هزینه این نرم افزار برای مصارف تجاری بدون tool box حدود 2000 دلار آمریکا و برای مصارف دانشگاهی با toolbox محدود حدود 100 دلار آمریکا است .

 
متلب  
بخش اول - ملزومات و پیش نیازهای آموزش MATLAB

این آموزش شما را به طور مرحله به مرحله با جنبه های مختلف MATLAB آشنا می کند . پس از کامل نمودن این دوره آموزشی شما به سادگی با استفاده از HELP MATLAB می توانید ویژگی های پیشرفته MATLAB را یاد بگیرد . و همچنین در استفاده از ویژگی های پیشرفته MATLAB راحت خواهید بود و قادر خواهید بود نکات بسیار کاربردی و پیشرفته تری که به رشته تحصیلی یا کارتان مربوط می شود را به خودتان آموزش بدهید .

شما باید دارای مهارت های ا ولیه استفاده از کامپیوتر باشید بعنوان مثال شما باید قادر باشید که برنامه ای را اجرا کنید ، آنرا ببندید و فایلهایتان را ذخیره کنید ، نوشته را کات کنید و در جای مورد نظر پیست کنید و ...

شما باید بدانید که از یک نرم افزار واژه پرداز چگونه استفاده کنید ، مانند نوت پد در ویندوز که شما می توانید از آن برای نوشتن برنامه های MATLAB استفاده کنید .همچنین MATLAB نرم افزار واژه پرداز مخصوص خود را دارد که شما می توانید از آن استفاده کنید (‌که در این آموزش به شما نشان خواهیم داد )

شما باید دانش اولیه ای در مورد جبر و مثلثات داشته باشید مانند آنچه که در دبیرستان پوشش داده شده همچنین اطلاعاتی در مورد جبر خطی ( مانند ماتریس ها ، بردارها و معکوس آنها و ... ) دانستن این موارد موقع شروع آموزش MATLAB بسیار سودمند است اما اصول جبر خطی مورد نیاز در این آموزش شرح داده خواهد شد

ما در این آموزش با یکدیگر تعامل خواهیم داشت و آموزش همراه کار و تمرین خواهد بود . در حالیکه شما صفحه تمرین را مطالعه می کنید باید نرم افزار MATLAB را در پنجره جداگانه ای اجرا کنید و تمرینات را حل کنید .

حالا شما آماده اید که آموزش MATLAB را شروع کنید .

امیدوارم اوقات خوشی با MATLAB داشته باشید . حین آموزش خواهش می کنم تا جایی که امکان دارد تمرین حل کنید چون بهترین راه یادگیری MATLAB استفاده از آن است .
 
 
بخش دوم - آموزش بسیار مقدماتی MATLAB
 
 
MATLAB برنامه ای است که هنگام مواجه شدن با مسائل ریاضیاتی بسیار سودمند خواهد بود مخصوصا در زمینه تکنیک و مهندسی .

شما می توانید از ویژگی built-in MATLAB برای حل بسیاری از مسائل بدون انجام زحمت خاصی ، بهره ببرید از معادلات دو معادله دو مجهول ساده مانند

X + 2Y = 24
12X - 5Y = 10

گرفته تا معادلات بسیار پیچیده مانند فاکتور گیری چند منظوره ، تطابقت منحنی با اطلاعات داده شده ، انجام محاسبات با استفاده از ماتریس ، انجام مسائل مربوط به پردازش سیگنال مانند تبدیلات فوریه ، و ساخت و گسترش شبکه های عصبی .

یک جنبه بسیار قدرتمند و سودمند MATLAB این است که برای رسم بسیاری از انواع منحنی ها مفید واقع می شود و شما را قادر می کند تا توابع پیچیده ماتریسی را رسم کنید و در کل یک آزمایشگاه دیتا است . بعنوان مثال سه شکل زیر با استفاده از توابع چاپ ( plotting ) ساخته شده اند .

                  
آموزش MATLAB دقیقا شبیه آموزش رانندگی است . شما می توانید کلیه قوانین را یاد بگیرید ولی برای اینکه راننده خوبی باشید باید سوار اتومبیل شوید و برای رانندگی به خیابان بروید .

اگر شما قبلا پیش زمینه قویتری از ریاضات و برنامه سازی کامپیوتری داشته باشید شما سریعا یاد می گیرید که از MATLAB چگونه برای اهداف طراحی و یا زمینه کاری خودتان استفاده کنید .
 

بخش سوم : اجرای نرم افزار MATLAB  

شما به سادگی می توانید با دابل کلیک روی ایکون MATLAB این نرم افزار را اجرا کنید یا اینکه با استفاده از منوی start ویندوز این نرم افزار را فراخوانی کنید . پنجره اصلی MATLAB ، دسکتاپ MATLAB نامیده می شود ، که شبیه پنجره زیر است .

شما هنگام اجرای برنامه متوجه خواهید شد که در خط فرمان متن زیر نوشته شده است :

To get started, select "MATLAB Help" from the Help menu.

علامت>>   command prompt ( گوش به فرمان ) نامیده می شود ،که مانند یک چشمک زن است و منتظر فرمان شماست . بعد از اینکه شما متنی را در خط فرمان تایپ کردید MATLAB فرمان شما را اجرا می کند و نتیجه را نشان می دهد و منتظر فرمان بعدی شما می ماند بدین ترتیب شما می توانید دستوراتی را که می خواهید وارد کنید . ( MATLAB فرمان را خط به خط اجرا می کند )

درس بعدی در مورد دستورات خاص MATLAB است ، اما الان برای اینکه فقط MATLAB را شروع کرده باشید دستور ساده زیر را وارد کنید . دستور dateرا تایپ کنید و اینتر را بزندی . MATLAB نتیجه را چیزی شبیه متن زیر نمایش می دهد .

>>date

ans =
11-Jun-1998

بدین ترتیب شما بطور موفقیت آمیز اولین دستور ATLAB را اجرا کرده اید .

دستور ساده دیگری که شما الان می توانید امتحان کنید دستور clc است (clear command window ) اگر شما در صفحه فرمان MATLAB بخواهید همه نوشته ها و دستورات را پاک کنید و چشمک زن به ابتدای صفحه برود می توانید در خط فرمان clc را تایپ کنید و اینتر بزنید . همین حالا به صفحه MATLAB بروید و این دو دستور را اجرا کنید . ساده بود . نه ؟
برای خارج شدن از MATLAB می توانید وارد منوی فایل شوید و گزینه exit matlab را انتخاب کنید یا در خط فرمان دستور quit را تایپ کنید و اینتر بزنید .و یا اینکه به سادگی پنجره را ببندید.  

 
 

 

 
 
 
 
بخش چهارم : اجرای دموها
 

 

 
 

شما قبلاً MATLAB را اجرا کرده اید و دسکتاپ MATLAB را روی دستکتاپ ویندوز باز کرده اید . اگر این کار را انجام نداده اید به بخش قبل مراجعه کنید .

حالا کمی روی Demo ها بحث می کنیم . در واقع Demo زیادی در MATLAB وجود دارد و همه آنها با تایپ کردن دستور Demo در خط فرمان نشان داده می شوند .

ما واقعا انتظار نداریم شما جزئیات MATLAB را با استفاده از این Demo یاد بگیرد اما با استفاده از این Demo ها نسبت به کاراهایی که می توانید با استفاده از MATLAB انجام دهید دید بهتری خواهید یافت . حتی در این Demo چند بازی هم وجود دارد و بعضی از آنها هم کاملا گرافیکی هستند و شما می توانید با استفاده ازاین Demo ها از MATLAB لذت ببرید . MATLAB ابزاری قدرتمند برای حل بسیاری از مسائل است و شما باید این قدرت را بعد از آشنایی با دموها درک کنید .
خوب برای شروع درخط فرمان Demo را تایپ کنید و اینتر بزنید . با این کار صفحه Demo MATLAB بالا می آید و منتظر می ماند تا شما دموی مورد نظرتان را انتخاب واجرا کنید . پنجره Demo MATLAB مشابه صفحه زیر است

 

در این مبحث نمی توانیم به کل دموها سر بزنیم ولی شروع کردن یکی از دموها را به شما نشان می دهیم و شما می توانید برای بقیه دموها نیز همین کار را انجام دهید .

برای دیدن لیست دموهای مختلف روی علامت + کنار گزینه matlab کلیک کنید با اینکار شما می توانید دموهایی در مورد ماتریس ها ،‌اعداد ، اجسام گرافیکی و ... را مشاهده کنید . در لیست هر یک از دموها ، دموهای متعددی در آن مورد وجود دارد .

پنجره سمت راست شما چکیده ای در مورد دموی انتخابی به شما نشان می دهد . بعنوان مثال اگر شما gallery را بعنوان دسته مورد نظر خودتان انتخاب کنید  text box سمت راست چیکیده ای از این دسته دموها را به شما نشان می دهد .

شما می توانید دموها ی مختلفی را با توجه به کلاس انتخابی تان ببینید . در کلاس gallery دموهایی به نامهای Knot, Quiver, Klein IIو ... وجود دارد اگر شما یکی از این دموها را انتخاب کنید اطلاعاتی با توجه به دمو در سمت راست نمایش داده می شود . و دو گزینه وجود دارد.

1-      اجرای دمو

2-      دیدن کدهای دمو

بعنوان مثال این کار را انجام دهید . کلاس gallery را در صفحه MATLAB خود انتخاب کنید سپس دموی spherical surface harmonicحال شما باید پنجره زیر را ببینید

 

این دمو به شما یک مثال گرافیکی خوب را نشان مید هد که شما می توانید با استفاده از MATLAB به آن برسید .

حالا کمی وقت صرف کنید و سایر دموها را انتخاب و اجرا کنید تا محدوده توانایی و امکانات MATLAB را بدرستی درک کنید .

قبل از شروع شاید بخواهید دستور intro demo را امتحان کنید . این مثال دیگری است که مقدمه ابتدایی از توانایی های MATLAB را به شما نشان می دهد . برای اجرای intro کلاس matlab از دموها را انتخاب کنید و سپس matrices بعد basic matrix operation یا اینکه دستور play show intro را تایپ کنید پنچره دیگری بالا می آید و شما می توانید با استفاده از دکمه هایی که در این پنجره وجود دارد جزئیات این دمو را مشاهده کنید .

 

 
 بخش پنجم : استفاده از help

متلب دارای سیستم help گسترده ای است ، که شامل جزئیات و اطلاعات help در مورد کلیه دستورها و توابع متلب می شود . این سیستم help برای افرادی که مبتدی هستند بسیار مناسب خواهد بود ، اما حتی بعد از اینکه شما به یک متخصص متلب بدل شدید ، از این سیستم برای یادگیری سایر توابع متلب که تا به حال از آنها استفاده نکرده اید استفاده خواهید کرد . این درس به شما می آموزد که چگونه از این سیستم استفاده کنید

دسترسی به help از طریق خط فرمان :

سه تابع اصلی وجود دارد که شما می توانید از آنها برای کسب اطلاعات در مورد توابع دیگر استفاده کنید : help ، helpwin ( اختصاری help window  ) و doc ( اختصاری documentation  ) . تابع help و helpwin اطلاعات مشابهی به شما می دهند ، اما با پنجره های متفاوت ، دستور doc یک صفحه html با یک سری اطلاعات بیشتر را نمایش می دهد .

قسمت پایین نمایش help در مورد تابع date را به شما نشان می دهد که این نمایش با استفاده از دستوارات متفاوت انجام شده .

help date

DATE Current date as date string. S = DATE returns a string containing the date in dd-mmm-yyyy format.

See also NOW, CLOCK, DATENUM

توجه : خروجی help معمولاً توابعی که به موضوع مربوط هستند را نیز نشان می دهد . در این مثال ، help علاوه بر موضوع اصلی به شما می گوید : See also NOW, CLOCK, DATENUM. حالا شما می توانید در مورد همین توابع نیز از help  استفاه کنید

helpwin date

توجه : محتوای اطلاعات دستور help و helpwin یکسان است ولی بهتر است از helpwin استفاده کنید چون :

1-      متن در صفحه های مجزا نشان داده می شود

2-      شما در قسمت see also می توانید روی تابع یا توابعی که در همین قسمت لیست شده کلیک کنید تا اطلاعاتی در مورد آنها کسب کنید تا اینکه مجبور باشید آنرا در خط فرمان تایپ کنید تا اطلاعاتی در مورد آن بدست آورید .

3-      لینک موضوعات پیش فرض ، کلیه دسته بندی ها را لیست می کند و شما می توانید تابع مربوطه با دسته بندی مربوطه را ببینید . بعنوان مثال ، اگر شما بخواهید بدانید خروجی دستور پلات x  بر حسب y چیست می توانید روی لینک matlab\graph2d topic کلیک کنید .

doc date

توجه : خروجی دستور doc بسیار کامل است و فقط یه قسمت از اطلاعات خواسته شده در مورد موضوع مورد نظر نیست بلکه مثال های کاملی ارائه می کند که می توانند مورد مطالعه قرار گیرند یا اجرا شوند .

سعی کنید برای توابع مقابل از دستورات مختلف اجرای help  استفاده کنید : magic, fft, and surf

استفاده از جستجوگر help متلب

منبع دیگر help در متلب ، جستجوگر help  متلب است . شما می توانید جستجوگر help  متلب را با تایپ دستور helpbrowser در خط فرمان متلب فراخوانی کنید ، روی دکمه ؟ کلیک کنید یا با انتخاب Start->MATLAB-> از desktopاین جستجوگر را فرخوانی کنید .

جستجوگر help دو قسمت عمده دارد ، help navigator و صفحه نمایش . صفحه نمایش ، همانگونه که از نامش پیداست ، اطلاعاتی در مورد موضوع انتخاب شده را نشان می دهد . help navigator در قسمت سمت چپ جستجوگر قرارگرفته ، و برای هدایت کردن از طریق اطلاعات online در مورد موضوع انتخاب شده کاربرد دارد . این قسمت در برگیرنده موارد زیر است :

    فیلتر فراورده
    نوار محتویات
    نوار شاخص
    نوار دمو
    نوار جستجو
    نوار favorit

این بخش منبع گسترده ای برای شما خواهد بود اگر بدنبال یادگیری نکات بیشتری در مورد موضوع داده شده باشید . نوار سرچ در مورد موضوع مورد نظر از میان کلیه اطلاعات موجود جستجو می کند ، و لغات کلیدی که آنها را سرچ کرده اید را بصورت highlight مشخص می کند تا خواندن اطلاعات مورد نظر راحتتر باشد .

حالا با استفاده از امکانات سرج در مورد help از جستجوگر خودش استفاده کنید

 
بخش ششم: ساخت متغیر
 
یکی از جنبه های اصلی متلب متغیر ها هستند ، و شما همواره از آنها استفاده می کنید . در اصل ، یک متغیر مکانی است برای یک مقدار که شما می توانید نامی را به آن نسبت دهید . منظور ما این است که ، هنگامی که چیزی را بعداً محاسبه خواهید کرد ، شما می توانید ازاین مقدار استفاده کنید که متغیری است که بعنوان قسمتی از محاسبات جدید بکار رفته . بیاید تا برای واضح تر شدن مطلب از چند مثال استفاده کنید .

در ساده ترین حالت ، متلب می تواند بعنوان یک ماشین حساب جیبی باشد . بعنوان مثال دراینجا شما چند محاسبه ساده با استفاده از متلب مانند یک ماشین حساب انجام می دهید .

4 + 10
ans = 14
5 *10 + 6
ans = 56
(6 + 6) / 3
ans = 4
9^2
ans = 81

شما می توانید ببینید که متلب کلیه اپراتورهای اصلی ریاضیاتی را شامل + ، - ، * ، / ، ^ و ... را ساپرت می کند . و شما می توانید عملگر های را با قرار دادن آنها در داخل پرانتز بصورت دسته و گروه در آورید . با این وجود عبارت ans دقیقا چیست ؟ ans اختصاری answer یا همان پاسخ است ، و در متلب این عبارت بعوان نام پیش فرض متغیر ها در نظر گرفته شده . و شما می توانید به متغیری که فعلا اسمی برای ان انتخاب نشده فقط با تایپ عبارت ans دست پیدا کنید .

4 + >>5

ans = 9

 >>ans

ans = 9

با این وجود اگر معادله جدیدی وارد شود ، مقدار ans تغییر خواهد کرد .

>>ans + 10

ans = 19

حالا شما هم متغیر های خودتان را بعنوان تمرین وارد کنید .

متغیر ans به خودی خود سودمند نیست ، اما قدرت حقیقی ان در این است که شما می توانید متغیر خودتان را تعریف و استفاده کنید . بعنوان مثال :

>>a = 10

a = 10

 >>b = 20

b = 20

 >>c = 30

c = 30

 >>a

a = 10

 >>the_average = (a + b + c) / 3

the_average = 20

حالا بیایید بگوئیم که شما متغیر های زیادی را تعریف کرده اید . احتمالاً نام کلیه متغیر هایی را که تعریف کرده اید بخاطر نخواهید آورد ، پس داشتن لیستی از کلیه متغیر هایی که تعریف شده اند سودمند خواهند بود . این دقیقا چیزی است که دستور whos انجام می دهد . حالا با تایپ کردن دستور whos در خط فرمان و زدن اینتر شما می توانید نام و مقدار کلیه متغیر هایی را که تا کنون وارد کرده اید ببینید . بعنوان مثال :

>>a = 5

a = 5

 >>b = 6

b = 6

 whos

Name
    
Size
    
Bytes
    
Class
a
    
1x1
    
8
    
double array
b
    
1x1
    
8
    
double array

در کل دو عنصر داریم که از شانزده بیت استفاده کردهاند

برای پاک کردن متغیر هایی که قبلا وارد کرده ایدو در حافظه ذخیره شده اند چه کاری باید انجام داد ؟ پاسخ این سوال دقیقا پاسخ به این است که دستور clear چه کاری انجام می دهد . clear را در خط فرمان تایپ کنید ، خواهید دید که کلیه متغیر ها و مقادیری را که قبلا ذخیره شده اند را پاک می کند . مثال فوق را ادامه می دهیم .

whos

Name    Size      Bytes     Class

a          1x1       8          double array

b          1x1       8          double array

Grand total is 2 elements using 16 bytes

 clear

 whos

جلوگیری از نمایش نتایج بااستفاده از «؛»

اگر بعد از دستور سمیکولون تایپ شود باعث می شود که نتیجه نشان داده نشود . اگر شما عبارتی تایپ کنید ( مثلا b=4+5 ) و در انتهای آن سمیکولون بگذارید ، سپس متلب عبارت را محاسبه می کند ولی نتایج را در حافظه بصورت داخلی ( بدون نمایش ) ذخیره می کند . بعنوان مثال :

>>a = 10;

>>b = 20;

>>c = 30;

>>d = 40;

>>the_average = (a + b + c + d) / 4

the_average =

25

the_average;

>>b

b =

20

>>e = 50

e =

50

the_blank_average = (a + b + c + d + e) / 5;

>>the_blank_average

the_blank_average =

30

ممکن است اینطور به نظر برسد که استفاده از سمیکولون زیاد هم مهم نیست ، اما در حقیقت سمیکولون همیشه دم دست است و همیشه استفاده می شود . نتیجه نهایی عملیاتی که در متلب انجام داده اید برایتان مهم است ، که با ترکیب بسیاری از داده ها و نتایج موقت و متغیر های میانی  محاسبه می شود . و با افزودن سمیکولون به انتهای دستوری که مقدار آن موقت یا نتیجه بصورت نتیجه میانی است باعث می شود که نتیجه آنها نشان داده نشود . بعنوان مثال ، در مثال بالا سمیکولون بعداز متغیر ها a,b,c,d تایپ شده است ولی فقط نتیجه نهایی که میانگین این چهار متغیر است مهم می باشد و می بینیم که سمیکولون بعد از عبارت the_average تایپ نشده است و نتیجه این دستور نشان داده می شود .
 

نویسنده: پ متلب - چهارشنبه ۱٦ فروردین ،۱۳٩۱

آموزش سیمولینک متلب _ matlab simulink


Click this bar to view the full image.

سلام دوستان در این تاپیک قصد دارم آموزش سیمولینک متلب رو که توسط یکی از دوستان ارائه شده قرار بدم . امیدوارم مفید واقع بشه . همونطور که میدونید نرم افزار matlab واسه یک رشته خاص طراحی نشده پس همه میتونن از این آموزش استفاده کنند .

SIMULINK
سیمولینک یکی از متعلقات MATLAB می باشد که امکان ایجاد سریع و دقیق مدل کامپیوتری سیستمهای دینامیکی را با استفاده از نمودار بلوکی برای مهندسین فراهم می سازد. سیستمهای غیر خطی پیچیده را می توان توسط آن بسادگی مدل نمود. تحلیل و طراحی سیستمهای کنترل توسط آن براحتی امکانپذیر است.

Click this bar to view the full image.

نحوه کارکردن با Simulink رو به شما آموزش بدم پس اگه تا حالا با Simulink کار نکردید و یا مشکلاتی در کارکردن با اون دارید میتونید با من همراه باشید .

سیمولینک نرم افزاریه که شما برای شبیهسازی سیستمهای دینامیکی، میتونید از اون استفاده کنید این نرمافزار زیرمجموعه نرمافزار متلبه که دارای کتابخانههای زیادی در زمینه رشتههای مختلف از جمله برق و مکانیکه. اگه ما نرمافزار متلب رو فصل مشترک رشتههای مهندسی در محاسبات عددی بدونیم نرمافزار سیمولینک رو میتونیم فصل مشترک رشتههای مهندسی در زمینه نرمافزارهای شبیهساز قرار بدیم.

برای شروع کار با سیمولیک ابتدا از مسیر File >> New >> Model یک مدل جدید ایجاد کنید. این مدل رو در شکل زیر مشاهده میکنید.

Click this bar to view the full image.


حالا شما باید در این مدل برحسب مسالهای که میخواهید حل کنید عناصر مورد احتیاج رو از کتابخانه سیمولینک به مدل مورد نظر انتقال دهید. برای بازکردن کتابخانه سیمولینک، رو صفحه متلب عبارت simulink رو وارد کنید و یا به روی دگمه نشان داده شده در شکل زیر که هم در صفحه اصلی متلب و هم در مدل ایجاد شده قرار دارد کلیک کنید.


همونطور که در کتابخانه سیمونیک مشاهده میکنید کتابخانههای زیادی وجود داره که هرکس بنا به رشتهای که داره با این کتابخانهها کار میکنه مثلا کسی که مکانیک خونده با قسمت مخابرات اون کاری نداره ولی آنچه که مشترک بین کلیه کاربران هستش یادگیری بلوکهای کتابخانه اصلی سیمولیکه که من تا جائیکه بتونم سعی میکنم با مثالهای متنوع، بلوکهایی رو که بیشتر به کار میان برای شما شرح بدم.

برای اولین مثال میخواهیم از یک پالس، مشتق و انتگرال گرفته و روی یک اسکوپ به همراه سیگنال اصلی نمایش بدیم بلوکهایی رو که احتیاج داریم عبارتند از: مولد پالس، انتگرالگیر، مشتقگیر، تسهیم کننده و بلوکی بسیار معروف به نام اسکوپ.

این بلوکها را در مسیرهای زیر میتونید بیابید:

Simulink >> Sources >> Pulse Generator

Simulink >> Continuous >> Integrator

Simulink >> Continuous >> Derivative

Simulink >> Signal Routing >> Mux

Simulink >> Sinks >> Scope


نحوه آوردن بلوکها هم بسیار سادس شما میتونید روی بلوک مورد نظر کلیک چپ کرده و بدون رها کردن آن، موس رو به درون مدل مربوطه ببرید و در جائیکه میخواهید بلوک رو قرار دهید، موس رو رها کنید(Drag and Drop) و یا اینکه روی بلوک مورد نظر کلیک راست کرده و گزینه Add to untitled رو انتخاب کنید بهصورت زیر:


در واقع untitled نام پیش فرض مدل شماست که میتونید اون رو تغییر بدهید. پس از اینکه تمامی بلوکها رو به مدل خودتون اضافه کردید بلوکها رو بهصورت زیر دربیارید:

Click this bar to view the full image.


برای مرتب کردن بلوکها، هم با موس میتونید جای اونها رو عوض کنید هم با کیبورد به این صورت که بلوک موردنظر رو انتخاب میکنید و با کلیدهای جهتی بر روی کیبورد، جای بلوک رو تغییر میدید. برای بزرگ کردن اندازه بلوکها از کلید R و برای کوچک کردن آنها از کلید V استفاده کنید.

حالا باید تنظیمات لازم رو بر بلوکها انجام دهیم به روی بلوک مولد پالس دوبار کلیک کنید و مانند شکل زیر تغییرات لازم رو اعمال کنید:

Click this bar to view the full image.


خروجی این بلوک یک پالس با اندازه 1 و دوره تناوب 1.5 ثانیه و بدون تـاْخیر و با پهنای پالس معادل 50 درصد دامنه هست.

(Duty Cycle =50%)

به روی بلوک تسهیم کننده دوبار کلیک کرده و تعداد ورودیهای اون رو به 3 تغییر بدید.

در تنظیمات بلوکهای انتگرالگیر و مشتقگیر و اسکوپ تغییری ایجاد نکنید.

حال باید بلوکها رو به یکدیگر متصل کنیم برای اینکار ماوس رو به سمت خروجی مولد پالس برده و زمانی که ماوس به شکل + در اومد کلیک چپ رو فشار داده و بدون ول کردن آن به سمت ورودی دومی تسهیم کننده حرکت کنید و زمانی که اشارهگر ماوس بصورت یک بعلاوه دوخط درآمد آن را ول کنید تا اتصال ایجاد شود اگر میخواهید از یک سیگنال انشعابی بگیرید از کلیک راست ماوس باید استفاده کنید مثلا در مورد اتصال ورودی انتگرالگیر باید ماوس را به سمت سیگنال خروجی مولد پالس برده و با فشردن کلیک راست به سمت ورودی انتگرالگیر حرکت کنید و زمانی که اشارهگر ماوس بصورت یک بعلاوه دوخط درآمد آن را ول کنید تا اتصال ایجاد شود باقی اتصالات را دقیقا به همینصورت و مطابق شکل زیر انجام دهید:

Click this bar to view the full image.


حالا مدل شما آماده شده و میتونید اون رو اجرا کنید البته قبل از اجرا کردن باید تنظیمات شبیهسازی(زمان اجرا، گام حرکت، نوع حلگر و ...) رو انجام بدید که فعلا برای این مثال نیازی نیست پس مدلتون رو با فشاردادن دگمه استارت، ران کنید سپس به روی اسکوپ دوبار کلیک کنید شما قاعدتا باید شکل موجهای زیر رو ببینید:

(یادتان باشد که حتما روی دگمه Autoscale کلیک کنید تا شکل موجها را کامل ببینید)

Click this bar to view the full image.


آوردن قطعات از کتابخانه، اتصال قطعات به یکدیگر و در نهایت شبیهسازی مدل مورد نظر بیان شد. اکنون در قسمت دوم با ذکر چند مثال کاربردی، آموزش Simulink رو ادامه میدهیم. در این قسمت فرض برآن است که دوستان یا قسمت اول آموزش را خواندهاند و یا اینکه اطلاعات اولیه را دارند پس از ذکر جزئیات صرفه میکنیم.

مثال اول را میخواهیم با رسم نمودار یک تابع آغاز کنیم ضابطه این تابع به صورت زیر است:


ابتدا یک پنجره جدید را باز کرده و بلوکهای مورد نیاز را از مسیرهای زیر وارد میکنید:

Simulink >> Sources >> Clock

Simulink >> Sources >> Constant

Simulink >> Math Operations >> Sum

Simulink >> Math Operations >> Gain

Simulink >> Math Operations >> Math Function

Simulink >> Sinks >> XY Graph


بلوکهای خواسته شده را به تعدادی که در شکل زیر مشاهده میکنید آورده و مانند شکل آنها را مرتب کنید:

Click this bar to view the full image.


حالا تنظیمات زیر را انجام دهید:

روی بلوک Constant دوبار کلیک نموده و مقدار آن را 3 قرار دهید

روی بلوک Gain دوبار کلیک نموده و مقدار آن را 2 قرار دهید

روی بلوک Gain1 دوبار کلیک نموده و مقدار آن را 3 قرار دهید

روی بلوک Math Function دوبار کلیک نموده و در پنجره تنظیمات باز شده نوع تابع را square انتخاب کنید

روی بلوک Math Function1 دوبار کلیک نموده و در پنجره تنظیمات باز شده نوع تابع را pow انتخاب کنید

روی بلوک Sum دوبار کلیک نموده و در قسمت List of signs علامتهای -+-+| را وارد کنید

روی بلوک XY Graph دوبار کلیک نموده و حد پائین x را 5- و حد بالای آن را 5 و حد پائین y را 150- و حد بالای آن را 150 قرار دهید

اکنون بقیه بلوکها را مانند شکل زیر به یکدیگر وصل کنید:

Click this bar to view the full image.


این کلاکی که میبینید در واقع همان زمان شبیهسازی شماست که اینجا نقش متغییر x را بازی میکند و از این جهت است که به اولین ورودی بلوک XY Graph(محور افقی صفحه مختصات) وصل شده است خروجی جمع کننده نیز برابر با متغییر y است که به دومین ورودی بلوک XY Graph(محور عمودی صفحه مختصات) وصل شده است نقش باقی بلوکها را اگر به صورت معادله توجه کنید خواهید فهمید.

احتمالا میدانید که زمان شبیهسازی سیمولینک از صفر تا ده ثانیه(بطور پیش فرض) میباشد پس اگر ما بخواهیم تابع را در بازه [5 5-] رسم کنیم، باید بازه زمانی شبیهسازی را تغییر دهیم. برای این منظور از مسیر ...Simulation >> Configuration Parameters وارد تنظیمات مدل خود میشوید حالا مانند شکل زیر، زمان شروع و پایان شبیهسازی را وارد کنید:

Click this bar to view the full image.


اکنون مدل شما آماده شده و میتوانید آن را Run کنید پس از اجراکردن بطور خودکار نمودار نمایش داده میشود:

Click this bar to view the full image.


برای مثال دوم میخواهیم یک معادله غیرخطی را حل کنیم صورت معادله به شرح زیر است:


بلوکهای مورد نیاز برای حل این معادله را از مسیرهای زیر وارد یک مدل جدید کنید:

Simulink >> Sources >> Constant

Simulink >> Sinks >> Display

Simulink >> Math Operations >> Sum

Simulink >> Math Operations >> Gain

Simulink >> Math Operations >> Math Function

Simulink >> Math Operations >> Algebraic Constraint

Simulink >> Math Operations >> Trigonometric Function

Simulink >> Math Operations >> Product

Simulink >> Math Operations >> Abs


بلوکهای خواسته شده را به تعدادی که در شکل زیر مشاهده میکنید آورده و مانند شکل آنها را مرتب کنید:

Click this bar to view the full image.


تنظیمات بلوکها:

روی بلوک Constant1 دوبار کلیک نموده و مقدار آن را 3 قرار دهید

روی بلوک Constant2 دوبار کلیک نموده و مقدار آن را 3 قرار دهید

روی بلوک Gain دوبار کلیک نموده و مقدار آن را 5 قرار دهید

روی بلوک Gain1 دوبار کلیک نموده و مقدار آن را 2 قرار دهید

روی بلوک Math Function1 دوبار کلیک نموده و در پنجره تنظیمات باز شده نوع تابع را pow انتخاب کنید

روی بلوک Trigonometric Function دوبار کلیک نموده و در پنجره تنظیمات باز شده نوع تابع را cos انتخاب کنید

روی بلوک Sum (توجه کنید که نام بلوک Sum بطور پیش فرض مخفی است و شما میتوانید روی بلوک راست کلیک کرده و از مسیر Format >> Show Name نام بلوک را آشکار کنید) دوبار کلیک نموده و در قسمت List of signs علامت های --+--| را وارد کنید و در قسمت Icon shape نوع نمایش را rectangular برگزینید

روی بلوک Sum1 دوبار کلیک نموده و در قسمت List of signs علامتهای -+| را وارد کنید

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

Click this bar to view the full image.


توجه کنید که ورودی بلوک Algebraic Constraint تابع و خروجی آن مقداری است که به ازای آن تابع ورودی صفر خواهد شد و به همین دلیل است که از خروجی این بلوک برای تغذیه آرگومانهای تابع ورودی استفاده شده است.

برای مثال آخر در قسمت دوم آموزش میخواهیم دستگاه معادلات زیر را حل کنیم:


بلوکهای مورد نیاز:

Simulink >> Sources >> Constant

Simulink >> Sinks >> Display

Simulink >> Math Operations >> Sum

Simulink >> Math Operations >> Gain

Simulink >> Math Operations >> Algebraic Constraint


بلوکهای خواسته شده را به تعدادی که در شکل زیر مشاهده میکنید آورده و مانند شکل آنها را مرتب کنید:

Click this bar to view the full image.


نکته: بلوکها را میتوانید به وسیله فشردن کلیدهای Ctrl+R بچرخانید.



تنظیمات بلوکها:

روی بلوک Constant دوبار کلیک نموده و مقدار آن را 3 قرار دهید

روی بلوک Constant1 دوبار کلیک نموده و مقدار آن را 2 قرار دهید

روی بلوک Gain دوبار کلیک نموده و مقدار آن را 2 قرار دهید

روی بلوک Gain1 دوبار کلیک نموده و مقدار آن را 3 قرار دهید

روی بلوک Gain2 دوبار کلیک نموده و مقدار آن را 7 قرار دهید

روی بلوک Gain3 دوبار کلیک نموده و مقدار آن را 5 قرار دهید

روی بلوک Gain4 دوبار کلیک نموده و مقدار آن را 3 قرار دهید

روی بلوک Gain5 دوبار کلیک نموده و مقدار آن را 4 قرار دهید

روی بلوک Gain6 دوبار کلیک نموده و مقدار آن را 4 قرار دهید

روی بلوک Sum دوبار کلیک نموده و در قسمت List of signs علامت های ++-+| را وارد کنید

روی بلوک Sum1 دوبار کلیک نموده و در قسمت List of signs علامت های ++--| را وارد کنید

روی بلوک Sum2 دوبار کلیک نموده و در قسمت List of signs علامت های ++--| را وارد کنید

اگر میخواهید خروجی را با دقت بالاتری ببینید، روی بلوکهای Display دوبار کلیک کرده و فرمت نمایش آنها را long انتخاب کنید

حالا میتوانید مدلتان را Run کرده و جواب دستگاه معادلات مربوطه را مشاهده کنید:

Click this bar to view the full image.
مثالی از اعداد مختلط شروع می‌کنیم می‌خواهیم سیستمی طراحی کنیم که دو عدد مختلط را گرفته و چهار عمل اصلی ریاضی(جمع، تفریق، ‌ضرب، تقسیم) را روی آن دو انجام دهد و همچنین قسمت حقیقی، قسمت موهومی،‌ اندازه، فاز و مزدوج یکی از آن دو عدد را محاسبه کند توجه داشته باشید که هدف از این مثال یادگیری کار با اعداد مختلط و نحوه ایجاد زیر سیستم است.

طبق معمول ابتدا یک پنجره جدید باز کرده و بلوک‌های مورد نیاز را از مسیرهای زیر وارد می‌کنید:

Simulink >> Sources >> Constant

Simulink >> Sinks >> Display

Simulink >> Math Operations >> Sum

Simulink >> Math Operations >> Gain

Simulink >> Math Operations >> Product

Simulink >> Math Operations >> Divide

Simulink >> Math Operations >> Complex to Real-Imag

Simulink >> Math Operations >> Real-Imag to Complex

Simulink >> Math Operations >> Complex to Magnitude-Angle

بلوک‌ها را مانند شکل زیر مرتب کنید:

Click this bar to view the full image.

تنظیمات بلوک‌ها:

روی بلوک Constant دوبار کلیک نموده و مقدار آن را 2+3i و نام آن را z قرار دهید

روی بلوک Constant1 دوبار کلیک نموده و مقدار آن را 3-6i و نام آن را z1 قرار دهید

روی بلوک Gain دوبار کلیک نموده و مقدار آن را 1- قرار دهید

روی بلوک Sum1 دوبار کلیک نموده و در قسمت List of signs علامت‌های -+| را وارد کنید

روی بلوک‌های Display کلیک راست نموده و از مسیر Format >> Hide Name نام بلوک‌ها را پنهان کنید

حالا مانند شکل بلوک‌ها را به یکدیگر متصل کنید:

Click this bar to view the full image.

سپس تمامی بلوک‌ها به‌جزء بلوک‌های Constant و Display را انتخاب و کلیک راست کنید و از منوی باز شده Create Subsystem را انتخاب کنید حالا مدلتان احتمالا کمی بهم‌ریخته شده است کمی آن را مرتب کنید و بلوک Subsystem را از دو طرف بکشید تا بزرگتر شود برخی از بلوک‌های Display نیز احتیاج به بزرگترشدن دارند که این را بعد از شبیه‌سازی خواهید فهمید.

نکته: شما می‌توانید با دوبار کلیک کردن در هرجایی از مدلتان، متنی دلخواه وارد کنید مثلا کنار هر کدام از بلوک‌های Display بنویسید که چه عددی را قرار است نشان دهند ضمنا می‌توانید با دوبار کلیک کردن به روی هر سیگنالی، آن را نام‌گذاری کنید.

اکنون سیستم شما آماده شده و می‌توانید آن را Run کنید:

Click this bar to view the full image.

در این مثال با نحوه‌ی ایجاد زیرسیستم آشنا شدید شما می‌توانید زیر سیستم‌های مختلفی در یک مدل(حتی زیرسیستم‌های تودرتو) ایجاد کنید زیرسیستم‌ها را معمولا برای مدل‌های پیچیده و شلوغ به‌کار می‌برند و با دوبار کلیک کردن به‌روی هر کدام از آنها، محتویات آن مشاهده خواهد شد.

در مثال بعدی می‌خواهیم پاسخ پله و پاسخ ضربه یک سیستم کنترلی را مشاهده کنیم تابع تبدیل سیستم به شرح زیر است:


این سیستم درجه 3 است و اگر پاسخ پله آن را رسم کنیم خواهیم دید که پاسخ زیرمیرا(سینوسی میراشونده) می‌باشد ضمنا می خواهیم خروجی را در دو حالت(پاسخ پله و ضربه) به فضای کاری MATLAB انتقال دهیم.

بلوک‌های مورد نیاز:

Simulink >> Sources >> Step

Simulink >> Sinks >> Scope

Simulink >> Sinks >> To Workspace

Simulink >> Continuous >> Derivative

Simulink >> Continuous >> Transfer Fcn

بلوک‌ها را مانند شکل زیر مرتب کنید:

Click this bar to view the full image.

تنظیمات بلوک‌ها:

روی بلوک Step دوبار کلیک نموده و مقدار Step time را 0 قرار دهید

روی بلوک Transfer Fcn دوبار کلیک نموده و مقدار Denominator coefficients را [1 1 3 2] قرار دهید

روی بلوک Scope دوبار کلیک نموده و سپس به منوی Parameters رفته و تعداد محورها را برابر 2 قرار دهید

روی بلوک To Workspace دوبار کلیک نموده و در قسمت Variable name عبارت s را وارد کرده و در قسمت Save format حالت Array را انتخاب کنید

روی بلوک To Workspace1 دوبار کلیک نموده و در قسمت Variable name عبارت h را وارد کرده و در قسمت Save format حالت Array را انتخاب کنید

تنظیمات مدل:

با فشردن کلید Ctrl+E به صفحه تنظیمات رفته و مانند شکل زیر عمل کنید:

Click this bar to view the full image.

اتصالات را به صورت زیر انجام دهید:

Click this bar to view the full image.

حالا Run کنید:

Click this bar to view the full image.

یادتان باشد که حتما روی دگمه Autoscale کلیک کنید تا شکل موج‌ها را کامل ببینید.

در مثال بعد می‌خواهیم با نحوه‌ی ماسک کردن آشنا شویم برای این منظور سیستمی طراحی می‌کنیم که با گرفتن پارامترهای یک مدار RLCموازی، شکل موج جریان سلف و ولتاژ خازن را نشان داده و همچنین فرکانس تشدید، ضریب کیفیت و پهنای‌باند مدار را محاسبه و نمایش دهد. مدلی مانند آنچه که در شکل زیر مشاهده می‌کنید، ایجاد کنید:

Click this bar to view the full image.

نکته: رنک بلوک‌ها را می‌توانید با راست کلیک کردن به روی آن‌ها و از مسیر Background Color و رنگ پس‌زمینه را با راست کلیک کردن به روی صفحه مدل و از مسیر Screen Color تغییر دهید.

تمامی بلوک‌ها قبلا گفته شده که در کجا قرار دارند بجزء بلوک Reciprocal Sqrt که آن‌هم در کتابخانه Math Operations قرار دارد.

توجه: بلوک‌های به رنگ قرمز، Gain و بلوک‌های به رنگ صورتی، Constant هستند.

تنظیمات بلوک‌ها:

روی بلوک R دوبار کلیک نموده و مقدار آن را R قرار دهید

روی بلوک‌های L دوبار کلیک نموده و مقدار آن‌ها را L قرار دهید

روی بلوک C دوبار کلیک نموده و مقدار آن را C قرار دهید

روی بلوک L/R دوبار کلیک نموده و مقدار آن را L/R قرار دهید

روی بلوک LC\1 دوبار کلیک نموده و مقدار آن را LC\1 قرار دهید

بلوک Sum هم مشخص است که چه تنظیماتی دارد

روی بلوک Product دوبار کلیک نموده و تعداد ورودی‌های آن را 3 قرار دهید

روی بلوک Step دوبار کلیک نموده و مقدار Step time را D و مقدار Final value را A قرار دهید

روی بلوک Scope و بلوک‌های Display کلیک راست نموده و از مسیر Format >> Hide Name نام بلوک‌ها را پنهان کنید

روی بلوک Scope دوبار کلیک نموده و سپس به منوی Parameters رفته و تعداد محورها را برابر 2 قرار دهید

حالا تمامی بلوک‌ها را بجزء بلوک Scope و بلوک‌های Display انتخاب و کلیک راست کنید و از منوی باز شده Create Subsystem را انتخاب کنید پس اندکی مرتب کردن مدل، روی بلوک Subsystem کلیک راست کرده و گزینه ...Mask Subsystem را انتخاب کنید حالا همان‌طور که می‌بینید پنجره Mask Editor به نمایش درآمده است.

تنظیمات Mask Editor:

ابتدا به تب Icon & Ports بروید و Command را در حالت image قرار داده و در قسمت Icon Drawing commands کد زیر را وارد کنید:

(('image(imread('RLC.jpg

«RLC.jpg» عکسی است که من می‌خواهم پس‌زمینه‌ی مدل قرار بدم توجه کنید که این عکس باید در مسیر متلب باشد تا آپلود شود بعد از وارد کردن کد، Apply کرده و به تب Parameters بروید و مانند شکل زیر عمل کنید:

Click this bar to view the full image.

Apply کرده و به تب Documentation بروید و مانند شکل زیر عمل کنید:

Click this bar to view the full image.

حالا دیگر OK کنید.

حالا اگر روی بلوک دوبار کلیک کنید، دیالوگی برای شما باز می‌شود تا پارامترهای مدار را وارد کنید.

مانند شکل زیر عمل کنید:

Click this bar to view the full image.

سپس Run کنید:

Click this bar to view the full image.

برای دیدن شکل موج‌ها به روی اسکوپ دوبار کلیک کرده و دگمه Autoscale را بفشارید:

Click this bar to view the full image.
ابتدا با نحوه‌ی درون‌یابی و برون‌یابی(Interpolation-Extrapolation) در محیط Simulink آشنا می‌شویم. فرض کنید در آزمایشگاه، سیستمی(سیستمی الکتریکی، مکانیکی و یا هر سیستم دیگری) با یک ورودی را مورد آزمایش قرار داده‌اید و با دادن ورودی‌های مختلف، خروجی‌های متناظر را بدست آورده‌اید بصورت زیر:

X = [1 , 1.5 , 1.8 , 2.2 , 2.7 , 3.3 , 3.9]

y = [ 2.434 , 2.667 , 2.738 , 2.956 , 2.904 , 2.819 , 2.708]

حال می‌خواهید منحنی تغییرات این سیستم را به ازای بازه‌ای پیوسته از ورودی، با کمک درون‌یابی و برون‌یابی بدست آورید. بصورت زیر عمل کنید:

بلوک‌های مورد نیاز:

Simulink >> Sources >> Clock

Simulink >> Lookup Tables >> Lookup Table

Simulink >> Sinks >> Scope

تنظیمات بلوک‌ها:

روی بلوک Lookup Table دوبار کلیک کرده و در قسمت Vector of input values بردار x و در قسمت Table data بردار y را قرار داده و OK کنید. حال باید نمودار داده‌ها را روی بلوک مشاهده کنید

تنظیمات مدل:

با فشردن کلید Ctrl+E به صفحه تنظیمات مدل رفته و مانند شکل زیر عمل کنید:

Click this bar to view the full image.

در نحوه‌ی تنظیمات، احتمالا متوجه شده‌اید که می‌خواهیم منحنی را در بازه [5 0] رسم کنیم و برای افزایش تعداد نقاط منحنی، از حداکثر گام 0.01 استفاده کرده‌ایم.

حالا مانند شکل بلوک‌ها را به یکدیگر متصل کرده و Run کنید:

Click this bar to view the full image.

خروجی به صورت زیر است:

Click this bar to view the full image.

اگر سیستم شما دو ورودی داشته باشد، از بلوک (Lookup Table (2-D و در صورت داشتن بیش از دو ورودی، می‌توانید از بلوکی به‌نام (Lookup Table (n-D استفاده کنید. همچنین برای ویرایش نمودن، تغییر نوع و رسم نمودار داده‌ها، می‌توانید با کلیک کردن به روی Edit در پنجره‌ی تنظیمات این بلوک‌ها، به پنجره‌ی Lookup Table Editor وارد شوید.

در بخش بعدی می‌خواهیم تعداد پیک‌های مثبت و منفی یک موج سینوسی را شمارش کرده و نمایش دهیم. البته شاید این مثال، اصلا کاربردی نباشد ولی نکات موجود در آن و نیز بلوک‌های معرفی شده، قطعا در مثال‌های کاربردی، به کار می‌آید.

بلوک‌های مورد نیاز:

Simulink >> Sources >> Clock

Simulink >> Sources >> Constant

Simulink >> Sources >> Sine Wave

Simulink >> Math Operations >> Gain

Simulink >> Math Operations >> Product

Simulink >> Continuous >> Derivative

Simulink >> Math Operations >> Math Function

Simulink >> Signal Routing >> Mux

Simulink >> Signal Attributes >> Data Type Conversion

Simulink >> Logic and Bit Operations >> Relational Operator

Simulink >> Logic and Bit Operations >> Logical Operator

Signal Processing Blockset >> Signal Management >> Switches and Counters >> Counter

Simulink >> Sinks >> Display

Simulink >> Sinks >> Scope

بصورت زیر بلوک‌ها را مرتب کنید:

Click this bar to view the full image.

تنظیمات بلوک‌ها:

روی بلوک Gain دوبار کلیک نموده و مقدار آن را 0.5- قرار دهید

روی بلوک Sine Wave دوبار کلیک نموده و مقدار فرکانس آن را 20*pi قرار دهید

روی بلوک Constant دوبار کلیک نموده و مقدار آن را 0 قرار دهید

روی بلوک Constant1 دوبار کلیک نموده و مقدار آن را 0 قرار دهید

روی بلوک Relational Operator دوبار کلیک نموده و در قسمت Relational operator عملگر < را انتخاب کنید

روی بلوک Relational Operator1 دوبار کلیک نموده و در قسمت Relational operator عملگر < را انتخاب کنید

روی بلوک Relational Operator2 دوبار کلیک نموده و در قسمت Relational operator عملگر > را انتخاب کنید

روی بلوک Relational Operator3 دوبار کلیک نموده و در قسمت Relational operator عملگر > را انتخاب کنید

روی بلوک Logical Operator دوبار کلیک نموده و در قسمت Icon shape نوع نمایش را distinctive انتخاب کنید

روی بلوک Logical Operator1 دوبار کلیک نموده و در قسمت Icon shape نوع نمایش را distinctive انتخاب کنید

روی بلوک Data Type Conversion دوبار کلیک نموده و در قسمت Output data type نوع داده‌ی خروجی را double انتخاب کنید

روی بلوک Data Type Conversion1 دوبار کلیک نموده و در قسمت Output data type نوع داده‌ی خروجی را double انتخاب کنید

روی بلوک Counter دوبار کلیک نموده و در قسمت Maximum count عدد 1e100 و در قسمت Output حالت Count و Reset input را غیرفعال کنید

روی بلوک Counter1 دوبار کلیک نموده و در قسمت Maximum count عدد 1e100 و در قسمت Output حالت Count و Reset input را غیرفعال کنید


تنظیمات مدل:

با فشردن کلید Ctrl+E به صفحه تنظیمات مدل رفته و مانند شکل زیر عمل کنید:

Click this bar to view the full image.

سپس بلوک‌ها را مانند شکل زیر به یکدیگر متصل کرده و Run کنید:

Click this bar to view the full image.

در شکل زیر همان‌طور که مشاهده می‌کنید نمودار زرد رنگ، تابع ورودی و نمودار صورتی رنگ، آشکارساز پیک مثبت می‌باشد.

Click this bar to view the full image.


Click this bar to view the full image.

توضیح مدل:

در طراحی این مدل، از این نکته استفاده شده است که مشتق تابع سینوسی در پیک آن برابر صفر است. در نتیجه می‌توان بوسیله‌ی عملگرهای رابطه‌ای و منطقی، یک آشکارساز پیک طراحی کرده و سپس بوسیله‌ی یک شمارنده، تعداد پیک‌ها را شمارش کرد.

توجه: در صورتی که بخواهید فرکانس موج ورودی را تا حد زیادی(مثلا 1GHz) افزایش دهید، حتما باید حداکثر گام حرکت را کاهش دهید که در غیر این صورت جواب نادرست خواهید گرفت.(چرا؟)

در مثال بعد می‌خواهیم یک مبدل آنالوگ به دیجیتال(ADC) بسیار ساده طراحی کنیم. همان‌طور که احتمالا می‌دانید،‌ یکی از پارامترهای مهم در یک ADC ، تعداد بیت‌های آن است که در واقع مشخص کننده‌ی قدرت تفکیک‌پذیری آن می‌باشد. بطور مثال یک ADC هشت بیت،‌ می‌تواند 256 حالت مختلف را ایجاد کند. حال فرض کنید که ما می‌خواهیم یک مبدل چهار بیت طراحی کنیم(این مبدل 16 حالت مختلف را ایجاد می‌کند).

برای شروع کار ابتدا بلوک‌های زیر را در یک مدل قرار دهید:

Simulink >> Sinks >> Scope

Simulink >> Sinks >> Display

Simulink >> Math Operations >> Sum

Simulink >> Logic and Bit Operations >> Relational Operator

Simulink >> Logic and Bit Operations >> Logical Operator

Simulink >> Sources >> Ground

Simulink >> Sources >> Constant

Simulink >> Sources >> Signal Generator

Simulink >> Signal Routing >> Switch

ابتدا باید سیگنال ورودی را به 16 قسمت مساوی تقسیم کنیم در نتیجه به بعضی از پارامترهای سیگنال ورودی احتیاج داریم(البته شاید بتوان به روش‌هایی این پارامترها را محاسبه کرد ولی در این مثال هدف چیز دیگری است). مثلا فرض کنید که دامنه پیک تا پیک و همچنین مینیمم سیگنال را داریم حالا باید از مقدار مینیمم شروع کرده و به‌نسبت A/15 به مقدار مینیمم اضافه کرده تا به مقدار ماکزیمم سیگنال برسیم این مقادیر را بصورت پارامتری، درون 16 عدد بلوک Constant قرار می‌دهیم سپس سیگنال ورودی را به 17 قسمت مساوی تقسیم می‌کنیم تا بتوانیم از عملگرهای مقایسه‌ای استفاده کنیم(برای تشخیص لحظه‌ای دامنه سیگنال ورودی) پس از آن از مقدار مینیمم شروع کرده و به‌نسبت A/16 به مقدار مینیمم اضافه کرده تا به مقدار ماکزیمم سیگنال برسیم این مقادیر را بصورت پارامتری، درون 17 عدد بلوک Constant قرار می‌دهیم.

تنظیمات تمام بلوک‌های سوئیچ را بصورت زیر قرار می‌دهیم:

Click this bar to view the full image.

حال بصورت زیر عمل می‌کنیم:

Click this bar to view the full image.

زمانی که خروجی بلوک عملگر رابطه‌ای، 1 باشد(دامنه سیگنال از مقدار P+A/16 کمتر باشد) بلوک سوئیچ، عدد P (مقدار اولیه) و در غیر این صورت این بلوک مقدار صفر را عبور می‌دهد.

سپس بلوک‌هایی مانند شکل زیر درست می‌کنیم:

Click this bar to view the full image.

در این شکل همان‌طور که ملاحظه می‌شود، زمانی که دامنه سیگنال ورودی از مقدار P+(2*A)/16 کوچکتر و بزرگتر و یا مساوی مقدار P+A/16 باشد، خروجی بلوک AND یک شده و بلوک سوئیچ مقدار P+A/15 را از خود عبور می‌دهد و در دیگر حالات زمین در مسیر خروجی قرار می‌گیرد.

سپس به‌همین ترتیب ادامه می‌دهیم تا نهایتا به مدل زیر می‌رسیم:

Click this bar to view the full image.

نکته: می‌توان یک سیگنال‌ژنراتور و یک زمین به‌ کار برد و برای استفاده در مکان‌های دیگر از آن‌ها انشعاب گرفت(درواقع هیچ‌گونه اثر بارگذاری روی یکدیگر ندارند)

حال خروجی 16 بلوک سوئیچ را به یک جمع‌کننده با 16 ورودی می‌دهیم تا سیگنال دیجیتال شده را به ما تحویل دهد. سپس خروجی جمع‌کننده را به یک بلوک اسکوپ داده و نهایتا از کل سیستم، یک زیرسیستم تهیه کرده و آن‌را ماسک می‌کنیم و تنظیمات ماسک را بصورت زیر قرار می‌دهیم:

Click this bar to view the full image.

مدل نهایی با اندکی تغییرات اضافی بصورت زیر است:

Click this bar to view the full image.

حال مدل را به‌ازای یک ورودی سینوسی با فرکانس 1KHz و دامنه 1 و مقدار dc برابر 0 شبیه‌سازی می‌کنیم(مقدار مینیمم سیگنال 1- و دامنه پیک تا پیک آن برابر 2 است):

خروجی بصورت زیر است:

Click this bar to view the full image.


Click this bar to view the full image.
برگرفته از http://kanakh.com
نویسنده: پ متلب - چهارشنبه ۱٦ فروردین ،۱۳٩۱

رابط متلب

Desktop

به طور پیش فرض رابط متلب دارای 4 قسمت است. Command window در سمت راست و current directory و workspace در سمت چپ بالا که با تب از هم جدا شده اند. در سمت چپ پایین command history قرار دارد. همچنین در سمت چپ پایین دکمه start قرار دارد که مانند محیط ویندوز از طریق آن می توانید به shortcut های متلب دسترسی داشته باشید. از طریق مسیر desktop > desktop layout می توانید شکل های مختلف چینش پنجره ها را امتحان کنید. همچنین می توانید به طور دستی پنجره ها را مرتب کنید.
Command window جایی است که در آن دستورات را تایپ می کنید تا متلب بتواند نتایج را محاسبه , ارزیابی و یا به صورت نمودار رسم کند.
دستوراتی که در command window اجرا می کنیم در command history بایگانی می شود. از مزایای این بخش می توان به دو مورد اشاره کرد. 1- یک دید کلی از دستوراتی که قبلا اجرا کرده اید بدست می آورید. 2- زمان اجرای دستورات را نیز ذخیره می کند.
می توانید در آن روی هر دستور کلیک راست کرده , گزینه کپی را انتخاب , در command window قرار داده و اجرا کنید. یا با دبل کلیک روی دستور آن را اجرا کنید. به طور نمونه برای اجرای دستوری به ماتریسی نیاز دارید که از طریق محاسبات قبلی بدست آمده و اکنون از حافظه پاک شده است. می توانید آن دستور را سریعا از طریق command history اجرا کنید تا داده مورد نیاز در workspace ذخیره شود. البته نباید فراموش کرد که هنگام اتمام کار متغییر ها باید ذخیره شوند.
در مورد workspace در فصل 2 توضیحاتی داده شد که توصیه می شود آنرا مرور کنید. تنها نکته ای که گفته نشد این است که می توانید با دبل کلیک کردن بر روی متغیر های تعریف شده , تک تک مولفه های آنها را ویرایش کنید. همچنین اگر بر روی متغیر ها کلیک راست کنید می توانید هر متغیر را به شکل های مختلف رسم کنید. از این طریق می توانید با توابع گرافیکی بیشتری آشنا شوید. سرگرمی جالبی است البته در مورد این توابع در فصل های بعد به طور کامل بحث می شود.
فایل های جدیدی که در متلب ساخته می شوند در current directory ذخیره می شوند.
ممکن است بخواهیم آدرس curret drectoy را تغییر دهیم یا فایلی را از آدرسی دیگر اجرا کنیم. برای ایجاد یک current directry جدید چند روش وجود دارد. می توانید از تطریق پنجره current directory مانند پنجره های محیط ویندوز عمل کنید. می توانید در قسمت toolbar در قسمت curret directory روی دکمه "..." کلیک کنید و آدرس دهید. همچنین می توانید دستور مربوطه را در command window تایپ کنید که ضرورتی به گفتن دستور نیست. Current directory جایی است که می توانید فایل ها را هم اجرا و هم تغییر دهید. ولی فرضا اگر بخواهیم فایلی را فقط اجرا کنیم باید آدرس آن را add کنیم.
برای add کردن یک directory ازدستور زیر استفاده کنید.من در درایو c پوشه ای با نام matlab درست کردم و آدرس آن را add کردم.

کد:
>> addpath C:\matlab


فقط نباید در اسامی پوشه های تو در تو فاصله وجود داشته باشد.
می توانید با اجرای دستور editpath , مسیر هایی که متلب سرچ می کند بیابیم. در پنجره باز شده می توانیم پنجره های دلخواه خود را ذخیره یا بعضی از مسیر ها را حذف کنیم. فقط نباید مسیرهای پیشفرض متلب را حذف کنیم. زیرا باعث ایجاد مشکل در اجرای توابع پیش فرض خواهد شد. البته یکی از راه های افزایش سرعت متلب حذف کردن toolbox هایی است که نیاز ندارید.

بکارگیری command window

در فصل های 1 و 2 درباره چگونگی وارد کردن دستورات در command window متلب شرح دادیم.اگر بخواهیم پاسخ عبارت ریاضی sin(0.1)/0.1 و sin(0.01)/0.01 و sin(0.001)/0.001 را بدست آوریم دستورات زیر را تایپ کنید.

کد:
>> x = [0.1, 0.01, 0.001];
>> y = sin(x)./x


که بعد از اتمام محاسبات خواهید دید که دقت نتایج مورد انتظار شما نیست. نتیجه بالا تا پنج رقم اعشار را نشان می دهد نه پانزده رقم. برای مشاهده نتایج با 15 رقم اعشار ابتدای دستورات بالا باید تایپ کنیم format long. اگر دستورتان دارای خطا بود به جای تایپ دوباره دستور می توانید از command history دستور را دوباره وارد کنید و تغییرات لازم را انجام دهید. همچنین برای سرعت بیشتر , کلید های up و down دستورات اجرا شده قبلی را نشان می دهند که می توانید آنها را اصلاح کنید.

M-file

برای مسائل پیچیده ابزار های command window و command history ناکافی هستند. راه حل بهتر آن است که یک M-file ایجاد کنیم. دو نوع M-file وجود دارد. Script M-file و function M-file که در ادامه به نحوه استفاده از هر دو نوع M-file توضیح خواهیم داد.
M-file ها فایل های text معمولی حاوی دستورات متلب هستند.می توانید با استفاده از نرم افزار های کار با متن مانند word و wordpad و notepad و ... M-file ها را ایجاد و یا ویرایش کنید. همین طور می توانید از ادیتور خود متلب برای این کار استفاده کنید که امکانات بیشتری در اختیارتان قرار می دهد.برای ایجاد یک M-file می توانید در command window تایپ کنید edit یا این که از طریق file < new < M-file آنرا ایجاد کنید.

Script M-file

اکنون نحوه ایجاد یک script M-file برای حل مسئله ریاضی ای که قبلا توضیح داده شد را نشان می دهیم.
ابتدا دستور زیر را در M-file تایپ کنید و آن را با نام task1.m در current directory خود ذخیره کنید.

کد:
format long
x = [0.1, 0.01, 0.001];
y = sin(x)./x


برای اجرای این فایل باید در command window تایپ کنید task1. اگر با استفاده از نرم افزاری غیر از متلب M-file را ایجاد کردید یادتان باشد که فرمت فایل را m. قرار دهید. اگر M-file را در پنجره ای غیر از command window ذخیره کردید و در هنگام اجرا اخطار گرفتید به توضیحات مربوط به current directory در صفحات قبل مراجعه کنید. در ورژن های جدید متلب از همان پنجره ادیتور می توانید دستورات را اجرا کنید. در پنجره toolbars یک دکمه سبز رنگ مثلثی وجود دارد که در صورت کلیک کردن بر روی آن ابتدا برای save کردن آدرس می خواهد و سپس آن را اجرا می کند. در نتیجه خروجی در command window چاپ می شود. حالا می توانید M-file خود را ویرایش کنید. برای مثال اگر بخواهید y را به ازای x=0.0001 بدست آورید تغییرات زیر نیاز است.

کد:
format long
x = [0.1, 0.01, 0.001, 0.0001];
y = sin(x)./x


سپس با نوشتن task1 دوباره آن را اجرا کنید. به این نکته توجه کنید که task1 دقیقا مانند یک دستور است و از این پس متلب اعداد را به صورت format long نشان خواهد داد. که برای تغییر آن باید دوباره تایپ کنید format short تا به حالت اول برگردد.

Echo کردن دستورات

همانطور که می بینید , دستورات M-file در command window چاپ نمی شود. برای چاپ شدن دستورات و خروجی به طور همزمان از echo استفاده کنید

کد:
echo on
format long
x = [0.1, 0.01, 0.001];
y = sin(x)./x
echo off


اضافه کردن comment

در متلب می توانیم توضیحاتی را بین دستورات قرار دهیم. این دستورات می توانند محاسبات را توضیح دهند و حتی نتیجه را تفسیر کنند. هر خطی در script M-file که با علامت " % " شروع شود یک comment است و متلب با آن به عنوان دستور رفتار نمی کند. در زیر فایل task1.m را با اضافه کردن comment ویرایش کرده ایم.

کد:
echo on
% Turn on 15 digit display
format long
x = [0.1, 0.01, 0.001];
y = sin(x)./x
% These values illustrate the fact that the limit of
% sin(x)/x as x approaches 0 is 1.
echo off


زمانی که می خواهید به script M-file یک comment اضافه کنید به یاد داشته باشید که در ابتدای سطر علامت % را قرار دهید. اگر دستورات را echo کنید در command window توضیحات نیز ظاهر می شوند.

ساختار script M-file

برای آنکه نتایج script M-file ها قابل باز تولید باشد و نتایج همه جا یکسان باشد و متغیر های تعریف شده قبلی روی نتیجه تاثیر نگذارند و پنجره های گرافیکی قبلی در نتیجه فعلی تاثیر نگذارند نکات زیر را در نظر بگیرید.
می توانید در ابتدای script تایپ کنید clear all تا مطمئن شوید که متغیر های تعریف شده قبلی روی نتایج بی تاثیرند. همچنین می توانیم دستور close all را در ابتدای script M-file هایی قرار دهیم که نمودار تولید می کنند. این دستور تمام پنجره های گرافیکی قبلی را می بندد. در زیر مثالمان را با توضیحات کامل و واضح ویرایش کرده ایم.

کد:
% Remove old variable definitions
clear all
% Remove old graphics windows
close all
% Display the command lines in the command window
echo on
% Turn on 15 digit display
format long
% Define the vector of values of the independent variable
x = [0.1, 0.01, 0.001];
% Compute the desired values
y = sin(x)./x
% These values illustrate the fact that the limit of
% sin(x)/x as x approaches 0 is equal to 1.
echo off


گاهی اوقات چه در command window و چه در M-file دستور به حدی طولانی است که در یک سطر جا نمی شود. در اینجا می توانیم در انتهای خط با یک فاصله از دستورات خط تایپ کنیم "..." و در ادامه Enter بزنیم. حال می توانید ادامه خط را در خط پایین بنویسید. با این کار در خط بعدی علامت << نمی آید.

Function M-file

گاهی اوقات نیاز داریم که فرایندی را برای تعداد زیادی ورودی به یک پارامتر یا متغیر تکرار کنیم. همان طور که در فصل دو گفتیم , می توانیم به یک تابع پیش فرض متلب چندین ورودی دهیم و خروجی بگیریم. همچنین گفته شد که می توان با استفاده از دستور inline تابع مورد نظر خود را ساخت. استفاده از M-file در بسیاری از مواقع برای ساخت توابع راحت تر از استفاده از inline است. اجازه بدهید که به مثال بالا برگردیم. در تابعی که در زیر می سازیم sin(x)/x را با چند مقدار از (x=10^ (-b برای مقادیر مختلف ماتریس b محاسبه می کنیم. دستورات زیر را در M-file با نام sinelimit در current directory خود save کنید که این مسئله را حل می کند. توجه کنید که نام آن را فقط باید sinelimit بگذارید

کد:
function y = sinelimit(c)
% SINELIMIT computes sin(x)/x for x = 10^(-b),
% where b = 1, ..., c.
format long
b = 1:c;
x = 10.^(-b);
y = (sin(x)./x)';


function M-file مانند یک script M-file یک فایل متنی ساده است. اولین خط این فایل حاوی عبارت تابع است که فایل را به عنوان function M-file مشخص می کند. خط اول نام function و آرگومان های ورودی و خروجی را مشخص می کند. در این مثال نام تابع sinelimit است. به این نکته بسیار توجه کنید که نام function باید با نام M-file یکی باشد. وگرنه جواب نمی دهد. تابع sinelimit یک ورودی به نام c دارد. b یک ماتریس سطری از 1 تا c است. وقتی c را مشخص می کنیم ماتریس b محاسبه می شود و مولفه های این ماتریس نقش x را در sin(x)/x بازی می کنند و خروجی را نظیر به نظیر مولفه های ماتریس b بیرون می دهد. علامت پریم بردار خروجی را ستونی می کند.
همان طور که قبلا اشاره شد , قرار گرفتن سمی کالن در انتهای دستور موجب عدم نمایش آن در command window می شود. ولی به دلیل M-file بودن آن , اجرایش به طور خودکار مقدار متغیر خروجی را نشان می دهد. نکته عجیب این است که در صورت نگذاشتن سمی کالن خروجی دو بار چاپ می شود.
همچنین به این نکته توجه کنید که متغیر های بکار برده شده در function مثل x و b و y در sinelimit متغیر های محلی هستند.یعنی با این که این متغیر ها در M-file تعریف می شوند, هیچ ربطی به متغیر های همنام خود در workspace متلب ندارد. و متلب مقادیر آنها را بعد از محاسبه نگه نمی دارد. در فصل 4 توضیحات مفصل تری در این رابطه داده می شود.
در زیر مثالی از نحوه استفاده از تابع sinelimit آورده شده است.

کد:
>> sinelimit(5)


Loop یا حلقه

یک حلقه یا یک loop مشخص می کند که دستور یا مجموعه ای از دستورات باید چندین بار تکرار شوند. در اینجا مثال ساده ای از محاسبه و نمایش عدد !10 ( 1×2×3×4×5×6×7×8×9×10 ) آورده شده است.

کد:
f = 1;
for n = 2:10
f = f*n;
end
f


یک loop با عبارت for آغاز و با عبارت end پایان می یابد. عملیات بین این دو عبارت 9 بار تکرار می شود. قرار دادن سمی کالن در بخش میانی برای جلوگیری از چاپ f در عملیات میان حلقه ای است. اگر سمی کالن نگذاریم به ترتیب مقادیر !2 و !3 و ... چاپ می شود. اگر این دستورات را در command window تایپ کنید بعد از عبارت for در خط بعد علامت << را نخواهیم دید. اما بعد از گذاشتن end دوباره << ظاهر می شود. اگر این دستور را در یک script M-file می نویسید و می خواهید آن را echo کنید باید echo off را قبل از end قرار دهید. در غیر این صورت دستورات بین for و end به تعداد مولفه های بردار n چاپ می شود.

ارائه نتایج

گاهی اوقات ممکن است بخواهید نتایج script M-file را به دیگران نشان دهید. بدین منظور می توانید از یک M-book استفاده کنید که در فصل 6 توضیح داده شده است.یا می توانید نتایج خود را در نرم افزار های دیگری مانند word اجرا کنید و یا این که نتایج را به فرمت html تبدیل کنید که در فصل 10 بحث شده است.
اگر تعداد نتایج خروجی زیاد باشد می توانید در M-file خود بعد از هر خروجی دستور pause را وارد کنید.pause باید بعد از توضیحات مهم , نمودار ها و نقاط بحرانی script که نتایج عددی می دهد بکار برده شود. در این صورت بیننده نتایج این امکان را می یابد که نتایج را ببیند و بفهمد. وقتی که متلب به دستور pause می رسد محاسبه را متوقف می کند و منتظر زدن کلید می ماند. کلید را کمی نگه دارید!

فایلهای diary ( یاد آور)

در اینجا راه سریعی را برای ذخیره ی متن M-file در یک فایل text نشاان می دهیم تا در آینده بتوانید دستورات را بفهمید.

کد:
delete task1.txt
diary task1.txt
% Display the command lines in the command window
echo on
% Remove old variable definitions
clear all
% Remove old graphics windows
close all
% Turn on 15 digit display
format long
% Define the vector of values of the independent variable
x = [0.1, 0.01, 0.001];
% Compute the desired values
y = sin(x)./x
% These values illustrate the fact that the limit of
% sin(x)/x as x approaches 0 is equal to 1.
echo off
diary off


با این کار همزمان با اجرای برنامه بک کپی از دستورات آن گرفته می شود. دستور diary باعث می شود که همه دستورات به جز خود دستور diary در یک فایل متنی ذخیره شود.
با استفاده از delete در ابتدای M-file مطمئن می شوید که فایل دیگری با آن نام در پوشه وجود ندارد. اگر delete را قرار ندهید و فایلی با آن نام در پوشه موجود باشد متن دستورات در انتهای آن فایل ذخیره خواهد شد.

رسم نمودار

همان طور که در فصل 1 و 2 ذکر شد نمودار ها در پنجره های مجزایی نمایش داده می شوند.
در زیرمثالی از رسم نمودار ارائه می دهیم.
در این مثال می خواهیم نمودار توابع (sin(x و (sin(2x و (sin(3x را در یک صفحه رسم کنیم. در زیر برای حل این مسئله یک script M-file ارائه شده است.

کد:
echo on
% Define the x values.
x = 2*pi*(0:0.01:1);
% Remove old graphics, and get ready for several new ones.
close all; axes; hold on
% Run a loop to plot three sine curves.
for c = 1:3
plot(x, sin(c*x))
echo off
end
echo on
hold off
% Put a title on the figure.
title('Several Sine Curves')
pause



[تصویر: 5.jpg]



بیایید دستورات بالا را بررسی کنیم. ابتدا مقادیر محور x را تعریف کردیم. دستور close all همه پنجره های گرافیکی باز شده از قبل را می بندد. دستور axes یک پنجره گرافیکی تازه و خالی ایجاد می کند. و دستور hold on به متلب اجازه می دهد که چندمنحنی را روی یک صفحه رسم کند. خطوط بین for و end یک حلقه for می سازد. دستور plot مهمترین قسمت این حلقه است که منحنی های سینوسی را رسم می کند. اگر دقت کنید یک بار در ابتدا echo on گذاشتیم و سپس قبل از end دستور echo off را وارد کردیم. دلیل این کار این بود که حلقه for فقط یک بار در command window چاپ شود. سپس بعد از اتمام حلقه دوباره echo on کردیم. دستور hold off به متلب فرمان می دهد که دستورات گرافیکی بعدی را در صفحه جدیدی رسم کند. در انتها بعد از گذاشتن عنوان برای نمودار , دستور pause را وارد می کنیم تا این که بیننده بتواند قبل از نمایش تصویر , دستورات را ببیند و بفهمد.

چاپ کردن دستورات به صورت ریاضی

اگر یک فرمول ریاضی پیچیده را به صورت دستور بنویسیم , به زحمت می توان از روی آن فهمید که فرمول واقعا چه کار می کند. برای چاپ فرمول به صورت ریاضی در command window از تابع pretty استفاده می کنیم. به مثال زیر توجه کنید.

کد:
syms Rrp Xlrp Xm s Rth Xth Vth
Isabs=(((((Rrp./s).^2)+((Xlrp+Xm)^2)).^(0.5))./(((Rth+(Rrp./s).^2)+((Xth+Xlrp)^2)).^(0.5)))*(Vth/Xm)
pretty(Isabs)


که در نتیجه این فرمول را به صورت زیر در command window چاپ می کند.

[تصویر: 6.jpg]


دستور input

اگردر دستورات متلب بخواهیم این امکان را فراهم کنیم که کاربر بتواند به ازای ورودی های مختلف خروجی دریافت کند از دستور زیر استفاده می کنیم

کد:
var = input('Input var here: ')


سپس متلب در command window چاپ می کند :

کد:
Input var here:
http://www.iranled.com/
نویسنده: پ متلب - چهارشنبه ۱٦ فروردین ،۱۳٩۱

عملیات محاسباتی

از نرم افزار متلب می توان به عنوان یک ماشین حساب استفاده کرد. مثال زیر را در نظر بگیرید.

کد:
>> 3^2 - (5 + 4)/2 + 6*3


اگر در سمت چپ عبارت بالا متغیری تعریف نکنیم , متلب آنرا در متغیری به نام ans قرار می دهد.

کد:
>> ans^2 + sqrt(ans)


همانطور که میبینید متلب مقدار جدیدی را به متغیر ans اختصاص داد.
می توانیم مقدار محاسبه شده را در متغیر خاصی قرار دهیم.

کد:
>> u = cos(10)


توابع مثلثاتی با رادیان کار می کنند.
و مثالی دیگر

کد:
>> v = sin(10)


از دو متغیر حاصله میتوان در محاسبات بعدی استفاده کرد.

کد:
>> u^2 + v^2


متلب به صورت پیش فرض با format short کار می کند. برای تغییر فرمت و افزایش دقت خروجی عبارت زیر را تایپ کنید.

کد:
>> format long


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

کد:
>> 1/3


برای بازگشت به فرمت قبلی دستور زیر را وارد کنید.

کد:
>> format short


مسائل جبری

برای اینکه بتوانیم با متغیر ها به صورت سمبلیک رفتار کنیم , باید ابتدا متغیر را سمبلیک کنیم.

کد:
>> syms x y
>> (x - y)*(x - y)^2

و نتیجه حاصله را بسط می دهیم.

کد:
>> expand(ans)


و دوباره آنرا فاکتور گیری می کنیم.

کد:
>> factor(ans)


متلب تابعی دارد که می توانید ساده ترین فرمول ممکن را بدست اورید.

کد:
>> simplify((x^3 - y^3)/(x - y))


متلب تابع دیگری دارد که یک عبارت ریاضی را به همه شکل های ممکن ساده می کند.

کد:
>> simple((x^3 - y^3)/(x - y))


عبارات پارامتری و محاسبات دقیق

در متلب عدد پی با pi نشان داده می شود. جواب عبارت زیر را ببینید.

کد:
>> cos(pi/2)


جواب باید صفر شود. ولی به دلیل دقیق نبودن عدد پی کمی با صفر فاصله دارد. تابع sym این عدد را به عددی سمبلیک و دقیقا برابر pi/2 تبدیل می کند.

کد:
>> cos(sym('pi/2'))


به این نکته دقت کنید که عبارت syms x معادل عبارت ('x=sym('x است. با این تفاوت که sym تاثیر موقت دارد ولی syms تاثیر دائم دارد.
به نحوه جمع کردن دو عدد 1/2 و 1/3 به صورت سمبلیک توجه کنید.

کد:
>> sym('1/2') + sym('1/3')


حالا ببینید چگونه می توان عدد رادیکال 2 را تا 50 رقم اعشار بدست آورد.

کد:
>> vpa('sqrt(2)', 50)


تابع vpa برای گرفتن دقت بیشتر بکار می رود. برای مثال نتیجه عبارتهای (vpa(3^45 و ('vpa('3^45 را با هم مقایسه کنید. در کاربرد های تجربی بین این دو مقدار فرقی وجود ندارد ولی بعضی مواقع به عدد دقیق نیاز است که باید عبارت دوم را بکار برد.

مدیریت متغیر ها

در متلب سه طبقه متفاوت داده وجود دارد. عدد و رشته و اعداد سمبلیک. با استفاده از دستور whos می توان خلاصه ای از اسامی و متغیر هایی که تا به حال تعریف شده مشاهده کنیم.

کد:
>> whos


تا حالا 5 متغیر تعریف کردیم. X و y به دلیل به کار بردن syms سمبلیک هستند. متغیر ans هم به دلیل این که جمع دو متغیر سمبلیک است سمبلیک شده است. متغیر های u و v هم اسکالر هستند. در قسمت سایز هم از سمت چپ به ترتیب تعداد سطر ها و ستون های ماتریس را نشان می دهد.
بنویسید u=pi و 'v='pi و ('w=sym('pi و سپس دستور whos را وارد کنید تا تفاوت این داده ها را ببینید.
برای مشاهده مقدار هر متغیر نام آن را در پنجره command window بنویسید و Enter بزنید.
شما باید تشخیص دهید که هر تابع به چه نوع ورودی ای نیاز دارد. وگرنه دادن ورودی نا مناسب به آن منجر به پیام eror می شود.
برای پاک کردن همه متغیر ها از حافظه دستور clear یا clear all را وارد کنید. شما همچنین می توانید بنویسید clear x y برای این که بتوانید فقط متغیر های x و y را پاک کنید. شما معمولا باید قبل از شروع محاسبات جدید متغیر های قبلی را پاک کنید.
توجه کنید که اطلاعات مشاهده شده از طریق دستور whos در پنجره workspace هم قابل مشاهده است.
می توانیم متغیر هایی که تا به حال در حافظه موقت ذخیره شده است را ذخیره کنیم. برای این کار در قسمت workspace روی گزینه save کلیک کنید و برای ذخیره آن آدرس دهید تا با فرمت mat. ذخیره شود. بعد از بسته شدن نرم افزار متلب , هر وقت خواستید دوباره آموزش را ادامه دهید , نرم افزار را باز کنید و در قسمت workspace به بخش import data بروید و فایل ذخیره شده را انتخاب و گزینه finish را بزنید.

خطا در ورودی

یکی از رایج ترین خطا ها در ورودی که منجر به دریافت پیام eror می شود , خطای ضرب است. به مثال زیر توجه کنید.

کد:
>> 3u^2


در نتیجه متلب eror می دهد. خطا به دلیل فقدان اپراتور ضرب * است.
یکی دیگر از خطا های معمول به پرانتز مربوط می شود که معمولا پرانتز باز می شود و بسته نمی شود.
عدم تشخیص نوع ورودی مورد نیاز هم یکی خطاهای رایج در متلب است. در ادامه توضیحات بیشتری ارائه می شود.

متغیر ها و نام گذاری آنها

به مثال زیر توجه کنید.

کد:
>> x = 7
>> syms y
>> z = x^2 - 2*x*y + y

همان طور که می بینید به x عدد دادیم و y را سمبلیک کردیم. برای محاسبه z , متلب به جای متغیر x مقدار 7 قرار می دهد.

کد:
>> clear x; syms x y
>> z = x^2 - 2*x*y + y

در اینجا متغیر قبلی x را حذف کردیم و دوباره x را سمبلیک کردیم.

کد:
>> 5*y*z

همان طور که دیدید به جای z مقدار حاصل از دستورات قبلی را قرار داد.

حل معادلات

می توانیم عبارات شامل متغیر ها را با استفاده از دستورات solve و fzero حل کنیم. به مثال زیر توجه کنید.

کد:
>> solve('x^2 - 2*x - 4 = 0')

این دستور ریشه های معادله درجه دوم مورد نظر را بدست می دهد. جواب به صورت سمبلیک است. برای مشاهده اسکالر باید دستور (double(ans یا برای رقم های بیشتر دستور (vpa(ans را وارد کنید.
دستور solve همچنین می تواند چند جمله ای های درجه بالاتر را هم حل کند. همچنین می تواند معادلاتی با بیش از یک متغیر را حل کند. اگر تعداد معادلات کمتر از تعداد متغیر ها باشد باید مشخص کنیم کدام متغیر ها باید حل شوند. دستور زیر y را بر حسب متغیر x بدست می دهد.

کد:
>> solve('2*x - log(y) = 1', 'y')

می توانیم با استفاده از دستور solve بیش از یک معادله را حل کنیم.

کد:
>> [x, y] = solve('x^2 - y = 2', 'y - 2*x = 5')

این سیستم معادلات , دو جواب دارد. جواب اول x با جواب اول y همزمان رخ می دهند. جواب دوم هم به همین صورت.
می توانیم جواب اول x و y را با استفاده از دستورات زیر بگیریم.

کد:
>> x(1)
>> y(1)

در دستور بالا ابتدا ans به x اختصاص می یابد و سپس به y. جواب دوم می تواند با دستورات (x(2 و (y(2 بدست آید.
توجه کنید که اگر در سمت چپ دستور solve بردار تعریف نکنیم متلب نتیجه را نمایش تخواهد داد.
برای مثال

کد:
>> sol = solve('x^2 - y = 2', 'y - 2*x = 5')

در اینجا برای بدست آوردن بردار x تایپ کنید x=sol.x و همچنین برای y تایپ کنید y=sol.y . برای گرفتن مقادیر اول تایپ کنید (sol.x(1 .
در بعضی معادلات جواب نمی تواند سمبلیک باشد. به همین دلیل متلب جواب اسکالر می دهد.برای مثال

کد:
>> solve('sin(x)=2-x')

گاهی اوقات جواب بیشتر از یکی است و جواب دلخواهمان را نمی گیریم.برای مثال

کد:
>> solve('exp(-x) = sin(x)')

جواب ,یک عدد مختلط است. حرف i در انتهای عدد دوم نمایانگر رادیکال (1-) است. با وجودی که این یک جواب معتبر برای این معادله است , این معادله جواب های حقیقی هم دارد.
نمودار برخورد (sin(x و (exp(-x در شکل زیر نشان داده شده است. نحوه رسم این نمودار در ادامه توضیح داده می شود.

[تصویر: 1.JPG]

هر کدام از نقاط برخورد یکی از جواب های معادله است.
با تابع fzero می توان جواب های معادله را بصورت عددی بدست آورد. در واقع جواب معادله بالا , صفر های معادله (exp(-x)-sin(x است. دستور زیر این عبارت را بصورت تابعی بر حسب x تبدیل می کند.

کد:
>> inline('exp(-x) - sin(x)')

در مورد دستور inline به طور کامل توضیح داده خواهد شد. دستور fzero برای اجرا در اولین آرگومان به تابع نیاز دارد.
در دستور fzero در اولین آرگومان یک تابع وجود دارد و در دومین آرگومان عددی که نزدیک یکی از ریشه های معادله است. در نتیجه برای بدست آوردن ریشه های دقیق ابتدا باید مکان تقریبی ریشه ها را بدست آوریم. این کار را می توان از طریق ترسیم معادله انجام داد. در معادله بالا برای بدست آوردن جواب معادله در نزدیکی 0.5 دستور زیر را بنویسید.

کد:
>> fzero(inline('exp(-x) - sin(x)'), 0.5)

برای یافتن ریشه بعدی , باید جواب را در نزدیکی عدد 3 جست و جو کنید.


بردار ها

یک بردار دنباله ای از اعداد است. در متلب می توانیم برداری به طول دلخواه با نوشتن مجموعه ای از اعداد با فاصله در داخل براکت ایجاد کنیم. برای مثال

کد:
>> Z = [2,4,6,8]


و

کد:
>> Y = [4 -3 5 -2 8 1]


فرض کنید که می خواهید برداری از اعداد صحیح 1 تا 9 ایجاد کنیم. در زیر روش این کار بدون تایپ اعداد را نشان می دهد.

کد:
>> X = 1:9


در دستور بالا مقدار استپ 1 بود. حالا اگر بخواهیم به فرض استپ را 2 قرار دهیم باید یک آرگومان جدید به آن اضافه کنیم.

کد:
>> X = 0:2:10


نمو همچنین میتواند کسری و یا منفی باشد. برای مثال 0:0.1:2 و ( 0 : منفی 1 : 10 ) .
آرایه های بردار X میتواند به صورت (X(1 و (X(2 و ... از بردار استخراج شود. برای مثال

کد:
>> X(3)


برای تغییر بردار X از یک بردار سطری به یک بردار ستونی , بعد از X علامت پریم (') قرار دهید.

کد:
>> X'


می توانیم روی مولفه های بردار عملیات ریاضی انجام دهیم. برای مثال همه ی آرایه های بردار X را به توان 2 می رسانیم.

کد:
>> X.^2


نقطه بکار برده شده در دستور بالا خیلی اهمیت دارد. این دستور کاری می کند که اعداد بردار X درایه به درایه و جدا گانه مربع شوند. اگر تایپ می کردیم X^2 به متلب دستور می داد که از ضرب ماتریسی استفاده کند و بردار X را در خودش ضرب می کرد و در این مورد پیام eror می داد. (در ادامه در مورد ماتریس ها بطور کامل بحث می شود. )
به طریق مشابه برای ضرب و تقسیم درایه به درایه باید به ترتیب تایپ کنید *. و /. . فقط به یاد داشته باشید که طول بردار ها باید مساوی باشد. برای مثال برای ضرب کردن مولفه های بردار X با مولفه های نظیر از بردار Y تایپ کنید.

کد:
>> X.*Y


بیشتر دستورات در متلب به صورت مولفه به مولفه به ورودی اعمال می شوند. برای مثال در عملیات جمع و تفریق نقطه نمی گذاریم. مثلا می توانیم تایپ کنیم (exp(X تا نمایی همه اعداد بردار X را بدست آوریم.

ماتریس ها

ماتریس یک آرایه مستطیلی از اعداد است . بردار های سطری و ستونی که در بالا روی آنها بحث شد نمونه ای از ماتریس بودند.ماتریس 3×4 زیر را ملاحظه کنید.

[تصویر: 5.JPG]


این ماتریس می تواند در متلب با دستور زیر وارد شود.

کد:
>> A = [1, 2, 3, 4; 5, 6, 7, 8; 9, 10, 11, 12]


توجه کنید که مولفه های هر سطر با کاما و سطر ها توسط سمی کالن از هم جدا شده اند.
اگر بین مولفه های هر سطر کاما نگذاریم هم فرقی نمی کند. ولی فاصله نباید فراموش شود.
اگر دو ماتریس A و B دارای سایز برابر باشند , جمع مولفه با مولفه آنها با نوشتن A+B بدست می آید. همچنین می توان یک عدد اسکالر را به تک تک مولفه های یک ماتریس اضافه کرد. به طریق مشابه A-B تفاضل دو ماتریس A و B را به دست می دهد. همچنین A-c یک عدد اسکالر را از همه مولفه های ماتریس A کم می کند.
اگر A قابلیت ضرب ماتریسی در B را داشته باشد ( یعنی اگر A ماتریسی n×m و B ماتریسی m×l باشد .) سپس حاصل ضرب ماتریسی A*B یک ماتریس n×l خواهد بود. یاد آوری می کنم که مولفه ماتریس A*B در i مین سطر و j مین ستون برابر است با مجموع حاصل ضرب مولفه های سطر i ام از A در ستون j ام از B . به عبارتی دیگر

[تصویر: 6.JPG]


ضرب عدد اسکالر c در بردار A به صورت c*A نوشته می شود و دستور 'A ماتریس ترانهاده مزدوج A را به دست می دهد.
ضرب ماتریس 3×4 A در بردار 'Z که 4×1 است می تواند مثال خوبی باشد.

کد:
>> A*Z'


که حاصل دستور بالا , یک ماتریس ستونی 3×1 است.
متلب دستورات دیگری نیز در این زمینه دارد که در فصل های بعدی به آن اشاره خواهد شد.

متوقف کردن خروجی

تایپ علامت سمی کالن ( ; ) در انتهای خط ورودی , مانع چاپ خروجی خواهد شد. زمانی که بخواهیم بردار یا ماتریس بزرگی تعریف کنیم از سمی کالن استفاده می کنیم. برای مثال بردار (x = -1:0.1:2) چاپ نشود بهتر است. همچنین در هر جایی که نیازی به چاپ شدن خروجی نباشد می توانیم از سمی کالن استفاده کنیم.

توابع

در متلب هم می توانید از توابع پیش فرض و هم از توابع ساخت خودتان استفاده کنید.

توابع پیش فرض
متلب تعداد زیادی تابع غیر قابل تغییر دارد. از جمله آنها توابع sqrt و sin و cos و tan و log و exp و atan (برای arctan) همچنین تعدادی تابع ریاضی خاص مثل gamma و erf و besselj. متلب همچنین تعداد زیادی ثابت پیش فرض دارد. از جمله pi (عدد پی) و i (رادیکال منفی یک) و inf (∞). در زیر چند مثال می زنیم

کد:
>> log(exp(3))


تابع log لگاریتم طبیعی می گیرد و در ریاضیات با نماد " ln " نشان داده می شود.

کد:
>> sin(2*pi/3)


در بالا برای گرفتن جواب دقیق باید از آرگومان سمبلیک استفاده کنید

کد:
>> sin(sym('2*pi/3'))


توابع تعریف شده توسط کاربر
در این بخش نشان می دهیم که چگونه می توان از تابع inline برای تعریف یک تابع استفاده کرد.
به نحوه تعریف تابع چند جمله ای (f(x توجه کنید

کد:
>> f = inline('x^2 + x + 1', 'x')


آرگومان دوم بکار برده شده در inline , متغیر مستقل را مشخص می کند. می توانیم این قسمت را حذف کنیم. متلب از طریق قوانین متغیر مستقل حدس می زند که چه باید باشد. در ادامه در این مورد بیشتر بحث خواهد شد.
وقتی که تابع را تعریف کردیم , میتوانیم به ازای ورودی های مختلف از آن خروجی بگیریم.

کد:
>> f(4)


تابع تعریف شده در بالا فقط می تواند به عدد اسکالر اعمال شود. برای این که بتواند برای بردار هم به کار رود از تابع vectorize متلب استفاده می کنیم.
تابع زیر تابع برداری شده معادله f است.

کد:
>> f1 = inline(vectorize('x^2 + x + 1'), 'x')


توجه کنید که ^ باید با ^. جایگزین می شد. حالا می توانیم به f1 ورودی بردار دهیم.

کد:
>> f1(1:5)


می توانیم f1 را از طریق بخش گرافیک متلب از راه های مختلف رسم کنیم. این بخش را با اشاره به این نکته که می توان تابعی با چند متغیر تعریف کرد به پایان می رسانیم.

کد:
>> g = inline('u^2 + v^2', 'u', 'v')


گرافیک

در این بخش دو دستور رسم مقدماتی متلب را تعریف می کنیم و نحوه استفاده از آنها را توضیح خواهیم داد.

رسم نمودار با استفاده از ezplot

ساده ترین راه رسم یک تابع تک متغیره استفاده از ezplot است. برای رسم معادله "x2+x+1" در بازه 2- تا 2 داریم

کد:
>> ezplot('x^2 + x + 1', [-2 2])


نمودار در پنجره جدیدی به نام " Figure 1" نشان داده می شود.
قابل ذکر است که ezplot هم آرگومان رشته ای (مانند بالا) و هم عبارت سمبلیک را قبول می کند.
نمودار گرفته شده در مثال قبل را از طریق دستور زیر نیز می توان مشاهده کرد.

کد:
>> syms x
>> ezplot(x^2 + x + 1, [-2 2])


[تصویر: 2.JPG]

نمودار ها می توانند گمراه کننده باشند اگر به محور ها توجه نکنیم.
برای مثال نمودار "x2+x+3" نیز دقیقا مانند نمودار بالا است با این تفاوت که اعداد روی محور فرق می کند.

تغییر دادن نمودار

به چند طریق می توانیم نمودار ها را تغییر دهیم. برای تغییر عنوان بالای نمودار قبلی در زیر دستورات قبلی تایپ کنید

کد:
>> title 'A Parabola'


و اجرا کنید. در نتیجه عبارت بالای نمودار تغییر می کند.
می توانیم روی محور افقی نمودار توسط اضافه کردن دستور xlabel به دستورات قبلی برچسب ایجاد کنیم. برای این کار باید جلوی xlabel اسم دل خواه خود را قرار دهیم. برای محور عمودی نیز از دستور ylabel استفاده کنید. به این نکته توجه کنید که عبارت مقابل title حتما باید با علامت آپوستروف بسته شود ولی برای گذاشتن برچسب محور ها نیازی نیست.
همچنین می توانیم محدوده محور ها را به دلخواه تنظیم کنیم. مثلا در مثال فوق می توانیم محدوده نمایش روی محور عمودی را از 1 تا 4 محدود کنیم.

کد:
>> axis([-2 2 1 4])


دو عدد اول محدوده محور افقی را مشخص می کنند. در دستور بالا محدوده هر دو محور باید مشخص شود.
در فصل پنجم توضیحات بیشتری در این زمینه داده می شود.

رسم نمودار با استفاده از plot
دستور plot به داده های برداری عددی اعمال می شود. ساده ترین ترکیب این تابع (plot(X,Y است که در آن X و Y بردار هایی با طول یکسان هستند. برای مثال

کد:
>> X = [1 2 3];
>> Y = [4 6 5];
>> plot(X, Y)

این دستور نقطه (1,4) را با یک خط به نقطه (2,6) وصل می کند و به همین صورت برای نقطه بعدی.

[تصویر: 3.JPG]

برای ترسیم نمودار "X2+X+1" در بازه -2 تا 2 ابتدا باید برداری از مقادیر X تعریف کنیم . تعداد نقاط تعریف شده باید به حدی باشد که نمودار شکسته شکسته نباشد. برای مثال زیر از استپ 0.1 استفاده می کنیم.

کد:
>> X = -2:0.1:2;
>> plot(X, X.^2 + X + 1)


[تصویر: 4.JPG]

توجه کنید که برای جلو گیری از چاپ شدن 41 مولفه بردار X از سمی کالن استفاده کردیم.
همچنین توجه کنید که دستور زیر همان نتیجه را خواهد داشت. زیرا قبلا تابع f1 را تعریف کرده ایم.

کد:
>> plot(X, f1(X))

در فصل پنجم دستورات گرافیکی بیشتری را توضیح خواهیم داد.

رسم منحنی های چندگانه

وقتی یک نمودار جدید را رسم می کنیم , متلب نمودار قدیمی را پاک می کند و به جای آن نمودار جدید را قرار می دهد. اگر بخواهیم دو یا تعداد بیشتری نمودار را روی هم رسم کنیم از دستور hold on استفاده می کنیم. این عبارت به متلب فرمان می دهد که نمودار قبلی را نگه دارد و نمودار های جدیدی که رسم می شود بر روی همان نمودار قدیمی رسم کند. این حالت تا وقتی که دستور hold off را وارد کنیم ادامه می یابد. در اینجا مثالی از به کار گیری تابع ezplot می آوریم.

کد:
>> ezplot('exp(-x)', [0 10])
>> hold on
>> ezplot('sin(x)', [0 10])
>> hold off
>> title 'exp(-x) and sin(x)'

نتیجه قبلا در همین بخش نمایش داده شده بود. دستورات hold on و hold off با همه دستورات گرافیکی دیگر نیز به کار می رود.
با دستور plot می توان مستقیما چند نمودار را روی هم رسم کرد.

کد:
>> X = 0:0.1:10;
>> plot(X, exp(-X), X, sin(X))

فقط با این تفاوت که رنگ نمودار ها را متفاوت انتخاب می کند.

http://www.iranled.com/

نویسنده: پ متلب - چهارشنبه ۱٦ فروردین ،۱۳٩۱

Array & Vector Definition - تعریف آرایه یا بردار

MATLAB - متلب - Array & Vector & Matrix - بردارها و ماتریس ها

 


ایجاد یک آرایه عددی با نام x :

[x=[1 2 3<<

اعداد را داخل کوروشه نوشته و با فاصله از هم جدا می کنیم. این آرایه 3 عضو دارد. می توان به همین روش آرایه های بزرگتری تولید کرد.


روش دیگری برای ایجاد یک آرایه عددی با مقیاس بزرگتر و بدون تایپ کردن اعداد :

x=1:5<<

در این مثال آرایه ای تولید کردیم که اعضای آن اعداد 1 2 3 4 5 می باشند که ما خود این اعداد را بطور دستی تایپ نکردیم یعنی با عملگر کالن : طول گام اعداد درون آرایه را مشخص می کنیم. به مثالی دیگر توجه کنید...

x=1:2:5<<

در این مثال طول گام اعداد تولید شده را 2 گرفته ایم پس اعضای آرایه 1 3 5 می باشند. همانطور که در مثال اول مشاهده کردید اگر طول گام را بطور صریح ننویسیم آنرا 1 تلقی می کند. به همین روش می توان آرایه های گوناگونی ساخت.

می توان با این روش یک آرایه با اعضای معکوس ساخت در مثال زیر آرایه ای با اعضای 5 4 3 2 1 مشخص شده است:

x=5:-1:1<<


روش سوم برای ایجاد یک آرایه ، قرار دادن مقادیر درون اندیس های آرایه است :

x(1)=10<<

x(2)=11<<

x(3)=12<<

یعنی درون اولین خانه آرایه عدد 10 ، درون دومین خانه عدد 11 و درون سومین خانه عدد 12 و الی آخر... قرار می دهیم.

پس این آرایه شامل اعضای 10 ، 11 و 12 می باشد.


مثال : آرایه ای بسازید که x=k*pi را برای k=1..10 تولید کند؟

جواب :

x=(1:10)*pi<<


ایجاد یک آرایه ستونی :

[x=[1;2;3;4<<

با گذاشتن سمی کالن ; بین اعداد می توان آرایه را به شکل ستونی درآورد.


ترانهاده کردن یک آرایه : یعنی می توان با عملگر تک کوتیشن ' یک آرایه سطری را به ستونی و یک آرایه ستونی را به سطری تبدیل کرد.

'x<<


نمایش دادن اندازه یا طول آرایه :

(length(x<<


برای دسترسی به اعضای یک آرایه تولید شده می توان از اندیس های آن استفاده کرد. به عنوان مثال برای مشاهده سومین عدد ذخیره شده در آرایه x می توان به شکل زیر عمل کرد :

(x(3<<


دسترسی به عناصر آرایه از اندیس i تا j با طول گام یک :

(x(i:j<<


مثال : عضو پنجم آرایه x را که قبلا ساخته شده بود ، به عدد 7 تغییر دهید ؟

جواب :

x(5)=7<<


برای حذف کردن عنصری از آرایه از دو کوروشه خالی به شکل زیر استفاده می شود. در مثال زیر می خواهیم عنصری را که در اندیس 3 یا سومین خانه آرایه است را پاک کنیم. بعد از حذف شدن عدد سایر اعداد به سمت چپ شیفت پیدا می کنند:

[]=(x(3<<


حذف سومین عنصر بدون شیفت اعداد:

x(3)=nan<<


ورودی اکثر توابع و دستورات MATLAB به جای یک عدد می تواند یک آرایه باشد. اگر x یک آرایه شامل عناصر 1 2 3 4 5 باشد در اینصورت دستور زیر به عنوان مثال روی تک تک عناصر اجرا می شود :

(sqrt(x<<


در صورتیکه نقطه یا دات . قبل از ضرب ، تقسیم و توان بیاید به این عملگر ها ، عملگر های مولفه ای گویند و آنها عناصر درون آرایه ها را مولفه به مولفه به هم ضرب ، تقسیم و به توان می رسانند. حال فرض x و y دو آرایه باشند در مثال زیر اعضای نظیر هم به هم ضرب می شوند توجه داشته باشید که آرایه ها باید هم بعد باشند :

x.*y<<


حال اگر قصد داریم ضرب داخلی و خارجی دو بردار را انجام دهیم به ترتیب به صورت زیر عمل می کنیم :

x*y<<

(cross(x,y<<


به راحتی می توان دو آرایه را با هم جمع و تفریق کرد :

x+y<<

x-y<<


تقسیم بازه [a,b] به n قسمت مساوی ، که شما به جای a , b , n اعداد مورد نظر خود را باید قرار دهید :

(x=linspace(a,b,n<<


افزودن بردار b به امتداد بردار a :

[x=[a,b<<


افزودن بردار b به امتداد بردار a در صورتیکه هر دو ستونی باشند :

[x=[a;b<<


اگر a , b ستونی باشند دو ستون را کنار هم قرار می دهد و تشکیل یک ماتریس می دهد :

[m=[a,b<<


ایجاد یک آرایه رشته ای :

's='matlab<<

در این مثال اولین خانه آرایه دارای کاراکتر m و دومین خانه آن a و ... که دسترسی به آنها شبیه آرایه عددی است.

 

Matrix Definition - تعریف ماتریس

MATLAB - متلب - Array & Vector & Matrix - بردارها و ماتریس ها

 


ایجاد ماتریس شبیه آرایه می باشد ولی با این تفاوت که برای جدا کردن سطر ها باید بین اعداد یک سطر سمی کالن ; گذاشت :

[m[1 2 3 ; 4 5 6 ; 7 8 9<<

m یک ماتریس 3*3 می باشد.


مشابه آرایه می توان از روش های دیگری هم ماتریس را تولید کرد :

m(1,1)=10<<

m(1,2)=20<<

m(2,1)=30<<

m(2,2)=40<<

با این روش اندیس تک تک سطرها و ستون ها را مشخص کرده و عدد مربوطه را جایگذین می کنیم.


با استفاده از اندیس های سطر و ستون می توان به اعضای ماتریس دسترسی داشت. در مثال زیر به عضوی که در سطر 2 و ستون 1 ماتریس m قرار دارد دسترسی پیدا می کنیم :

(m(2,1<<


کلمه کلیدی nan به معنای تهی بودن و inf به معنی بینهایت می باشد. حال می خواهیم عنصری که در سطر 1 و ستون 1 ماتریس m می باشد را به تهی و عنصری که در سطر 2 و ستون 2 می باشد را بینهایت کنیم :

m(1,1)=nan<<

m(2,2)=inf<<


برای حذف کردن یک سطر یا ستون از ماتریس از دو کوروشه خالی به شکل زیر استفاده می شود. دقت داشته باشید که نمی توان یک عنصر بخصوصی را حذف کرد و فقط می توان آن عنصر را nan یا inf کرد در مثال زیر می خواهیم سطر اول ماتریس m را پاک کنیم :

[]=(:,m(1<<

گذاشتن کالن : بعد از کاما به این معنی است که می خواهیم همه ستون های سطر 1 حذف شوند. پس اگر همه ستون های سطر 1 حذف شوند یعنی خود سطر 1 حذف شده است.

در مثال زیر می خواهیم ستون اول ماتریس را حذف کنیم :

[]=(m(:,1<<

در مثال های بالا می توان هر عددی بجای سطر ها و ستون ها نوشت.


مثال : ستون 1 تا 5 را بصورت یک در میان ، از ماتریس m که یک ماتریس 5*5 میباشد حذف کنید ؟

جواب :

[]=(m(:,1:2:5<<


ورودی اکثر توابع و دستورات MATLAB به جای یک عدد می تواند یک ماتریس باشد. اگر m یک ماتریس باشد در اینصورت دستور زیر به عنوان مثال روی تک تک عناصر اجرا می شود :

(sqrt(m<<


در صورتیکه نقطه یا دات . قبل از ضرب ، تقسیم و توان بیاید به این عملگر ها ، عملگر های مولفه ای گویند و آنها عناصر درون ماتریس ها را مولفه به مولفه به هم ضرب ، تقسیم و به توان می رسانند. حال فرض m و n دو ماتریس باشند در مثال زیر اعضای نظیر هم به هم ضرب می شوند توجه داشته باشید که ماتریس ها باید هم بعد باشند :

m.*n<<


و برای ضرب و تقسیم معمولی ماتریس ها به ترتیب زیر عمل می کنیم :

m*n<<

m/n<<


به راحتی می توان اعضای نظیر هم را با هم جمع و تفریق کرد :

m+n<<

m-n<<


مثال : عناصر درون ماتریس m را به عدد 2 ضرب کرده و 1 واحد کم کنید ؟

جواب :

m*2-1<<


ترانهاده کردن ماتریس با تک کوتیشن انجام می شود :

'm<<


می توان با دادن طول گام مناسب به شرطی که ابعاد ماتریس صحیح باشد ، یک ماتریس بزرگ ساخت :

[m=[5:5:30 ; 30:5:55<<

یک ماتریس با 2 سطر و 6 ستون ساختیم.


اگر بردار b سطری باشد و A یک ماتریس که تعداد اعضای سطر های آن برابر با b باشد ، دستور زیر یک سطر جدید در زیر ماتریس ایجاد کرده و بردار b را به آنجا میافزاید :

[c=[A;b<<

برای اینکه بتوان بردار b را به اول ماتریس اضافه کرد در اینصورت در دستور بالا جای b , A را عوض می کنیم.


اگر بردار b ستونی باشد و A یک ماتریس که تعداد اعضای ستون های آن برابر با b باشد ، دستور زیر یک ستون جدید در سمت راست ماتریس ایجاد کرده و بردار b را به آنجا میافزاید :

[c=[A,b<<

برای اینکه بتوان بردار b را به سمت چپ ماتریس اضافه کرد در اینصورت در دستور بالا جای b , A را عوض می کنیم.

جعبه ابزار اصلی - قسمت دوم

MATLAB - متلب - Array & Vector & Matrix - بردارها و ماتریس ها

 


ماتریس و بردار های زیر را در نظر می گیریم ، ماتریس n تقریبا خالی می باشد :

[m=[1 2 nan;3 4 inf;7 8 9

[a=[4 5 6

[n=[0 0 1;0 2 0;3 0 0

[k=[9 8 7;6 5 4;3 2 1


دستور زیر درایه هایی را که در بردار یا ماتریس ، nan هستند با 1 و سایرین را با 0 نشان می دهد :

(isnan(m<<


اگر بعد از اجرای دستور زیر روی یک آرایه یا ماتریس جواب 1 ظاهر شود یعنی آرایه یا ماتریس دارای درایه های کاراکتری یا رشته می باشند ، در غیر اینصورت آرایه یا ماتریس عددی است :

(ischar(m<<


نشان می دهد که آیا بردار یا ماتریس تهی است یا نه :

(isempty(m<<


مکان هایی که دارای عدد اول هستند را با 1 و سایرین را با 0 نشان می دهد :

(isprime(k<<


جمع اعداد درون آرایه یا جمع ستون های ماتریس :

(sum(m<<


جمع سطر های ماتریس :

('sum(m<<


حاصلضرب اعداد درون آرایه یا حاصلضرب ستون های ماتریس :

(prod(m<<

برای ضرب کردن سطر های ماتریس می توان مثل بالا از آن ترانهاده گرفت و بعد ضرب کرد.


عناصر قطر اصلی ماتریس :

(diag(m<<

اگر a یک آرایه باشد دستور فوق آنرا به یک ماتریس قطری تبدیل می کند.


ایجاد ماتریس جادویی n*n که جمع سطر و ستون و قطر یکی است :

(magic(n<<


ماتریس پاسکال خیام :

(pascal(n<<


ماتریس همانی :

(eye(n<<


ماتریس m*n که همه درایه های آن 1 می باشد :

(ones(m,n<<


ماتریس m*n که همه درایه های آن 0 می باشد :

(zeros(m,n<<


تولید یک ماتریس n*n از اعداد تصادفی با توزیع نرمال و واریانس واحد :

(randn(n<<


بدست آوردن انحراف معیار از آرایه :

(std(a<<


در صورتیکه از عملگر های مقایسه ای برای یک آرایه یا ماتریس به شکل زیر استفاده کنیم ، در جواب ، آرایه یا ماتریسی می دهد که درایه هایش 1 و 0 بوده و مشخص کننده عمل مقایسه انجام شده روی درایه های آرایه یا ماتریس می باشد :

m>2<<

اینجا اعدادی را که بزرگتر از 2 هستند را با 1 و سایرین را با 0 مشخص می کند.

m~=0<<


دستور زیر مانند عملگر های مقایسه ای بالا 1 و 0 تولید نمی کند و دقیقا اندیس سطر و ستون (i,j) عددی را که در مقایسه قبول شده است را می دهد :

(i,j]=find(m>2]<<

اینجا اندیس i و j (سطر و ستون) اعضایی از ماتریس را که بزرگتر از 2 هستند را مشخص می کند.


تبدیل یک ماتریس تقریبا خالی به ماتریس اسپارس :

(z=sparse(n<<


تبدیل ماتریس اسپارس به یک ماتریس تقریبا خالی :

(full(z<<


معکوس ماتریس :

(inv(k<<


دستور زیر در جواب دو عدد ماتریس به نام های v و d می دهد که ستون های v بردار های ویژه ماتریس k است و قطر اصلی d مقادیر ویژه k می باشد :

(v,d]=eig(k]<<


چند جمله ای مشخصه ماتریس :

(p=poly(k<<


یافتن ریشه های چند جمله ای مشخصه یا هر چند جمله ای که به شکل برداری است :

(r=roots(p<<


اگر r ریشه های یک چند جمله ای باشد ، خود چند جمله ای را می دهد :

(p=poly(r<<


بعد یا رنک یا تعداد ستون های مستقل خطی ماتریس :

(rank(k<<


دترمینان ماتریس :

(det(k<<


ایجاد یک ماتریس پله ای متشابه با k :

(rref(k<<


ایعاد یا سایز ماتریس که تعداد سطر و ستون را می دهد :

(r,c]=size(k]<<


در زیر چند دستور آورده شده است که برای ماتریس روی ستون ها عمل می کند و در بردار روی اعضای آن عمل می کند .

کوچکترین عدد در ماتریس یا آرایه :

(min(k<<

بزرگترین عدد :

(max(a<<

مجموع اعداد در ستون های ماتریس یا آرایه :

(sum(k<<

میانگین اعداد :

(mean(a<<

میانه اعداد :

(median(k<<

جمع انباشتی اعداد :

(cumsum(a<<

ضرب انباشتی :

(cumprod(k<<

مرتب سازی اعضای ستون های ماتریس یا آرایه :

(sort(a<<


دستور زیر در صورتیکه همه اعضا غیر صفر باشند 1 بر می گرداند :

(all(k<<


دستور زیر در صورتیکه حداقل یکی از اعضا غیر صفر باشند 1 بر می گرداند :

(any(a<<


واژگون کردن سطر های ماتریس :

(flipud(k<<


واژگون کردن ستون های ماتریس :

(fliplr(k<<


چرخاندن ماتریس به اندازه 90 درجه در خلاف جهت عقربه های ساعت :

(rot90(k<<


بخش پایین مثلثی ماتریس را می دهد :

(tril(k<<


بخش بالا مثلثی ماتریس را می دهد :

(triu(k<<


تجزیه چولسکی ماتریس معین مثبت :

(chol(k<<


تعداد عناصر ماتریس :

(numel(k<<


مشخص کردن اینکه آیا دو بردار یا ماتریس مانند هم هستند یا نه که 0 یا 1 بر می گرداند :

(isequal(k,n<<


عدد وضعیت ماتریس :

(cond(k<<


ماتریس را هسنبرگ می کند :

(hess(k<<


L1 - نرم :

(norm(k,1<<


L2 - نرم یا نرم اقلیدسی :

(norm(k,2<<


∞L - نرم :

(norm(k,inf<<


Lp - نرم :

(norm(k,p<<


متعامد سازی :

(orth(k<<


تجزیه QR ماتریس :

(q,r]=qr(k]<<


مجموع عناصر قطر اصلی :

(trace(k<<


ماتریس کو واریانس را می دهد :

(cov(k<<


ماتریسی را می دهد که ستون هایش پایه ای برای فضای ستونی k باشد :

(colspace(k<<


ایجاد ماتریس هیلبرت n*n : ( اینجا n یک عدد است )

(hilb(n<<


در صورتیکه بردار یا ماتریس عضو inf یا nan نداشته باشد 1 بر می گرداند و در غیر اینصورت 0 :

(isfinite(m<<


فرم جردن ماتریس :

v : ستون هایش بردار های ویژه می باشند.

j : ماتریسی قطری است که اعداد قطر ، مقادیر ویژه اند و همان ماتریس قطری جردن می باشد.

(v,j]=jordan(k]<<





ادامه مطلب ...
نویسنده: پ متلب - چهارشنبه ۱٦ فروردین ،۱۳٩۱


 

مطلب نمودارهای مختلفی را رسم می کند و این بحث در مطلب خیلی گسترده است اما سعی

 می کنم آنچه را که لازم به نظر میرسد توضیح دهم.

 

دستور plot:

 

شکل کلی این دستور به صورت زیر است:

 

plot(x1,y1,'s1'x2,y2,'s2'…)

 

مفهوم این دستور این است که شما می توانید y1 را بر حسب x1 و y2 را برحسب x2 را رسم کنید.

 

مثلا فرض کنید می خواهیم تابع  1+cos(2x)را در بازه [-5 5] رسم کنیم پس به این صورت عمل

عمل می کنیم:

 

>> x=-5:0.1:5;

>> y=1+cos(2*x);

>> plot(x,y)

 

 

 

 

حال فرض کنید می خواهیم رنگ نمودار را قرمز و خط آن را ستاره ای کنیم ،پس می نویسیم:

این همان s1 است که سیمبول محسوب می شود.

 

>> plot(x,y,'r*')

 

 

 

 

 

 

دیدید که برای این تغییرات علایمی را در کوتیشن قرار دادیم این تغییرات را می توانیم بر حسب جدول زیر مدل کنیم:

 

 

نماد

رنگ

نماد

علایم

نماد

نوع خط

b

آبی

.

نقطه

-

توپر

g

سبز

o

دایره

:

نقطه چین

r

قرمز

+

علامت جمع

.-

خط نقطه

c

فیروزه ای

*

ستاره

--

خط چین

m

ارغوانی

s

مربع

 

 

y

زرد

x

علامت ضربدر

 

 

k

سیاه

d

لوزی

 

 

w

سفید

v

مثلث رو به پایین

 

 

 

 

^

مثلث رو به بالا

 

 

 

 

مثلث رو به چپ

 

 

 

 

مثلث رو به راست

 

 

 

 

p

ستاره پنج پر

 

 

 

 

h

ستاره شش پر

 

 

 

 

 

که می توانیم این تغییرات را در هر شکل ایجاد کنیم و این علایم را داخل کوتیشن کنار هم قرار دهیم.

 

دستور ezplot:

برای رسم توابع به کار می رود که در این هنگام دیکر حتی نیازی به تعریف بردار هم ندارید:

فرض کنید می خواهیم   cosh(x) را رسم کنیم پس داریم:

 

ezplot('cosh(x)')

 

 

 

 

 

دستور semilogy:

 

مقدار  log(y) را جایگزین می کند .

 

دستور semilogx:

 

مقدار  log(x) را جایگزین می کند .

 

>> x=-5:0.1:5;

>> y=exp(-2*x);

>> semilogy(x,y)

 

 

 

 

دستور title:

 

برای تا یپ متن در بالای نمودار از آن استفاده می شود.

 

title('your text')

 

دستور grid:

 

 grid onخطوط شبکه ای ایجاد می کند, grid off این خطوط را از بین می برد.

 

دستور box:

box on جعبه محور های مختصات را ایجاد می کند.وbox off آن را از بین می برد.

 

دستورات xlabel و ylabel وzlabel :

 

به ترتیب برچسب هایی را در کنار محور های x و y وz ایجاد می کند.

xlabel('your text')

 

دستور gtext:

 

پس از تایپ به صورت gtext('your text') اگر مکان نما روی figure قرار بگیرد می توانید

متن را در هر نقطه ای قرار دهید.

هر زمان که شما یک نمودار را در مطلب رسم می کنید چند شی متفاوت ایجاد می شود:اول یک صفحه خالی

است که figure نامیده می شود.

 

دستور figure:

 

یک پنجره خالی ایجاد می کند.که حاوی هیچ نموداری نیست.

 

قسمت دوم قسمتی است که نمودار در آن رسم می شود و شامل محور های مختصات می باشد.

و در مطلب axes نامیده می شود.

 

دستور axes :

 

یک figure رسم می کند که حاوی یک axes  خالی است .

 

و در نهایت چیزی است که در axes رسم می شود.

 

اما همه این حرفها را گفتم تا این چیز را بدانید که تمام اشیا که بوجود می آیند دارای خواص منحصر به فرد

 خود نیز هستند مثلا زمانی که شما یک نمودار را رسم می کنید این نمودار دارای خواصی مثل رنگ زمینه ، نوع خطی که شکل با آن رسم می شود، قطر خط و . . . غیره می باشد که می توان تمام خواص یک شی را گرفت و همچنین آنها را به دلخواه خود تغییر داد که برای این کار از دستورات زیر استفاده می کنیم :

 

 

دستورget:

 

می توان خواص و یا یک خاصیت از یک شی را در یافت کرد.

 

مثلا در زیر خواص نموداری را که در جلسه قبل رسم کردیم را با دستور get دریافت

می کنیم:

 

دتورات رسم را دوباره در زیر آورده ام:

 

>> x=-5:0.1:5;

>> y=1+cos(2*x);

>> handel=plot(x,y);

>> get(handel)

                 Color: [0 0 1]

             EraseMode: 'normal'

             LineStyle: '-'

             LineWidth: 0.5000

                Marker: 'none'

            MarkerSize: 6

       MarkerEdgeColor: 'auto'

       MarkerFaceColor: 'none'

                 XData: [1x101 double]

                 YData: [1x101 double]

                 ZData: [1x0 double]

          BeingDeleted: 'off'

         ButtonDownFcn: []

              Children: [0x1 double]

              Clipping: 'on'

             CreateFcn: []

             DeleteFcn: []

            BusyAction: 'queue'

      HandleVisibility: 'on'

               HitTest: 'on'

         Interruptible: 'on'

              Selected: 'off'

    SelectionHighlight: 'on'

                   Tag: ''

                  Type: 'line'

         UIContextMenu: []

              UserData: []

               Visible: 'on'

                Parent: 157.0016

           DisplayName: ''

             XDataMode: 'manual'

           XDataSource: ''

           YDataSource: ''

           ZDataSource: ''

 

چیز هایی را که در بالا می بینید همان خواصی هستند که در مورد آنها صحبت کردم البته صحبت در مورد

همه خواص بالا خارج از حوصله است و چند تا از خاصیت ها را ذکر کرده و با دستور set تغییر می دهیم:

 

دستور set:

 

توسط این دستور می توان خواص یک شی را به دلخواه تغییر داد:

 

مثلا فرض کنید می خواهم رنگ نمودار را از آبی به قرمز و نوع marker آن را به ستاره ای

با سایز 8 تغییر دهیم:

 

پس از دستور set به ترتیب نام مشخصه و سپس مقدار آن را وارد می نماییم:

 

>> set(handel,'color',[1 0 0],'marker','*','markersize',8)

 

 

از دستورات set و get در طراحی رابط های گرافیکی به وفور استفاده می شود.

رسم کردن رویه ها :

 

رسم کردن رویه ها در MATLAB  ، همانند رسم نمودار مبحث گسترده ای است ( البته

برای حرفه ای ها ) . ولی در زیر چند مثال را آورده ام که امیدوارم برای شروع کار

 مفید مفید واقع شود :

 

دستور meshgrid :

 

آرایه های  x  و  yرا  برای نمودار های سه بعدی تولید می کند .

 

 

>> [X,Y] = meshgrid(1:3,10:14)

 

X =

 

     1     2     3

     1     2     3

     1     2     3

     1     2     3

     1     2     3

 

 

Y =

 

    10    10    10

    11    11    11

    12    12    12

    13    13    13

    14    14    14

 

در مثال های آتی این دستور را در کنار دیگر دستورات رسم سه بعدی خواهیم آورد .

 

دستور surf :

 

نمودار صفحه ای (surface plot ) را رسم می کند .

 

مثال :تابع                          را رسم کنید .

 

xg=linspace(-5,5,20);

[x,y]=meshgrid(xg,xg);

z=2-x.^2-y.^2;

surf(x,y,z)

 

 

 

 

 

 

دستور surfc :

 

 

خطوط تراز را روی صفحه ثابت z و در زیر رویه نمایش می دهد .

 

 

 

 

xg=linspace(-5,5,20);

[x,y]=meshgrid(xg,xg);

z=2-x.^2-y.^2;

surfc(x,y,z)

 

 

 

 

 

 

دستور mesh :

 

نمودار شبکه ای را رسم می کند .

 

 

xg=linspace(-5,5,20);

[x,y]=meshgrid(xg,xg);

z=2-x.^2-y.^2;

mesh(x,y,z)

 

 

 

 

 

رسم کلاه مشهور مکزیکی :

 

>> [x,y]=meshgrid(-8.2:0.5:8.2);

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

>> z=sin(r)./r;

>> mesh(z)

دستور subplot :

 

در یک پنجره figure می توانیم بیش یک مجموعه از محورهای مختصات را رسم کنید .

دستور subplot(m,n,p) پنجره figure جاری را به m*n ناحیه تبدیل کند و ناحیه p را

به عنوان ناحیه فعال انتخاب می کند . زیر نمودارها به ترتیب از چپ به راست و بالا به

پایین شماره گذاری می شوند .

 

مثال :

 

نمودارهای sin(x) ، cos(x) ، sinh(x) و  cosh(x)را توسط زیر نمودار ها رسم

کنیـد ؟

 

 

x=-5:0.1:5;

y=sin(x);

z=cos(x);

y1=sinh(x);

z1=cosh(x);

subplot(2,2,1)

plot(x,y)

subplot(2,2,2)

plot(x,z)

subplot(2,2,3)

plot(x,y1)

subplot(2,2,4)

plot(x,z1)

 

 

 

 

دستور area :

 

از این تابع برای ساخت نموداری که از تعدادی نواحی رو هم انباشته شده تشکیل می شود ، استفاده

کنید .دستور area(x,y) با دستور plot(x,y) برابر می باشد که در آن x,y هر دو بردار می باشند .

با این تفاوت که فضای زیر نمودار رنگ می شود .در دستور area(x,y) ، y ماتریس و x هم ماتریس

 یا برداری می باشد که تعداد سطرهای آن با تعداد سطر های y برابر می باشد .اگر x نوشته نشود ،

دستور area از مقدار پیش فرض x=1:size(y,1) استفاده می کند .

 

مثال :

 

z=cos(x);

z=-pi:pi/5:pi;

area([sin(z);cos(z)])

 

 

 

 

دستور fill :

 

برای رنگ کردن یک چند ضلعی می توانید از این تابع استفاده کنید .دستور fill(x,y,’c’)

یک چند ضلعی را که بر حسب بردار های ستونی x و y و رنگ c مشخص می شود رنگ

می کند .

 

مثال :

 

به عنوان یک مثال ساده مثلثی با رنگ سبز را رسم می نماییم :

 

>> x=[1 2 3];

>> y=[1 5 4];

>> fill(x,y,'g')

 

 

 

 

دستور pie :

 

با استفاده از تابع pie(a,b) می توانید نمودارهای استاندارد کیکی رسم کنید که در آن a

برداری از مقادیر و b یک بردار منطقی اختیاری می باشد که قاچ یا قاچهایی را که می بایست

از نمودار کیکی بیرون آورده شوند را توصیف می کند .

>> a=[0.5 1 1.6 1.2 0.8 2.1];

>> pie(a,a==max(a))

 

نمودارهای قطبی :

 

دستور polar :

 

این تا بع داده ها را بر روی مختصات قطبی رسم می کند . شکل کلی این تابع به صورت زیر است :

 

Polar(theta,r)

 

که در آن  theta آرایه ای از زاویه ها بر حسب رادیان بوده و r آرایه ای از فواصل می باشد .

 

 

مثال :

 

تا بعr=1+cos(theta)  را رسم کنید :

 

>> theta=0:pi/20:2*pi;

>> r=1+cos(theta);

>> polar(theta,r)

 

 

 

 

دستور bar :

 

این تابع یک نمودار میله ای عمودی تولید می کند :

 

 

>> x=-2.9:0.2:2.9;

>> y=exp(-x.*x);

>> bar(x,y)

 

 

 

 

دستور bar3 :

 

نمودار میله ای سه بعدی را رسم می کند :

 

 

نمودار بالا را با این دستور رسم می کنیم :

>> x=-2.9:0.2:2.9;

>> y=exp(-x.*x);

>> bar3(x,y)

 

 

 

 

دستورstairs :

 

یک نمودار stairs با هر پله بر روی نقطه ((x,y ترسیم می کند:

 

 

>> x=-2.9:0.2:2.9;

>> y=exp(-x.*x);

stairs(x,y)

 

 

 

 

دستور compass :

 

این تابع یک نمودار قطبی با یک فلش کشیده شده از مبدا به مکان ((x,y تولید می کند .

مختصات نقاطی که قرار است ترسیم شوند در مختصات کارتزین هستند نه قطبی .

 

>> z=eig(randn(20));

>> compass(z)

 

 

http://matlabseven.blogfa.com 

 

 

 

 

مطالب قدیمی تر » « مطالب جدیدتر
نویسندگان وبلاگ:
کدهای اضافی کاربر :