تبليغاتX
دیبا الکترونیک

متلب نام يكي از نرم‌افزارهاي رايانه‌اي براي انجام محاسبات رياضي است. واژه متلب هم به معني محيط محاسبات رقمي و هم به معني خود زبان برنامه‌نويسي مربوطه است از تركيب دو واژهٔ 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 تايپ نشده است و نتيجه اين دستور نشان داده مي شود . 
 
برگرفته از وبلاگ : http://azizkhani.mihanblog.com
 

+ نوشته شده توسط مریم در چهارشنبه 8 فروردین1386 و ساعت 13:7 |

درس سیگنال در این ترم باعث شده که به سراغ MATLAB بروم. گاهی وقت ها سعی می کنم بعضی از نکات ریز و به دردخور مربوط به این نرم افزار رو در این وبلاگ بنویسم. امروز می خوام در مورد رسم سیگنال ها صحبت کنم. در MATLAB همه چیز گسسته است. وقتی می خواهیم یک سیگنال پیوسته رسم کنیم این چیزی جز رسم یک سیگنال گسسته با تعداد نقاط زیاد نیست. فرض کنید بخواهیم سیگنال سینوسی زیر را در یک بازه مشخص رسم کنیم. دستورات زیر سیگنال sin pi*t  را در بازه [-pi ,  pi ] رسم می کنند.

>> t=linspace(-1,1,100)*pi;
>> y=sin(pi*t);
>> plot(t,y);

linspace یک محدوده مقادیر با صد نقطه در همان بازه را برای ما آماده می کند. تابع سینوس مقدار سینوس را در هر نقطه آن بازه پیدا کرده و در نهایت به کمک plot تابع را رسم می کنیم . حاصل چیزی شبیه به شکل سمت راست خواهد بود. ولی برای رسم سیگنال گسسته چه کنیم . یک راه این است که نقاط درون بازه را کم کنیم ( مثلا 20 نقطه ) و بعد دستورات Plot را به صورت زیر بازنویسی کنیم :

>> plot(t,y,'*');

Stem Functionاین دستور باعث می شود که نقاط مورد نظر ما به کمک کاراکتر * نمایش داده شوند . اما مدل بهتری برای رسم سیگنال های گسسته وجود دارد و آن استفاده از تابع stem است.طرز استفاده از این تابع برای رسم سیگنال سینوس به صورت زیر خواهد بود :

>> t=linspace(-1,1,20)*pi;
>> f=sin(pi*t);
>>stem(t,f,'filled');

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

 

+ نوشته شده توسط مریم در چهارشنبه 8 فروردین1386 و ساعت 13:2 |

درس سیگنال در این ترم باعث شده که به سراغ MATLAB بروم. گاهی وقت ها سعی می کنم بعضی از نکات ریز و به دردخور مربوط به این نرم افزار رو در این وبلاگ بنویسم. امروز می خوام در مورد رسم سیگنال ها صحبت کنم. در MATLAB همه چیز گسسته است. وقتی می خواهیم یک سیگنال پیوسته رسم کنیم این چیزی جز رسم یک سیگنال گسسته با تعداد نقاط زیاد نیست. فرض کنید بخواهیم سیگنال سینوسی زیر را در یک بازه مشخص رسم کنیم. دستورات زیر سیگنال sin pi*t  را در بازه [-pi ,  pi ] رسم می کنند.

>> t=linspace(-1,1,100)*pi;
>> y=sin(pi*t);
>> plot(t,y);

linspace یک محدوده مقادیر با صد نقطه در همان بازه را برای ما آماده می کند. تابع سینوس مقدار سینوس را در هر نقطه آن بازه پیدا کرده و در نهایت به کمک plot تابع را رسم می کنیم . حاصل چیزی شبیه به شکل سمت راست خواهد بود. ولی برای رسم سیگنال گسسته چه کنیم . یک راه این است که نقاط درون بازه را کم کنیم ( مثلا 20 نقطه ) و بعد دستورات Plot را به صورت زیر بازنویسی کنیم :

>> plot(t,y,'*');

Stem Functionاین دستور باعث می شود که نقاط مورد نظر ما به کمک کاراکتر * نمایش داده شوند . اما مدل بهتری برای رسم سیگنال های گسسته وجود دارد و آن استفاده از تابع stem است.طرز استفاده از این تابع برای رسم سیگنال سینوس به صورت زیر خواهد بود :

>> t=linspace(-1,1,20)*pi;
>> f=sin(pi*t);
>>stem(t,f,'filled');

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

 

+ نوشته شده توسط مریم در شنبه 30 دی1385 و ساعت 23:47 |

تبدیل لاپلاس

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

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

syms t

البته هر متغیر دلخواه دیگری را هم می شود تعریف کرد و تابع برگشتی هم بر حسب s می باشد.

r = laplace(t)

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

ilaplace(r)

حالا فرض کنید بخواهید از تابع 1 لاپلاس بگیرید و بنویسید 

laplace(1)

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

m=sym(1)

ilaplace(m)

 

+ نوشته شده توسط مریم در شنبه 15 مهر1385 و ساعت 10:25 |

ماتریس ها و اعمال ماتریسی

 

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

 

ارجاع به درایه های منفرد :

 درایه های منفرد ماتریس و بردار را می توان با اندیس های درون پرانتز ارجاع داد.

 مثلا A(2,3) درایه سطر دوم و ستون سوم ماتریسA را نشان می  دهد.

A = [1 2 3; 4 5 6; -18 9]

سپس بردار ستونی X به دو صورت زیر نمایش داده می شود:

X = [3 2 1]'

X = [3; 2; 1]

 

 

با این بردار x(3) مولفه دوم بردار x را نشان می دهد که مقدار آن 1 است. آرایه های با ابعاد بالاتر نیز به طور مشابه اندیس دهی می شوند. ماتریس یا بردار تنها مقادیر صحیح مثبت را به عنوان اندیس می پذیرد.

آرایه دو بعدی را نیز می توان مانند برداری یک بعدی اندیس دهی نمود. اگرA  ماتریسی n*m باشد A(i,j)  مشابه A(i+(j-1)*m) می باشد. این ویژگی کاملا با توابع find استفاده می شود.

(در درس آینده در مورد این تابع توضیحات بیشتری خواهم داد.)

 

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

عملکردهای ماتریس زیر در Matlab  قابل استفاده هستند.

جمع کردن                                             +

تفریق کردن                                            -

ضرب کردن                                             *

توان                                                     ^

ترانهاده خروج(مختلط) یا ترانهاده (حقیقی)     ا

ترانهاده (حقیقی یا مختلط)                        ا.

تقسیم چپ                                            \

تقسیم راست                                         /

 

البته این عملکردهای ماتریسی را می توان به اسکالرها (1*1) هم اعمال نمود. در صورتی که ابعاد ماتریس ها برای عملیات ماتریسی مناسب نباشد. پیغام خطایی ظاهر می گردد . مگر برای عملیات اسکالر _ برداری (برای +،- ،/ ،و ضرب) در این حالت ها با هر کدام از این درایه های ماتریس مانند یک اسکالر رفتار می گردد

دستورات زیر را امتحان کنید:A^2 , A*X

 

تقسیم ماتریس :

عملیات تقسیم ماتریس نیاز به توضیح ویژه ای دارد در صورتی که A ماتریسی مربعی و قابل معکوس سازی باشد و b بردار ستونی یا سطری مناسب باشد به ترتیب x=b/a حل x*a=b و x=a/b حل x*b=a می باشد. در صورتی که A مربعی و غیر منفرد باشد، b/a=a/b از لحاظ ریاضی به ترتیب مانند inv(A)*b و b*inv(A) می باشند که inv(A) معکوس A را محاسبه می کند.

عملکردهای تقسیم چپ و راست بسیار دقیق و کارآمد می باشند در تقسیم چپ در صورتی که A مربعی باشد، فاکتور گیری به روش حذف گوس انجام می گردد و این فاکتورها برای حل A*x=b مورد استفاده قرار می گیرند در صورتی که A مربعی نباشد سیستم under-determined یا

 Over-determined به روش حداقل مربعات حل می شود تقسیم راست را می توان بر مبنای تقسیم چپ به صورت b/a = (A'\B') تعریف نمود.

دستورات زیر را امتحان کنید:

A = [1 2 ; 3 4]

B = [4 10]

X = A\b

پاسخ A*X=B بردار ستونی[2 ;1] =x می باشد

ماتریسی =M

 

عملگرهای درایه ای :

جمع و تفریق ماتریسی از ابتدا به صورت درایه ای عمل می کنند ولی دیگر عملکردهای ماتریسی چنین نیستند اگر بخواهیم بقیه عملکردهای m (* ،^ ،/ ،\ ) به صورت درایه ای عمل کنند باید قبل از آن ها نقطه ای قرار گیرد به عنوان مثال

[1 2 3 4].*[1 2 3 4]

یا

[1 2 3 4].^ 2

 

به [1 4 9 16] منجر خواهد شد. در آینده خواهیم گفت که این ویژگی بویژه هنگام استفاده از گرافیک مفید خواهد بود.

 

 

+ نوشته شده توسط مریم در دوشنبه 25 اردیبهشت1385 و ساعت 0:45 |
آرايه هاي ساده

MATLAB آرايه ها را به روش ساده اي ايجاد مي کند. به مثال زير توجه کنيد:

>> a = [1 2 3 4 5]

a =

     1     2     3     4     5

>> a = [1,2,3,4,5]

a =

     1     2     3     4     5

در هر دو قسمت اين مثال ما آرايه اي به نام a ساختيم که شامل اعداد صحيح از 1 تا 5 مي باشد. و يا:

>> a = [pi 2*pi 3*pi 4*pi 5*pi 6*pi 7*pi]

a =

    3.1416    6.2832    9.4248   12.5664   15.7080   18.8496   21.9911

حال شما مي توانيد عملياتي را روي اين آرايه انجام دهيد. مثلاً:

>> b = sin(a) + cos(a)

b =

   -1.0000    1.0000   -1.0000    1.0000   -1.0000    1.0000   -1.0000

ملاحظه مي کنيد که عمليات روي تک تک عناصر اين آرايه انجام مي شوند در نتيجه b هم آرايه اي شبيه به a خواهد بود.

هر کدام از عناصر يک آرايه داراي انديس مربوط به خود مي باشد که بوسيله همين انديس مي توان مستقيماً به آن عنصر دست يافت:

>> a(2)

ans =

    6.2832

>> a(end)

ans =

   21.9911

در قسمت اول اين مثال عددي که در داخل پرانتز قرار گرفته است همان شماره انديس آن عنصر در آرايه است.(از سمت چپ به راست) و در قسمت دوم همانطور که مي بينيد اگر بخواهيم به آخرين عنصر آرايه دست پيدا کنيم کافيست عبارت end را درون پرانتز وارد کنيم. اين روش بدرد زماني مي خورد که تعداد عناصر آرايه را ندانيم.

همچنين مي توانيد به يک بلوک از عناصر آرايه دست يابيد:

>> a(1:3)

ans =

    3.1416    6.2832    9.4248

>> a(4:-1:1)

ans =

   12.5664    9.4248    6.2832    3.1416

>> a(1:2:5)

ans =

    3.1416    9.4248   15.7080

به نمادگزاري ها خوب دقت کنيد: در قسمت اول, عناصر اول تا سوم اين آرايه خواسته شده است. توجه داشته باشيد که مي توانيد بجاي دومين عدد از عبارت end هم استفاده کنيد. مثلاً (2:end) عناصر دوم تا آخر اين آرايه را برمي گرداند.

در قسمت دوم توجه داشته باشيد که علامت (m:k:n) بيانگر اين است که از عنصر mام شروع کن k تا k تا برو جلو تا برسي به عنصر nام. پس در اين قسمت از عنصر چهارم شروع کرديم يکي يکي عقب آمده تا به عنصر اول رسيديم. توجه کنيد که علامت منفي به معناي حرکت رو به عقب مي باشد. (استفاده از k = -1 يک تکنيک است براي برعکس کردن آرايه.) به همين ترتيب در قسمت سوم از عنصر اول شروع کرده 2تا 2تا شروع کرده ايم تا به عنصر پنجم رسيديم. يعني عناصر اول و سوم و پنجم را نمايش داده ايم.

روش ديگري هم براي نمايش عناصر دلخواه در MATLAB داريم:

>> a([1 3 4 5])

ans =

    3.1416    9.4248   12.5664   15.7080

>> a([1:3 end])

ans =

    3.1416    6.2832    9.4248   21.9911

>> a([1 1 1 2])

ans =

    3.1416    3.1416    3.1416    6.2832

به ترتيب قرار گيري کروشه و پرانتز خوب دقت کنيد. در قسمت اول, عناصر اول و سوم و چهارم و پنجم خواسته شده است. در قسمت دوم از تکنيکهاي سابق هم استفاده کرده عناصر اول تا سوم و نيز عنصر آخري هم نمايش داده شده است. و در قسمت سوم به اين نکته تاکيد شده است که مي توانيم يک عنصر را چند بار نمايش دهيم, پس آرايه اي از سه بار تکرار عنصر اول به همراه عنصر دوم ساخته ايم.

حال مي توانيم آرايه a را به روش ساده تري هم درست کنيم:

>> a = (1:1:7)*pi

a =

    3.1416    6.2832    9.4248   12.5664   15.7080   18.8496   21.9911

فکر نمي کنم نياز به توضيح باشد!

روش ديگري هم براي توليد آرايه وجود دارد. در اين روش, عنصر اول, عنصر آخر و تعداد کل عناصر آرايه بايد دانسته شود. شکل کلي اين تابع بصورت زير است:

linspace(m,n,k)

در اين تابع اولين عنصر آرايه برابر m, آخرين عنصر برابر n و کل تعداد عناصر آرايه k تا است. مثلاً:

>> a=linspace(pi,7*pi,7)

a =

    3.1416    6.2832    9.4248   12.5664   15.7080   18.8496   21.9911

نتيجه همان آرايه قبلي است.

جهت آرايه ها:

تمامي آرايه هايي را که تا حالا مشاهده کرديد آرايه هاي سطري بودند. با MATLAB آرايه هاي ستوني را هم به آساني مي توان ساخت.

به مثال زير توجه کنيد:

>> a=[1;2;3;4]

a =

     1

     2

     3

     4

>> 

پس ملاحظه کرديد که با قرار دادن علامت ; بين داده هاي يک آرايه مي توان يک آرايه ستوني ايجاد کرد.

اگر هنگام وارد کردن داده هاي يک آرايه بعد از هر عنصر کليد Enter را بزنيد نيز مي توانيد يک آرايه ستوني توليد کنيد:

>> a=[1

2

3

4]

a =

     1

     2

     3

     4

>> 

راه ديگر توليد آرايه ستوني, توليد آرايه سطري و سپس ترانهاده گرفتن از آن مي باشد:

>> a=[1 2 3 4]

a =

     1     2     3     4

>> b=a.'

b =

     1

     2

     3

     4

>> 

همانطور که مي دانيد عملگر ' ترانهاده يک آرايه را برمي گرداند. سعي کنيد هميشه از علامت نقطه قبل آن استفاده نماييد. اگر از نقطه استفاده نکنيد در صورتيکه در آرايه از عدد مختلط استفاده کرده باشيد در آرايه ترانهاده, آن عدد بصورت مزدوج عدد اصلي خود نمايش داده خواهد شد:

>> a=[1 2 3 4]

a =

     1     2     3     4

>> b=a+a*i

b =

   1.0000 + 1.0000i   2.0000 + 2.0000i   3.0000 + 3.0000i   4.0000 + 4.0000i

>> b'

ans =

   1.0000 - 1.0000i

   2.0000 - 2.0000i

   3.0000 - 3.0000i

   4.0000 - 4.0000i

>> b.'

ans =

   1.0000 + 1.0000i

   2.0000 + 2.0000i

   3.0000 + 3.0000i

   4.0000 + 4.0000i

>> 

آرايه ها مي توانند سطرها و ستونهاي متعددي هم داشته باشند که نتيجه آن ساخته شدن ماتريسها مي باشد. از علامت ; براي جداسازي سطرهاي يک ماتريس مي توانيد استفاده کنيد. توجه داشته باشيد که تعداد عناصر سطرها در يک ماتريس حتماً بايد برابر باشند وگر نه MATLAB پيغام خطاي زير را خواهد داد:

All rows in the bracketed expression must have the same number of columns.

خوب! همانطور که مي دانيد در MATLAB مي توان محاسبات عددي بر روي آرايه ها انجام داد که اين محاسبات بر روي تک تک عناصر آرايه انجام مي شوند:

> a=[1 2 3 4]

a =

     1     2     3     4

>> 2*sin(a)+sqrt(5)/3

ans =

    2.4283    2.5640    1.0276   -0.7682

>> 

و اما محاسبات آرايه اي در آرايه ها:

در دو ماتريس هم اندازه مي توان بر روي عناصر نظير به نظير, عمليات محاسباتي هم انجام داد. به مثالهاي زير توجه کنيد:

>> a=[1 1 3;2 -1 0]

a =

     1     1     3

     2    -1     0

>> b=[-1 2.2 0;2.1 -1.3 0.8]

b =

   -1.0000    2.2000         0

    2.1000   -1.3000    0.8000

>> a.*b

ans =

   -1.0000    2.2000         0

    4.2000    1.3000         0

>> b./a

Warning: Divide by zero.

ans =

   -1.0000    2.2000         0

    1.0500    1.3000       Inf

>> 2./a

Warning: Divide by zero.

ans =

    2.0000    2.0000    0.6667

    1.0000   -2.0000       Inf

>> 2.^a

ans =

    2.0000    2.0000    8.0000

    4.0000    0.5000    1.0000

>> a.^b

ans =

   1.0000             1.0000             1.0000         

   4.2871            -0.5878 + 0.8090i        0         

>> 

در اينجا ابتدا ماتريسهاي a و b را تعريف نموديم سپس عناصر a و b را نظير به نظير در هم ضرب کرديم. در قسمت بعد عناصر b را نظير به نظير بر عناصر a تقسيم کرديم. اخطاري که در اين قسمت توسط MATLAB  به کاربر داده مي شود اين است که يکي از تقسيمها, تقسيم يک عدد است بر صفر که نتيجه آن بصورت Inf نشان داده مي شود. سپس عدد 2 بر هر کدام از عناصر ماتريس a تقسيم شده است. در قسمت بعد عدد 2 را به توان هر کدام از عناصر ماتريس a رسانده شده است و در آخرين قسمت عناصر ماتريس a را بصورت نظير به نظير به توان عناصر ماتريس b رسانديم.

توجه داشته باشيد که براي انجام دادن اينگونه محاسبات بين 2 ماتريس, حتماً بايد اندازه هاي ماتريسها برابر باشند, در غير اينصورت MATLAB پيغام خطاي زير را مي دهد:

Matrix dimensions must agree.

معرفي چند آرايه استاندارد:

2 تابع ones(n,r) و zeros(n,r) وجود دارند که اولي يک ماتريس n*r با عناصر يک و دومي ماتريس n*r با عناصر صفر مي سازد:

>> ones(2,3)

ans =

     1     1     1

     1     1     1

>> zeros(2)

ans =

     0     0

     0     0

>> 

توجه کنيد در قسمت دوم که فقط يک آرگومان به اين تابع نسبت داده شده است MATLAB يک ماتريس n*n را توليد خواهد کرد.

تابع ديگر, تابع eye است که ماتريس هماني توليد مي کند:

>> eye(3)

ans =

     1     0     0

     0     1     0

     0     0     1

>> eye(2,3)

ans =

     1     0     0

     0     1     0

>> eye(5,3)

ans =

     1     0     0

     0     1     0

     0     0     1

     0     0     0

     0     0     0

>> 

توجه کنيد در استفاده از اين تابع اگر ماتريس شما مربعي بود که عناصر قطر اصلي آن برابر يک و ساير عناصر, صفر خواهند بود و اگر مربعي نبود همانطور که در مثالهاي بالا مشاهده مي شود MATLAB تا جايي که راه داشته باشد عناصر قطر اصلي را يک مي گزارد و ساير عناصر ماتريس برابر صفر خواهند بود.

2 تابع مهم ديگر وجود دارند: rand(n,r) و randn(n,r) که اولي ماتريس n*r با عناصر تصادفي بين صفر و يک توليد مي کند و دومي اعدادي تصادفي که از توزيع نرمال استاندارد پيروي مي کنند را توليد مي کند:

>> rand(3)

ans =

    0.9501    0.4860    0.4565

    0.2311    0.8913    0.0185

    0.6068    0.7621    0.8214

>> randn(3,6)

ans =

   -0.4326    0.2877    1.1892    0.1746   -0.5883    0.1139

   -1.6656   -1.1465   -0.0376   -0.1867    2.1832    1.0668

    0.1253    1.1909    0.3273    0.7258   -0.1364    0.0593

>> 

ادامه بحث را در درس بعدي پي مي گيريم

+ نوشته شده توسط مریم در یکشنبه 24 اردیبهشت1385 و ساعت 11:6 |


Powered By
BLOGFA.COM






Powered by WebGozar