آموزش Matlab قسمت ششم

--- 1395/1/12 2112

آموزش Matlab قسمت ششم

به نام خدا

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

در ابتدا قصد دارم در رابطه با توابع زمانی و تایمر در برنامه صحبت کنم..در ادامه هم در مورد چند جمله ای ها و فایل های تابعی صحبت میکنم..

توابع زمانی:

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

Tic    

شروع تایمر 

Toc

نشان دهنده ی زمان تایمر

Clock

روز و ساعت

etime(t1,t2)

فاصله بین t1 ,t2

Cputime 

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

Date تاریخ
Calendar تقویم ماه جاری
Calendar(yyyy,mm)  تقویم سال و ماه معین

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

» tic
» toc
Elapsed time is 3.513011 seconds.
»

برای نمایش تاریخ،روز  و ساعت به طور دقیق، از دستور clockبه همراه دستورfix استفاده میکنیم:

fix(clock)
ans =
  Columns 1 through 5
        2015          12          14           8          44
  Column 6

          40
»
» date
ans =
14-Dec-2015
»

تعریف یک چند جمله ای در MATLABkhabaret mikona

برای تعریف یک چند جمله ای در MATLABاز بردار سطری استفاده میکنیم .

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

  یک چند جمله ای در متلب توسط ماتریس ضرایبش مشخص می شود.مثلا چند جمله ای y=x^5+4*x^3+2 در متلب به صورت

[1 0 4 0 0 1]

مشخص میشود .

 

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

» p=[1 2 3 0 -5]
p =
     1     2     3     0    -5
» roots(p)
ans =
  -0.7202 + 1.7518i
  -0.7202 - 1.7518i
  -1.4930 + 0.0000i
   0.9335 + 0.0000i
»

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

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

» r=[1 ; -1];
p=poly(r)
p =
     1     0    -1
»

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

ضرب چند جمله ای ها:

به منظور ضرب دو چند جمله ای میتوان از conv استفاده کرد

a= [1 2 3 4]; b= [1 4 9 16];
c= conv(a , b)
c =
     1     6    20    50    75    84    64
»

جمع و تفریق چند جمله ای ها:

برای اینکه دو بردار را با یکدیگر جمع یا تفریق کنیم..باید آن دو بردار هم طول باشند.لذا در صورت لزوم باید ضرایبی که تنها در یکی از چند جمله ای ها وجود دارد را در چند جمله ای دیگر برابر 0قرار داد تا دو چند جمله ای هم طول شوند.

» p1= [4 5 3 2];
» p2= [0 5 2 0];
» p=p1+p2
p =
     4    10     5     2
»

تقسیم چند جمله ای ها:

 با استفاده از تابع deconvمیتوان چند جمله ای ها را بر هم تقسیم کرد .این تابع دو آرگومان خروجی میگیرد.اولی خارج قسمت و دومی باقیمانده

» a=[ 1 2 3 4 5 6];
b=[ 2 3 4];
» [q , r] = deconv( a , b)
q =
    0.5000    0.2500    0.1250    1.3125

r =
         0         0         0         0    0.5625    0.7500
»

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

» a = [1 6 20 48 69 72 44]
f= polyder(a)
a =
     1     6    20    48    69    72    44
f =
     6    30    80   144   138    72
»

برای محاسبه مقادیر یک چند جمله ای در یک یا چند نقطه از تابع polyvalمیتوان استفاده کرد.

» p= [1 4 -7 -10]
x=linspace(-1,3,100);
y=polyval(p , x);
plot(x , y);
p =
     1     4    -7   -10

حل دستگاه معادلات خطی:

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

مثال: دستگاه معادلات زیر را حل کنید:

آموزش Matlab

» b=[366 ; 804 ; 351];
» a=[1 2 3 
4 5 6
7 8 0];
» x= a  b
x =

   25.0000
   22.0000
   99.0000

در ادامه با  توابع آشنا میشویم:

مزایای استفاده از توابع به جای فایلهای اسکیپت:

سرعت بالاتر

صرفه جویی در حافظه کامپیوتر

تصحیح و خطایابی آسانتر

بهبود قابلیت جابه جایی

 و ...

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

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

 

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

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

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

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

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

توابع از طریق آرگومان های خود با محیط خارج در ارتباط هستند.

ساختار یک M فایل تابعی:اولین خط در این نوع فایل ،خط تعریف تابع نام دارد که این خط، تابع و دسته آرگومان های ورودی و خروجی را تعریف میکند .

function[argout1,argout2,...] =funcname(argin1,argin2)

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

.

.

.بدنه ی تابع

.

.

.

 

argout

 همان متغیر های خروجی ما هستند.

argin

همان متغیرهای ورودی ما هستند.

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

نکاتی که باید به آن توجه کنید:

تابع ممکن است هیچ آرگومان ورودی یا خروجی نداشته باشد.

باید دقت شود که نام تابع با نام Mفایل ذخیره شده  یکسان باشد.

در یک Mفایل میتوان چندین تابع تعریف کرد.این توابع میتوانند یکدیگر را فراخوانی کنند.اما تنها نخستین تابع از خارج از این فایل قابل فراخوانی است.

در صورت وجود چندین تابع در یک M فایل ،باید نام فایل با نام نخستین تابع  یکسان باشد.

اولین سطر بعد از اعلان تابع ،یک جمله توضیحی است که هنگام استفاده از دستورlookforدر متلب مورد جستجو قرار میگیرد.

تمامی سطرهای توضیحی تا نخستین سطر غیر توضیحی در هنگام استفاده از دستور help نمایش داده میشوند.

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

خب فکر کنم برای این جلسه کافی باشه..

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

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

قسمت قبلی