برای تعریف ماتریس در متلب از [] استفاده می شود و برای تعریف یک سطر از ” , ”و برای رفتن به سطر بعد از” ; ” استفاده میشود. به عنوان مثال اگر بخواهیم یک ماتریس مانند [۱,۲,۵,۹,۸]=a تعریف کنیم صرفا کافیست مثل همین تایپک را در command window استفاده نماییم. البته متلب به جای ” , ” کلید space را نیز تعریف نموده است لذا شما می توانید به صورت زیر ماتریس a را تعریف نمایید [۸ ۹ ۵ ۲ ۱]=a شکل زیر نشانگر این موضوعات می باشد.
شکل زیر نیز تعریف یک ماتریس حاوی بیش از یک سطر را نشان میدهد به عنوان مثال ماتریس:
برای تعریف چنین ماتریسی کافیست [a=[1 2 3;4 5 6;7 8 9 را در قسمت command window تایپ نمایید.” ; ” برای جدا کردن سطرها از هم می باشد که در زیر نشان داده شده است:
خوشبختانه متلب نسبت به زبان برنامه نویسی c به فاصله بین حروف و … حساس نیست، لذا فاصله ی اضافی مشکل زا نمی باشد.
بعد از تعریف ماتریس a به صورت بالا،اگر به قسمت workspace هم نگاه کنید شکل زیر را خواهید دید که نشان از تعریف به صورت ماتریسی a در حافظه متلب می باشد.
برای تعریف ماتریس ها می توان از ” : “نیز استفاده نمود بدین صورت که اگر ماتریس مورد نظر ترتیب و رند خاصی دارد به عنوان مثال سطر اول حاوی اعداد ۲، ۴، ۶، ۸، ۱۰ است یعنی از ۲ شروع و تا عدد ۱۰ مقدار دو تا دو تا افزایش یافته است می توانید از دستور زیر برای تعریف سطر اول استفاده نمایید [۲:۲:۱۰] که عدد اول شروع سطر ، عدد وسطی مقدار فاصله و عدد آخر انتهای ماتریس را نشان می دهد. شکل زیر نشان گر مثالی از این نوع تعریف ماتریس می باشد.
برخی توابع ماتریسی نیز وجود دارند که کاربرد فراوانی دارندکه در ادامه به آنها نیز پرداخته می شود و صرفا در این قسمت به تعریف آن ها می پردازیم. ماتریسی به نام zeros که البته نمی توان ماتریس نامید بلکه یک تابع ماتریسی است و خروجی های صفر را برای داده های ماتریس نمایش می دهد. به عنوان مثال می خواهید یک ماتریس ۱۰*۱۰ صفر داشته باشید، به جای اینکه ۱۰۰ درایه ماتریس را یکی یکی بنویسید، کافی است از دستور زیر استفاده نمایید (zeros(10,10 . خروجی این دستور در شکل زیر ارائه شده است.
این تابع در تعریف مکان اولیه برای متغیرهای برنامه خیلی کارآیی دارد و منجر به کاهش زمان اجرای برنامه خواهد شد که در ادامه به آن ها پرداخته خواهد شد. یکی دیگر از این ماتریس ها که کاربرد بیش تری در برنامه نویسی متلب دارند مربوط به تابع ماتریسی ones یا همان ماتریس واحد است که همه ی درایه های آن ۱ می باشند به عنوان مثال می خواهید یک ماتریس ۱۰*۱۰ با درایه های یک تولید کنید، کافیست از دستور زیر استفاده نمایید (ones(10,10 شکل زیر نتیجه ی این تابع خواهد بود.
اعمال ضرب و تفریق در متلب برای ماتریسها نیز همانند عمل ضرب و تقسیم بین دو عدد اسکالر می باشد، ولی در این میان باید توجه شود که سطر و ستون دو ماتریس با هم برابر باشند در غیر اینصورت خطا ایجاد خواهد شد که شکل زیر نیز نمایانگر این موضوع است.
همانطور که می بینید در برنامه خطا ایجاد شده است و خطا مربوط به برابر نبودن سطر و ستون ماتریس ها می باشد. لذا در جمع و تفریق ماتریس ها در متلب باید توجه ویژه ای به سطر و ستون نمود.
مثال: فرض کنید ماتریس در متلب به صورت [a=[2:2:6;3:4:11;1:2:5 تعریف نموده اید و می خواهید درایه های ستون ها را در هم ضرب و در یک ماتریس دیگر تعریف نمایید. برای این موضوع می توانید از تابع prod استفاده نمایید. این تابع درایه های ستون ها را در هم ضرب و در یک ماتریس سطری دیگر ذخیره می کند. اعمال این روش در شکل زیر مشاهده می شود.
اگر بخواهیم این موضوع بر روی سطرهای ماتریس انجام بگیرد کافی است از دستور زیر استفاده نماییم (prod(a,2 این منجر به ضرب سطری ماتریس شده و نتیجه را در یک ماتریس ستونی قرار می دهد در واقع بر عکس حالت قبل عمل می کند مثال زیر راببینید.
حال اگر بخواهیم همین ماتریس حاصل را به صورت سطری بنویسیم باید از پرایم ” ‘ “استفاده کنیم که این مورد نیز در زیر ارائه شده است.
پس یادمان باشد هر موقع یک ماتریس سطری داشتیم می توانیم از طریق دستور ” ‘ ” بدیل به ستونی کنیم و بالعکس (ترانهاده ماتریس).
برای ضرب ماتریس ها بر هم به صورت درایه به درایه از دات ” . ” استفاده می شود. یعنی اگر بخواهید دو ماتریس را درایه به درایه به هم ضرب نمایید، می توانید از دستور ” *. ” استفاده کنید که در شکل زیر مثالی از این استفاده را می توان مشاهده نمود.
همان طور که مشاهده می شود درایه ها به هم ضرب شده اند. این مدل ضرب با ضرب ریاضی تفاوت دارد. در اینجا درایه ۱*۱ از a با درایه ۱*۱ از b به هم ضرب و در ماتریس پاسخ یعنی ans قرار داده شده است.
برای تقسیم نیز مثل ضرب عمل می شود البته این تقسیم نیز سطر به سطر صورت می گیرد. مثالی برای این مورد نیز با ماتریس های a و b را مشاهده می کنید
یک تابع دیگری در متلب وجود دارد به نام dot که با این تابع میتوان حاصل جمع، حاصلضرب درایه های متناظر دو ماتریس را محاسبه نمود. به عنوان مثال:
[A=[5 8 9
[B=[3 8 4
حال اگر بخواهیم پاسخ (C=A(1)*B(1)+A(2)*B(2)+A(3)*B(3 را محاسبه نماییم فقط کافیست بنویسیم (C=dot(A,B که نتیجه ی این عمل نیز در شکل زیر اورده شده است:
همین مسئله را می توان برای ماتریس های حاوی اعداد مختلط نیز انجام داد که مثال زیر کاربرد این موضوع را نشان میدهد
مسئله ی دیگر برای ماتریس ها، ضرب دو ماتریس به هم است که به صورت ضرب طبیعی از آن استفاده می شود. یعنی کافیست از ” * ” استفاده نمایید، اما دقت کنید که ضرب دو ماتریس زمانی صورت می گیرد که تعداد ستون های ماتریس اول با تعداد سطرهای ماتریس دوم برابر باشد در غیر اینصورت برنامه خطا نشان خواهد داد. مثال اگر بخواهیم ماتریس [a=[4 5 6;7 8 9;1 2 3 را با ماتریس [b=[1 2 3;4 5 6;7 8 9 ضرب کنیم که شکل زیر نشان دهنده ی این موضوع است.
یکی دیگر از نکات موجود در ماتریس ها تکرار کنار هم ماتریس است. به عنوان مثال فرض کنید یک ماتریس را بخواهید کنار هم بنویسید یا دو بار کنار هم و دو بار زیر هم؛ برای انجام چنین کاری در متلب کافیست اسم ماتریس را در سطر و ستون وارد نمایید. به عنوان مثال اگر ماتریس a را تعریف نموده اید و می خواهید این ماتریس دو بار کنار هم و سه بار زیر هم نوشته شود کافی است دستوری مثل زیر را وارد نمایید [b=[a a;a a;a a یعنی دو تا کنار هم و سه تا زیر هم. نتیجه این مورد را هم در شکل زیر مشاهده می کنید.
حال سوال اینجاست؟؟ اگر بخواهید یک ماتریس را ۲۰ بار کنار هم و ۱۰ بار زیر هم بنویسید چه کار می کنید؟ نوشتن ۲۰ بار کنار هم و ۱۰ بار زیر هم یک ماتریس با روش بالا کار سختی است به همین دلیل متلب تابعی تحت عنوان repmat تغریف کرده است که کافیست بعد از تعریف ماتریس از این تابع استفاده نمایید. طریقه استفاده از این تابع بدین صورت است که ابتدا repmat( نوشته سپس اسم ماتریس، بعدا چند بار کنار هم و در نهایت چند بار زیر هم را قید می کنید. جواب سوال چنین می شود (repmat(a,20,10 نتیجه را در شکل زیر مشاهده می کنید.
ملاحظه می کنید در این شکل توانستیم ماتریس را به تعداد دلخواه کپی کنیم البته شکل کامل را نذاشتیم و اگر شما همین دستور را تایپ نمایید به طور کامل مشاهده خواهید نمود.
به زودی فایل ویدیویی آموزشی رایگان متلب در سایت منتشر می شود.
سلام چطوری میتونم یه ماتریس سه در سه را روی قطر اصلی یک ماتریس صفر قرار بدم
در واقع یک ماتریس صفر نه در نه که یک ماتریس سه در سه روی قطر اصلی آن قرار داره
میتونید خودتون در این مورد ابتکار به خرج بدید
اما یک راه ساده اینه که همون ماتریس zeros رو بسازید بعد درایه های مد نظر رو 1 کنید.
باتشکر