ميز کار در نرم افزار Matlab

هنگامي که شما نرم افزار Matlab را براي اولين بار باز مي کنيد با يک محيط کار که شامل منوهاي مديريت فايل و پروژه است مواجه مي شويد . من سعي کرده ام که در اين مقاله به راحتي و از روي شکل کاربرد تمام اين منو ها را توضيح دهم . به شکل زير توجه کنيد :

 

پنجره فرمان:

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

(مطلب قادر است دنباله ای از دستورات که در فایل ذخیره شده اند را اجرا نماید. این فایل ها را ام فایل می نامیم زیرا باید دارای نوع فایل M، در انتهای نام فایلشان باشند.)

آن ها معمولا به صورت :

 Variable = expression

یا به طور ساده تر:

Expression

 می باشند. عبارات معمولا ترکیبی از عملکردها، توابع و نام متغیرها می باشند. ارزیابی عبارت، ماتریسی (یا نوع دیگری از داده) تولید می کند که در صفحه نمایش نشان داده می شود و یا برای استفاده های بعدی به متغییری تخصیص می یابد. در صورتی که نام متغییر و علامت = حذف گردند، متغییرans  به طور خودکار ایجاد می گردد و نتیجه ارزیابی به آن اختصاص می یابد.

عبارت معمولا با سر خط رفتن، خاتمه می یابد. هر چند عبارت را می توان با سه نقطه (…) و سر خط رفتن، در خط بعد ادامه داد.از طرف دیگر چندین عبارت که با کاما یا سیمی کولن از هم جدا شده اندرا می توان در یک خط قرار داد. اگر آخرین کاراکتر عبارت، (;) باشد نتیجه نمایش نمی یابد ولی تخصیص انجام می گردد. عدم نمایش نتایج میانی نامطلوب، لازم و ضروری می باشد.

 

برای نمایش پنجره فضای کاری (این پنجره از زیر پنجره Launchpad ظاهر می گردد)، جدول بندی فضای کاری را کلیک کنید تا بتوانید فهرستی از متغییرهایی که ایجاد کرده اید را ببینید.

دستور

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

یا دستور

 A = [

۱ ۲ ۳

۴ ۵ ۶

۷ ۸ ۹]

را در پنجره فرمان تایپ کنید هر کدام از این دستورات ماتریسی ۳*۳ ایجاد کرده و آن را به متغییر A اختصاص می دهد.

نکته:Matlab  به کوچک و یا بزرگ بودن حروف حساس می باشد مثل زبان های خانواده C بنابر این دو متغییر a وA  در آن متفاوت می باشند. کاما یا فاصله، عناصر درون سطر ماتریس را متمایز می کند. (گاهی اوقات برای تقسیم عبارات کاما ضروری است زیرا فاصله ابهام ایجاد می کند) سیمی کولن سطر را خاتمه قرار می دهد. هنگام فهرست کردن عددی بشکل نمایی (نظیر۹_e 2.43 ) باید از قرار دادن فضای خالی پرهیز نمایید

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

تا این جا اکثر پنجره های 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 را نشان می دهد که مقدار آن ۱ است. آرایه های با ابعاد بالاتر نیز به طور مشابه اندیس دهی می شوند. ماتریس یا بردار تنها مقادیر صحیح مثبت را به عنوان اندیس می پذیرد.

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

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

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

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

جمع کردن                                             +

تفریق کردن                                            –

ضرب کردن                                             *

توان                                                     ^

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

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

تقسیم چپ                                            \

تقسیم راست                                         /

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

دستورات زیر را امتحان کنید: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 بردار ستونی[۲ ;۱] =x می باشد

ماتریسی =M

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

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

[۱ ۲ ۳ ۴].*[۱ ۲ ۳ ۴]

یا

[۱ ۲ ۳ ۴].^ ۲

 

به [۱ ۴ ۹ ۱۶] منجر خواهد شد. در آینده خواهیم گفت که این ویژگی بویژه هنگام استفاده از گرافیک مفید خواهد بود.

پنجره فضای کاری : Workspace

 

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

نکته: ماتریس۱*۱، اسکالر نامیده می شود.

آرایه ها را می توان به چندین روش متفاوت در Matlab معرفی کرد که در نمونه آن را در درس گذشته (آرایه A,C) را بیان کردیم اما نوع دیگر بیان آرایه در Matlab ، این است که از فایل های داده خارجی و یا برنامه ها بار کرد.

(توجه: help: Matlab: getting started: manipulating matrices را ببینید)

همچنین می توانید خودتان توابعی (ام فایل و یا توابع max درc فرترن و یا جاوا) بنویسید که ماتریسها را ایجاد کرده و دیگر متغییرها بجز متغییرهای داخلی ام فایل در پنجره فضای کاری نمایش می یابند.

دستور who یا (whos) متغیرهای فعلی فضای کاری را لیست می کند. دستور who را تایپ کرده و عملکرد آن را امتحان کنید، بایستی لیستی از متغیرهای شامل a و c همراه اندازه و نوع آنها مشاهده نمایید. برای پاک کردن متغیرها و یا تابع از فضای کاری می توان دستور clear variable name استفاده نمود. و یا همان طور که می دانید آن متغیر مورد نظر را bloke کرده و آن را delete کنید بوسیله انتخاب delete selection

نکته : دستور clear به تنهایی ، تمام متغییرهای غیر پارامتری را پاک می کند.

با دستورات save و load هم که آشنایی کامل دارید و همان طور که می دانید با خارج شدن از m تمام متغیرها از بین می روند پس ناگزیر به save آن قبل از خارج شدن از محیط برنامه هستند که باعث ایجاد فایلی با پسوند .mat می شود. (می توانید از دستورات help save و help loud نیز استفاده کنید).

پنجره سابقه فرامین : Command History

عملگرهای قیاسی

عملگرهای  قیاسی که عبارتند از:

کوچکتر از                                >

بزرگتر از                                               <

کوچکتر مساوی                        =>

بزرگتر مساوی                           =<

مساوی                                      = =

نامساوی                                    ~ =

که همه آنها به صورت درایه ای عمل می کنند.دقت کنید که عملگر (=) assignment  در عبارت های نسبت دهی استفاده می شود در حالی که (= =) عملگر قیاسی است. عملگر های قیاسی را می توان با عملگرهای منطقی and ,or,&,| ترکیب نمود.

همان طور که می دانید وقتی این عملگرها به مقادیر اسکالر اعمال می گردند نتیجه بسته به درست یا غلط بودن ۰ یا ۱ است.۳>5  و  ۵>3و ۳= = ۵ و ۳= =۳ را وارد کرده و نتیجه را ببینید.وقتی عملگرهای منطقی به ماتریس های هم اندازه اعمال شوند نتیجه  ماتریسی از صفرها و یک هاست که مقدار عبارت برای درایه های متناظر را نشان می دهد. همچنین می توان مولفه های ماتریس را با مقداری اسکالر مقایسه نمایید.

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

B = [1 3; 4 2]     A<B

در عبارت های منطقی مقدار غیرصفر به عنوان درستو صفر به عنوان غلط تعبیر می گردد.

عنوان نمونه ~ ۰  ,  ۱ است و ~۳  ,  ۰ است و  ۵ & 4   ,۱ است.

 

اعداد مختلط

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

A= [1  ۲  ;  ۳  ۴ ] + i * [ 5  ۶  ;  ۷   ۸ ]

B= [1+5i; 2+6i; 3+7i; 4+8i]

نکته: قسمت موهومی را می توان هم با i  وهم با j نمایش داد.

با این حال در صورتی که از i و j   به عنوان متغیر استفاده کرده اید و به آنها مقدار نسبت داده اید می توانید واحد موهومی جدیدی  مثلا به صورت   ii=sqrt(1) تولید نمایید.همچنین می توانید از ۱i   و ۱j   استفاده کنید که قابل مقداردهی نمی باشند. بنابر این:

B = [ 1  ۲  ; ۳   ۴ ] +۱i *[ 5  ۶  ;  ۷  ۸ ]

همان ماتریس B   را تولید می کند حتی اگر i  قبلا تخصیص یافته باشد.

 

رشته ها  (string)

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

 

از نماد (:) می توان برای دسترسی به زیرماتریس های یک ماتریس استفاده نمود. برای آزمودن آن ابتدا دستورات

A = rand ( 6 , 6 );

B = rand ( 6 , 4 );

که ماتریس های A 6*6 و B 6*4 را تولید می کند را تایپ کنید.

A (1:4,3) بردار ستونی شامل چهار درایه اول ستون سوم A می باشد.

نماد (:) به تنهایی نشاندهنده کل سطر یا ستون است : A(:,3) ستون سوم و A(1:4,:) چهار سطر اول A می باشند.

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

A (: ; [2 4] ) شامل ستون های دوم و چهارم A  می  باشد . این گونه زیرنویس ها را می توان در هر دو طرف عبارت تخصیص دهی استفاده نمود :

A( : ; [ 2 4 5 ] ) = B ( : ; 1 : 3 )

 

ستون های ۲ و ۴ و ۵ را با ستون اول ماتریس B جایگزین می کند. ستون دوم و جهارم ماتریس A را می توان د رماتریس ۲*۲ ی [۱ ۲ ; ۳ ۴ ] ضرب نمود :

A ( : ; [2 4 ] ) = A ( : ; [2 ; 4] ) * [1 2 ; 3 4 ]

 

زیر ماتریس روش بسیار ساده ای برای انجام  بسیاری از محاسبات است مثلا چرخش Givens سطرهای سوم و پنجم ماتریس برای صفر کردن درایه A ( 3 , 1 ) را می توان به صورت زیر نوشت (با فرض غیر صفر بودن norm([a  b]) :

 a = A ( 5 , 1 );

b = B ( 3 , 1 );

G = [ a b ; -b a ] / norm([a  b])

A ( [5 3] , : ) = G * A( [ 5 3] , : )

همچنین می توانید به تمام درایه های یک زیر ماتریس، مقداری اسکالر تخصیص دهید.

A ( : ; [2 4] ) = 99

برای حذف کردن سطر و ستون های یک ماتریس می توانید به آن ها ماتریس تهی نسبت دهید:

A ( : ; [2 4] ) = []

در یک ماتریس،  end اندیس آخرین مولفه است.

x = rand (1 , 5);

x = x (end :-1 : 1 );

توابع MATLAB :

 

یکی ا زمهمترین قسمت های هر زبان برنامه نویس استفاده از توابع آن است. تا کنون با برخی از این توابع نظیر  zeros, rand, inv آشنا شدید. با ما در سری بعدی آموزش مطلب همراه باشید تا به طور مفصل به آن بپردازیم.

 

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

 ماتریس همانی eye
ماتریس صفرها zeros
ماتریس یک ها ones
ایجاد ماتریس های قطری یا استخراج قطرها diag
بخش بالا مثلثی ماتریس triu
بخش پایین مثلثی ماتریس tril
ایجاد ماتریس تصادفی rand
ماتریس Hilbert hild
ماتریس مربع جادویی magic
ماتریس Toeplitz toeplitz

 

دستور rand(n) ماتریس n * n تصادفی ایجاد می کند که درارایه های آن به صورت تصادفی ایجاد شده اند.

این درایه ها به صورت بی نظم بین صفر و یک توزیع شده اند در حالی که rand ( n , m ) ماتریسی m * n  ایجاد می کند ( البته n  و  m  نشانگر اعداد مثبت می باشند) امتحان کنید.

A = rand ( 3 );

Rand (‘start’, 0) تولید کننده اعداد تصادفی را reset می کند.

Zeros (m, n) ماتریسی m * n  از صفر ها و zeros(n) ماتریسی n * n از صفر ها را تولید می کند. اگر A یک ماتریس باشد، دستورzeros ( size(A)) ماترسی صفری با ابعاد A تولید می نماید. اگر x یک بردار باشد diag(x) ماتریسی است که x قطر آن را تشکیل می دهد و اگر A یک ملتریس باشد ، diag(A) برداری شامل قطرA می باشد.

مثال :

x = 1 : 3

diag(x)

diag(a)

diag(size(A))

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

 

B = [ A, (zeros ( 3,2)) ; ( pi * ones (2,3)) , (eye (2) ) ]

 

همان طور ک ه گفته شد magic(n) ماتریسی n*n ایجاد می کند که مربع جادویی نامیده می شود (سطرها، ستون ها و قطر ها دارای مجموعه یکسانی می باشند ). Hilb(n) یک ماتریس Hilbert و n * n ایجاد می کند ؛ ماتریس Hilbert یکی از انواع ماتریس های ناموزون (ill-conditioned)است . ماتریس ها را به کمک حلقه for نیز می توان ایجاد کرد .

 

Triu  و tril   به ترتیب بخش بالا مثلثی و پایین مثلثی را استخراج می کنند.

triu (a)

triu ( a) == a

اجرا شده دستورات را در ادامه مطلب خواهید دید.

توابع اسکالر :

 

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

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

 

abs           ceil           log            eye

acos         cos               log10           sin

asin          exp           rem          sqrt

atan         floor         round                tan

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

x = ( 0 : 0.1 : 2 )’

y = sin ( x )

[ x , y ]

توابع بردار :

 

دیگر توابع Matlab، لزوما بر روی بردار (سطری یا ستونی ) عمل می کنند و در صورتی که به یک ماتریس m*n ( m > 2 ) اعمال شوند، به صورت ستون به ستون عمل کرده و برداری سطری را ایجاد می کنند که هر درایه آن حاصل اعمال سطر به سطر تابع می توان از ترانهاده ( مثلا mean (A’)’ ) استفاده کرد یا این که سطر مورد نظر را مشخص کرد ( مثلا mean (A , 2 ) ) چند نمونه از این توابع عبارتند از :

max          sum          median             any           std

sort          mean                min           prob         all

 

بزرگترین دارایه ماتریس A با دستور max ( max (A) ) حاصل می شود نه max ( A ) .

 

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

 

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

 

 

مقادیر ویژه و بردارهای ویژه eig
فاکتورگیری ( تجزیه به عوامل ) به روش cholesky chol
تجزیه مقدار منفرد(single value decomposition) svd
معکوس inv
فاکترگیری LU lu
فاکتور گیری QR qr
فرم hessenberg hess
تجزیه schur schur
صورت پلکانی یا سطر کاهش یافته rref
                تابع نمایی ماتریسی expm
جذر ماتریسی sqrtm
چند جمله ای ploy
دترمینان det
اندازه آرایه size
طول بردار length
رتبه rank
ضرب تانسوری Kronecker kron
پیدا کردن اندیس درایه های غیر صفر find

 

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

Y = eig ( A )

 

بردار ستونی شامل مقادیر ویژه A تولید می کند در حالی که

[ U , D ] = eig( A )

 

منجر به ایجاد ماتریس های U و D می شود ؛ U  ماتریسی است که ستونی های آن بردار ویژه A است و D ماتریسی است قطری که مقادیر ویژه A قطر آن را تشکیل می دهند.

 

 

منابع:

http://computerunion.blogfa.com/cat-26.aspx

http://www.prdev.com/search/allsearch.asp?pcount=40

 

لطفاً براي ارسال دیدگاه، ابتدا وارد حساب كاربري خود بشويد