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

مقدمه ای بر متلب 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 تایپ نشده است و نتیجه این دستور نشان داده می شود .
 

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

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

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

کد:
>> 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/

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

ساده تریتن نوع استفاده از این دستور نوشتن figure در خط فرمان است که یک پنجره با مقادی پیش فرض
ایجاد می کند.
منظور از مقادیر پیش فرض، اندازه، مکان و دیگر ویژهگی های پنچره می باشد.
حال کافی است با استفاده از دستوری مثل plot نمودار دلخواه را بر روی پنجره بکشیم.
مثال 1)
 figure
 plot([1 3])
وقتی یک ماتریس به عنوان آرگمان تابع plot استفاده می شود.ستونهای ماتریس را بر حسب اندیس آنرسم می کند.
در مورد بردارها تفاوتی بین سطری یا ستونی بودن آن نیست.
با کمی دقت در بالای پنجره مثال قبل سمت چپ می توانید عبارت figure 1 را ببنید.
(ممکن است به جای 1 عددی دیگری باشد).عدد 1 نشان دهنده دستگیره(handel)نامیده می شود.
در هنگام ایجاد پنجره مطلب یه آن یک عدد اختصاص می دهد.با استفاده از دستگیره می توان
در میان انبوهی از پنجره ها با پنجره مورد نظر کارکرد.
h=figure
با استفاده از این نوع دستور مقدار دستگیره به متغیر h اختصاص پیدا می کند.
مثال 2)
h1=figure;
h2=figure;
figure(h1)
plot([1 2],[3 4])
figure(h2)
plot([1 2;3 4])
figure(n) کهnیک عدد صحیح باعث می شود که
الف) اگر پنچره ای با شمارهn وجود داشته باشد عنوان پنجره فعال روی پنجره های دیگر قرار قرار بگیرد
  ب)  پنجره ای با این شماره ایجاد شود.

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

حتما تا حالا نمودارهایی رو دیده اید که دارای دو محور y می باشند که هر محور y هم رنج داده های متفاوتی از محور دیگه داره. مثلا یه محور بازه بین 0 تا 1000 رو نشون میده که مثلا مربوط به متغیر ارتفاع هستش و یه محور دیگه بازه بین 0.1 تا 0.3 رو نشون می ده که مربوط به تغییرات چگالی هستش.

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

برای فهم بیشتر ابتدا دستورات زیر رو توی command window اجرا کنید:

>>x = 0:0.01:20;

>>y1 = 200*exp(-0.05*x).*sin(x);

>>y2 = 0.8*exp(-0.5*x).*sin(10*x);

حالا می خواهیم هر دو نمودار y1 و y2 رو نسبت به x بکشیم. دستور زیر را اجرا کنید:

>>plot(x,y1,'b',x,y2,'g')
همانطور که میبینید (شکل 1) از اونجا که بازه تغییرات y1 خیلی بزرگتر از y2 هستش اصلا تغییرات y2 در این شکل دیده نمیشه و برای مثال شما نمیتونید همچین شکلی رو توی پایان نامه یا مقاله قرار دهید.
پس بهتر است که از یک نمودار با دو محور y استفاده کنیم که در یک محور نمودار y1 و در دیگری y2 را رسم کنیم. دستور نمودارهای دو محوره در متلب plotyy می باشد. دستور زیر را اجرا نمائید:

>> plotyy(x,y1,x,y2)

همانطور که دیده می شود (شکل 2) نموداری با دو محور y برای ما رسم می شود که در محور سمت چپ نمودار اولی یعنی y1 بر حسب x و در محور سمت راست نمودار دومی یعنی y2 بر حسب x رسم شده است. در این عکس می توان تغییرات y2 را به وضوح مشاهده نمود.

در رابطه به نمودار های دو محوره چندین بحث وجود دارد که باید به آنها اشاره کنیم:

1- چگونه یک محور و یا هر دو محور y و یا محور x را لگاریتمی کنیم؟

جواب: همانطور که می دانیم در نمودارهای دو بعدی نوع محورها می توانند خطی و یا لگاریتمی باشند. برای توضیحات بیشتر می توانید به «ایجاد نمودارهای دوبعدی با محورهای لگاریتمی در متلب» در همین وبلاگ مراجعه کنید.

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

به جای دستور plotyy(x,y1,x,y2) که نوشتیم می توانستیم یکی از دستورات زیر را اجرا کنیم:

plotyy(x,y1,x,y2) = plotyy(x,y1,x,y2,'plot') = plotyy(x,y1,x,y2,@plot)

عبارت 'plot' در دستور دوم و یا @plot در دستور سوم به این معنی است که هر دو محور y دارای نوع خطی می باشند. چون هر دو محور y دارای نوع خطی می باشند نوشتن یک عبارت 'plot'  و یا @plot  برای هر دو به کار می رود. همانطور که دیدیم ننوشتن هیچ عبارتی هم به صورت default نوع محور را خطی می کند.

اما اگرکه مثلا بخواهیم محور y مربوط به نمودار y1 خطی و نمودار y2 لگاریتمی باشد باید به صورت زیر بنویسیم:

>> plotyy(x,y1,x,y2,'plot','semilogy')

واضح است که به جای عبارت 'semilogy' می توان @semilogy و به جای 'plot' می توان @plot را نوشت.

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

الف- هر دو محور y لگاریتمی و محور x خطی :                                                               >>plotyy(x,y1,x,y2,'semilogy')

ب- هر دو محور y لگاریتمی و محور x لگاریتمی :                                                                 ‌>>plotyy(x,y1,x,y2,'loglog')

عبارت plotyy(x,y1,x,y2,'loglog','plot') دارای خطای منطقی می باشد علت آن هم این است که از آنجا که ما یک محور x داریم این محور نمی تواند در آن واحد هم خطی باشد و هم لگاریتمی که در این عبارت محور x برای y1 لگاریتمی و برای y2 خطی می باشد. پس باید حواسمان را جمع کنیم.!

2- رنگ نمودارها و محورها را چگونه تغییر دهیم و یا چگونه ضخامت خط را تغییر داده و یا marker بر نمودار بگذاریم و یا اینکه چگونه برچسب برای محورها قرار دهیم؟

برچسب گذاری برای محور x و محور y سمت چپ با همان دستورات xlabel و ylabel انجام می پذیرد:

>>xlabel('x')

>>ylabel('y_1')

می توان با دستور title هم یک عنوان به نمودار داد و یا با دستور legend می توان برای نمودار راهنما قرار داد:

>>title('Type of Graph - -> plotyy')

>>legend('y_1','y_2')

اما مشکل قرار دادن برچسب بر روی محور y سمت راست می باشد.

برای قرار دادن بر چسب بر روی محور y سمت راست نیاز است که دستورات set و get را توضیح دهیم که چون هنوز پست مربوط به این دستورات را برایتان قرار نداده ام مجبورم فقط خود دستورات را بنویسم. اگرکه در فهم آن مشکلی داشتید می توانید منتظر بمانید تا من در پست های آینده این دستورات مهم را توضیح دهم.

برای گذاشتن برچسب بر روی محور y سمت راست و یا تغییر دادن رنگ نمودارهای آبی و سبز و یا تغییر رنگ محورها باید ابتدا دستور plotyy را به شکل زیر بنویسیم:

>>[AX P1 P2]=plotyy(x,y1,x,y2);

با این کار سه متغیر به نامهای AX و P1 و P2 در workspace ساخته می شوند که متغیر AX یک بردار با دو مولفه می باشد. مولفه AX(1) نشان دهنده محور y سمت چپ و مولفه AX(2) نشان دهنده محور y سمت راست می باشد.

متغیر P1 نشان دهنده نمودار اولی یعنی y1 بر حسب x و متغیر P2 نشان دهنده نمودار دومی یعنی y2 بر حسب x می باشد. پس برای نمونه اگر که می خواهیم رنگ نمودار y1 بر حسب x که در اینجا آبی هست را تغییر دهیم باید خاصیت رنگ متغیر P1 را تغییر دهیم و یا اگر می خواهیم برای نمودار y2 بر حسب x از marker استفاده کنیم باید برای متغیر P2 از marker استفاده کنیم.

مثلا اگر قرار است رنگ محور سمت چپ را عوض کنیم باید در واقع رنگ AX(1) را عوض کنیم و یا مثلا اگر قرار است برای محور سمت راست برچسب بگذاریم باید خاصیت ylabel را برای AX(2) عوض کنیم.

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

>>set(P1,'color','r')

>>set(P2,'color',[0.5 0 1])

با دستور اول رنگ نمودار y1 قرمز می شود. می توان به جای 'r' از دیگر حروف استفاده کرد. برای مطالعه بیشتر به بخش «نمودار های دو بعدی در متلب» همین وبلاگ مراجعه نمائید.

دستور دوم نوع دیگری از ترکیب رنگها می باشد. متلب با خاصیت RGB سروکار دارد. سه عددی که در دستور بعدی به کار رفته است به ترتیب عدد اول سهم رنگ قرمز (R) و عدد دوم سهم رنگ سبز (G) و عدد سوم سهم رنگ آبی (B) را نشان می دهد. که این اعداد باید بین صفر و یک باشند. مثلا اگر هر سه را یک قرار دهیم رنگ حاصله سفید و اگر هر سه را صفر قرار دهیم رنگ حاصله مشکی خواهد بود. برای مثال  به جای عبارت set(P1,'color','r') از عبارت set(P1,'color',[1 0 0]) نیز می توان استفاده کرد.

مثلا می خواهیم نوع خط نمودار y2 را به خط چین تغییر دهیم و یا نوع خط نمودار y1 را نقطه چین کنیم و مثلا ضخامت خط نمودار y1 را 3 قرار دهیم:

>>set(P2,'linestyle','--')

>>set(P1,'linestyle',':','Linewidth',2)

و یا اینکه برای نمودار y2 از marker دایره استفاده کنیم:

>>set(P2,'marker','o')

تغییر رنگ خود محورها:

همانطور که در شکل 2 مشاهده می کنید به صورت پیش فرض رنگ محور سمت چپ آبی و محور سمت راست سبز می باشد. اگر که بخواهید خاصیت رنگ این محورها را تغییر دهید همانطور که گفته شد باید خاصیت رنگ AX(1) برای محور سمت چپ و خاصیت رنگ AX(2) برای محور سمت راست را تغییر دهیم. هر محور خاصیتی به نام ycolor دارد که ما با دستور set می توانیم یک رنگی رو به اون set کنیم:

>>set(AX(1),'ycolor','k')

>>set(AX(2),'ycolor','m')

با دستور اول رنگ محور سمت چپ مشکی شده و با دستور دوم رنگ محور سمت راست بنفش می شود. می توانید از ترکیب رنگهای RGB هم استفاده نمائید مانند:

>>set(AX(1),'ycolor',[1 1 1])

با این دستور رنگ محور سمت چپ سفید می شود.

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

>>set(AX,'ycolor','r')

با این دستور رنگ هر دو محور قرمز خواهد شد.

 

گذاشتن بر چسب برای محور y سمت راست:

همانطور که اشاره کردیم با دستور ylabel می توانیم برای محور سمت چپ برچسب بگذاریم اما برای محور سمت راست باید از دستور دیگری استفاده نمائیم. هر محوری خاصیتی به نام string دارد که در واقع برچسبی است که بر آن محور قرار میگیرد. پس به زبان ساده ما باید string محور سمت راست را تغییر دهیم. اما علاوه بر این مطلب باید بدانیم که این string مربوط می شه به خاصیت ylabel اون محور. به طور ساده اگه بخوام بگم باید بگیم ما می خواهیم خاصیت ylabel مربوط به محور AX(2) رو تغییر بدهیم، یعنی چی که تغییر بدهیم؟ یعنی اینکه خاصیت string اون رو به هر چیزی که ما می خواهیم تغییر دهیم. این مطالبی رو که گفتم به زبان متلب باید به صورت زیر بنویسیم:

>>set(get(AX(2),'ylabel'),'string','y_2')

به کمک دستور get(AX(2),'ylabel') به متلب می فهمونیم که چه چیزی رو تو حافظه بگیره و ما با این دستور می گیم که خاصیت ylabe از محور سمت راست رو بگیر. خوب متلب میگه گرفتم، حالا با دستور set میگیم string اون رو به y_2 تغییر بده. به جای y_2 هر چیزی که بنویسید به عنوان برچسب محور سمت راست قرار داده خواهد شد.

واضح است که به جای دستور ylabel('y_1') می توان از دستور زیر استفاده کرد:

>>set(get(AX(1),'ylabel'),'string','y_1')

که به نظر کار بیهوده ای می رسد چراکه دستور ylabel('y_1') خیلی کوتاه تر و فهم آن ساده تر می باشد!

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

>>set(AX,'xcolor','g')

با این دستور رنگ محور x سبز می شود. با دستور زیر هم میتونید رنگ محور x بالا رو تغییر بدید:

>> set(gca,'xcolor','k')

با این دستور رنگ محور بالایی مشکی خواهد شد. (gca مخفف get current axis می باشد.)

شکل 3 شکل نهایی این دستورات خواهد بود.

شکل های 1 و2 و 3 و همچنین m فایل مربوط به این پست را در آدرس زیر به صورت یه فایل rar قرار داده ام که می تونید دانلود کنید. پسورد فایل rar هم هستش: www.elmoya.mihanblog.com

https://rapidshare.com/files/459251068/Plotyy_files.rar


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

یکی از پایه ای ترین مباحث برای کسی که می خواهد با متلب کار کند دونستن کار با ماتریس ها و بردار ها هستش.

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

 

نحوه ایجاد بردار:

راه اول: یک زمانی اعضای بردار رو خودتون دستی می خواهید وارد کنید. مثلا یه بردار سرعت دارید که اعضای اون 20 و 25 و 30 می باشد. برای این کار این اعداد را با یک فاصله و بین دو علامت [ ] قرار می دهید:

>>velocity=[20  25  30]

با این کار بردار سرعت با سایز 1x3 برای شما ایجاد می گردد.

همانطور که مشاهده کردید با این کار شما یک بردار سطری ایجاد کرده اید. می توانید به جای فاصله بین اعداد از “,”  هم استفاده کنید:

>>velocity=[20,25,30]

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

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

1- از ترانهاده استفاده کنیم. علامت ترانهاده در متلب یک تک کوتیشن هستش:

>>v = [20  25  30]’

2- به جای گذاشتن فاصله یا “,” در بین اعداد از “;” استفاده کنیم:

>>v = [25;25;30]

با این کار بردار ستونی ایجاد می گردد.

 

راه دوم:

راه دوم، ایجاد یک بردار با فاصله مساوی بین درایه های اون می باشد. برای مثال می خواهیم برداری با درایه های 1و3و5و7و9و11 ایجاد کنیم. میبینیم که در این بردار عدد اول 1 و بقیه اعداد دو تا دوتا اضافه شده اند تا به عدد آخر یعنی 11 رسیده اند. متلب یک فرم مشخصی برای این گونه بردارها دارد:

m:q:n

این فرم نوشتن یعنی از عدد m تا عدد n ، q تا q‌ تا برو جلو. در واقع گام بردار q می باشد:

>>A=1:2:11

با دستور بالا بردار A با درایه ای 1و3و5و7و9و11 ایجاد می گردد. که یک بردار سطری می باشد.

در ایجاد بردار سطری گذاشتن [ ] نیازی نمی باشد.

اما اگر بخواهید به همین فرم یک بردار ستونی ایجاد کنید و باید ‌[ ] را گذاشته و علامت ترانهاده را نیز به کار ببرید:

>>B=[1:2:11]’

نکات:

1- اگر عدد گام را ننویسید مثل A=1:4 خود متلب گام را برابر با یک می گیرد.

2- اگر بخواهید از گام منفی استفاده کنید حتما باید m از n بزرگتر باشد: B=5:-2:0

3- در این حالت باید حواستان باشد که ممکن است عدد n جزو درایه های یک بردار نباشد چراکه همه چیز بسته به گام دارد. برای مثال در مثال زیر عدد 10 جزو درایه های بردار نخواهد بود:

>>C=1:2:10

 

راه سوم: استفاده از دستور linspace(m,n,q)

به کمک این دستور می توان برداری را بدین صورت ایجاد کرد که عدد اول آن بردار m و عدد آخر n خواهد بود و  بین این دو عدد تعداد q-2 عدد دیگر قرار دارد که متلب خود فاصله بین اعداد را مشخص خواهد کرد:

>>linspace(3,5,4)

ans =

       3.0000    3.6667    4.3333    5.0000

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

>>linspace(3,5,4)’

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

 

اعمال بر روی بردارها:

1- برای انتخاب یک عضو از یک بردار باید جایگاه آن را به کار برد:

>>A=[-1  2  0  5]

>>A(3)

ans =

         0

اگر بخواهیم عضو اول تا سوم بردار A را نشان دهیم:

>>A(1:3)

اگر بخواهیم عضو دوم تا آخر بردار A را نشان دهیم:

>>A(2:end)

اگر بخواهیم عضوهای اول و دوم وچهارم از A را نشان دهیم:

>>A([1 2 4])

اگر بخواهیم عضو های اول و سوم از A را نشان دهیم:

>>A([1 3])

یا

>>A(1:2:3)

2- برای عوض کردن یک عضو یا چند عضو کافیست در برابر جایگاه آن مقدار جدید را وارد کنیم. مثلا می خواهیم عضو سوم از بردار A که صفر می باشد را برابر با 10 قرار دهیم:

>>A(3)=10

A=

    -1   2   10   5

حالا می خواهیم اعضای 1 تا 3 را عوض کنیم:

>>A(1:3)=[12  13  6]

A=

12  13  6  5

3- برای حذف یک یا چند عضو جایگاه آن را برابر با   [‌]  قرار می دهیم. مثلا می خواهیم عضد چهارم بردار A را حذف کنیم:

>>A(4)=[]

A=

     12  13  6

توجه کنید که با این کار سایز A هم 1x3 خواهد شد. برای حذف چندین عضو هم به همین ترتیب عمل می کنیم:

>>A(1:2)=[]

A=

     6

4- برای اضافه کردن هم می توانیم در برابر جایگاههای جدید مقادیر جدید را قرار دهیم. فرض کنید بردار B به صورت زیر باشد:

>>B=[1  2  5  -4]

حال می خواهیم به این بردار عضو پنجمی را با مقدار 9 اضافه کنیم:

>>B(5)=9

B=

    1  2  5  -4  9

توجه کنید که مثلا حالا می خواهید عضو نهمی با مقدار 3- به B اضافه کنید:

>>B(9)=-3

B=

     1  2  5  -4  9  0  0   0  -3

چون برای جایگاههای ششم و هفتم و هشتم مقداری داده نشد خود متلب آنها را برابر صفر در نظر میگیرد.

5- چسباندن دو بردار به یکدیگر. فرض کنید دو بردار  A و B را داریم و می خواهیم با کنار هم قرار دادن آنها بردار C را ایجاد کنیم:

اگر A و B سطری باشند:

>>C=[A B]

اگر A و B‌ ستونی باشند:

>>C=[A;B]

 

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

فرض کنید که می خواهیم ماتریس زیر را ایجاد کنیم:

           1200  5.0  0.25   1.1

data = 1400  4.1  0.23   0.8

           1500  3.2  0.22   0.3

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

>>data = [1200  5.0  0.25  1.1;1400  4.1  0.23  0.8;1500  3.2  0.22 0.3]

اعمال بر ماتریس ها:

1- برای انتخاب یک عضو از ماتریس باید جایگاه سطر و ستون آنرا به ترتیب اول سطر و دوم ستون مشخص کنید. برای مقال برای انتخاب عدد 1400 باید بنویسیم:

>>data(2,1)

برای انتخاب مثلا دو عدد 4.1 و 0.23 باید بنویسیم:

>>data(2,2:3)

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

>>data(1:3,2) = data(1:end,2) = data(:,2)

2- برای عوض کردن اعضا باید سطر و ستون را مشخص کرده و برابر اعداد جایگزین نمائیم.

برای عوض کردن عدد سطر سوم و ستون چهارم با عدد 10:

>>data(3,4)=10

برای عوض کردن اعداد سطر سوم:

>>data(3,:)=[1 2 3 4]

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

>>data(:,1)=[4;5;6]

3- برای حذف اعضا: دقت کنید که در حذف فقط می توانید یک سطر و یا سا ستون را کلا حذف کنید چراکه در غیر اینصورت حالت ماتریسی به هم خواهد خورد. برای حذف ستون سوم:

>>data(1:3,3)=[]

4- برای اضافه کردن اعضا: اضافه کردن هم می تواند به صورت سری یا ستونی باشد:

>>data(:,5)=[6;7;8]

>>data(4,:)=[1 0 -1 2]

>>data(6,6)=9

در عبارت آخر عوض سطر 6  و ستون 6 برابر با 9 قرار میگیرد و دیگر اعضا جدید برابر صفر خواهند شد.

http://elmoya.mihanblog.com/post/28

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

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

1. fix(x)

دستور fix قسمت اعشاری عدد x را حذف می کند.

fix(-2.5) = -2

fix(1.05) = 1

 

2. round(x)

دستور round عدد x را به نزدیکترین عدد صحیح به خودش گرد می کند.

round(5.7) = 6

round(5.5) = 6

round(-3.8) = -4

round(-5.5) = -6

 

3. ceil(x)

دستور ceil عدد x را به کوچکترین عدد صحیح بزرگتر یا مساوی x گرد می کند.

ceil(-3.8) = -3

اعداد صحیح بزرگتر از 3.8- عبارتند از : 3- و 2- و 1- و 0 و 1 و . . . که کوچکرترین آنها 3- می باشد پس به 3- گرد می کند.

ceil(4.9) = 5

اعداد صحیح بزرگتر از 4.9 عبارتند از : 5 و  6 و 7 و . . . که کوچکترین آنها 5 می باشد پس به 5 گرد می کند.

 

4. floor(x)

دستور floor عدد x را به بزرگترین عدد صحیح کوچکتر یا مساوی x گرد می کند.

floor(7.5) = 7

اعداد صحیح کوچکتر یا مساوی 7.5 عبارتند از: 7 و 6 و 5 و . . . پس به بزرگترین آنها یعنی 7 گرد می کند.

و به همین ترتیب:

floor(-3.7) = -4

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

قبل از اینکه بخواهم نحوه ایجاد نمودارهای 2 بعدی رو به شما عزیزان بگم باید یادآوری کنم فرض من بر این هست که شما دوستان مباحث ابتدایی متلب مثل ایجاد بردارها و ماتریس ها و کار کردن با m فایل ها را بلدید. اما ان شاء الله در آینده من ابتدایی ترین مباحث رو هم خدمتتون ارائه خواهم کرد. اما فعلاً نه!

فرض کنید که می خواهیم نمودار سینوس  را در فاصله بین صفر تا 2*pi رسم کنیم:

t=0:0.01:2*pi;

u=sin(t);

گام متغیر t  را برابر با 0.01 قرار دادم تا وقتیکه نمودار سینوس کشیده میشه حالت شکسته نداشته باشه.

دستور رسم نمودارهای دو بعدی در متلب دستور plot هستش:

plot(t,u)

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

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

grid on    یا    grid

دستور grid on یا grid باعث شبکه بندی صفحه مختصات میشه.

xlabel('t')

ylabel('u')

title('graph u vs t ')

legend('sin')

دستور xlabel باعث گذاشتن برچسب بر روی محور x ها میشه. بین دو علامت ' '  هرچی بنویسید در روی محور x ها نشون داده میشه.

دستور ylabel باعث گذاشتن برچسب بر روی محور y ها، دستور title باعث گذاشتن عنوان بر روی نمودار و دستور legend باعث گذاشتن راهنما در گوشه نمودار میشه. بین دو علامت ' ' هرچی بنویسید همون نشون داده خواهد شد.

فرض کنید که می خواهید در روی بر چسب محور x علامت ریاضی آلفا یا بتا یا هر حرف یونانی دیگه قرار داده بشه. برای این کار در بین دو علامت ' ' کلمه alpha یا beta را تایپ میکنید و قبلش علامت \ را می گذارید:

xlabel('\alpha')

title('\beta')

حال فرض کنید که می خواهید اندیس بالا یا پایین در روی نوشته هاتون داشته باشید. اندیس پایین با علامت _ ایجاد میشه و اندیس بالا با علامت ^ ایجاد میشه:

xlabel('x_i')

legend('R^2')

اما فرض کنید که می خواهید بر روی برچسب محور x (یا محور y یا در عنوان و یا در راهنما) عبارت R را بنویسید که در اندیس پایین اون عبارت index باشه. شاید فکر کنید باید به صورت زیر بنویسید:

xlabel(R_index)

اما با این کار فقط حرف i به صورت اندیس پایین نشون داده خواهد شد. و یا مثلا اگر که بخواهید index اندیس بالا نوشته بشه دستور زیر فقط حرف i را در اندیس بالا نشان میده.

legend('R^index')

برای اینکه این دستور درست کار بکنه 2 راه وجود داره که راه اول کمی غیر منطقی به نظر میرسه:

راه اول:

xlabel(R_i_n_d_e_x)

legend(R^i^n^d^e^x)

این کار برای اندیسهایی که تعداد حروفشون کمه شاید به نظر غیر منطقی نیاد اما اگرکه کلمه اندیس بالا یا پایین 50 حرف باشه غیر منطقیه که بین 50 حرف از _ یا ^ استفاده کنیم. برای همین بهتره از راه دوم استفاده کنیم.

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

xlabel(R_{index})

ylabel(R^{index})

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

legend(\alpha^{\sigma})

سایر علائم و حروف یونانی رو می تونید در قسمت help با جستجوی عبارت text properties در یک جدول کاملی پیدا کنید.

 

اما متوجه شدید که نمودار وقتی کشیده شد با رنگ پیش فرض یعنی آبی کشیده شد. اگر که بخواهید رنگ نمودار را تغییر دهید باید در همان دستور plot این کار را انجام دهید:

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

plot(t,u,' ')

بین دو علامت ' ' هر کدام از حروف زیر را که بنویسید رنگ متناسب با حرف نوشته شده تغییر خواهد کرد:

c : فیروزه ای

m : بنفش

b: آبی (که اگر نوشته نشود هم رنگ آبی پیش فرض می باشد)

r: قرمز

g: سبز

k: سیاه

w: سفید

y: زرد

برای مثال می خواهید رنگ نمودار قرمز شود:

plot(t,u,'r')

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

plot(t,u,'color',[r g b])

به جای سه عدد r و g و b  باید عددی بین 0 و 1 وارد کنید. عدد مربوط به r معرف رنگ قرمز، عدد مربوط به g معرف رنگ سبز و عدد مربوط به b معرف رنگ آبی میباشد. مسلما اگر سه عدد را به صورت [0 0 1] قرار دهید رنگ به صورت قرمز خواهد شد و اگر هر سه را برابر با 1 قرار دهید مشکی و اگر هر سه را برابر با 0 قرار دهید سفید خواهد شد. پش با انتخاب سه عدد بین 0 و 1 میلیونها رنگ می توانید داشته باشید:

plot(t,u,'color',[1 0.2 0.06])

بار دیگر به دستور ابتدایی بر می گردییم. مشاهده کردید که وقتی نمودار را کشیدید با یک ضخامت پیش فرض نمودار برای شما کشیده شد. اگر که بخواهید ضخامت را هم عوض کنید باید از دستور LineWidth در دستور plot به صورت زیر استفاده کنید:

plot(t,u,'LineWidth',a)

یا

plot(t,u,'g','LineWidth',a)

یا

plot(t,u,'color',[1 .03 .5],'LineWidth',a)

منظور از a عددی است که ضخامت خط نمودار را  تعیین می کنه مثلا a=2:

plot(t,u,'k','LineWidth',2)

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

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

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

نرم افزار MATLAB رو یک کمپانی معروف به نام Mathworks ایجاد کرده. متاسفانه این کمپانی کشور عزیز ما رو تحریم کرده به همین دلیل نمی تونید وارد سایت این شرکت (www.Mathworks.com) بشوید.

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

در سایت این کمپانی بخش های متعددی وجود داره اما یکی از مهمترین آنها بخشی است به نام Matlab Central.

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

این بخش مهمترین و بهترین مرجع جهت آموزش متلب به شما و احیانا پاسخگویی به مشکلات و سوالات شما می باشه.

اگر که شما مطلبی رو در مورد MATLAB تو Google جستجو کنید مطمئنا چند آدرس اولی که توسط گوگل پیدا میشه مربوط به بخش Matlab Central از کمپانی Mathworks خواهد بود.

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

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

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

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

Matlab مثل یه دریاچه ای میمونه که اگرکه قلابتو داخلش بندازی حتما یه ماهی صید می کنی. محاله قلابت خالی بیرون بیاد!

به طور کلی نرم افزار متلب شامل 3 بخش متفاوت (که هم میتونند مستقل از هم باشند و هم میتونند وابسته به هم باشند) هست:

1. بخش برنامه نویسی  یا Programming.

2. بخش رابط گرافیکی یا Graphical User Interface  که به اختصار بهش بخش gui میگویند.

3. بخش شبیه سازی یا Simulink.

بخش برنامه نویسی متلب شبیه برنامه نویسی در نرم افزار های دیگه مثل فرترن ، پاسکال ، C ، C++ ، VB و ... هست. با یکسری دستورات base برنامه نویسی که توی همه نرم افزار های برنامه نویسی مشترک هستندو گاها syntax (نحوه نوشتن دستور) اونها متفاوته. البته متلب دراین بخش بسیار قدرتمند تر از نرم افزارهای دیگه هستش که اون هم به خاطر قابلیتهای گرافیکی، قدرت در توابع ریاضی مختلف و ... می باشه.

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

بخش gui مربوط به برنامه های ویژوال هستش. به برنامه هایی که موقع اجرا یه پنجره اجرا باز میشه و داخل اون کلید های OK و Cancel و مثلا چند تا checkbox و ... هستش برنامه های ویژوال میگن. از نمونه بارز برنامه هایی که اساسا کارشون ویژوال هستش میشه به ویژوال بیسیک و یا دلفی اشاره کرد. در قسمت gui متلب شما میتونید برنامه های ویژوال ایجاد کنید که انشا ءالله به وقتش به شما آموزش خواهم داد.

 

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

نویسندگان وبلاگ:
کدهای اضافی کاربر :