ماتریس های خاص در متلب
بهنام خدا، سلام… جلسه ششم آموزش متلب رایگان را آغاز میکنیم. در این جلسه میخواهیم انواع ماتریس های خاص در متلب مانند ماتریس همانی در متلب ، ماتریس صفر در متلب و ماتریس واحد در متلب را به شما بیاموزیم. همچنین دستور inf در متلب و دستور NAN در متلب را معرفی میکنیم. مطالب این جلسه بسیار مهم هستند. با هوسم همراه باشید…
مقدمهای بر ماتریس های خاص در متلب
جلسه قبل، نحوه تعریف آرایه در متلب با اندازههای مختلف را آموختیم. اما، مشکل اینجاست که تعریف آرایه بهصورت جلسه قبل (یعنی وارد کردن دستی اعداد) برای آرایههای کوچک مناسب هست. فرض کنید، بخواهیم یک ماتریس 100×100 بسازیم. دراینصورت باید 10 هزار عدد بهصورت دستی وارد کنیم! در این جلسه میخواهیم روشهایی را به شما معرفی کنیم تا راحتتر در متلب آرایه بسازید. MATLAB شامل توابع بسیاری است که به شما کمک میکند ماتریس های مختلفی مانند ماتریس تصادفی ، ماتریس واحد ، ماتریس صفر ، ماتریس همانی و غیره ایجاد کنید. با هوسم همراه باشید…
دستور zeros در متلب
اولین دستور از ماتریس های خاص در متلب به ماتریس صفر اختصاص دارد. دستور zeros در متلب ، ماتریسی تولید میکند که تمامی درایههای آن صفر است. همانطور که میدانید، واژه zeros به معنای صفرها است. خیلی ساده، با دستور zeros در متلب یک ماتریس صفر میتوانیم تولید کنیم. اما چطور از دستور zeros در متلب استفاده کنیم؟
شما باید به عنوان ورودی به این دستور، اندازه ماتریس مورد نظرتان را بدهید. برای این کار، جلوی عبارت zeros یک پرانتز باز کنید. اولین عددی که بعد از پرانتز وارد میکنید، برای متلب مشخص میکند که ماتریس چند سطر دارد. سپس کاما بگذارید و عدد دوم را وارد کنید. عدد دوم مشخص میکند که ماتریس چند ستون دارد. مثلا در دستور زیر یک ماتریس صفر با 3 سطر و 2 ستون ساخته شده است:
>> zeros(3, 2)
ans =
0 0 0 0 0 0
با دستور zeros در متلب، آرایههای سهبُعدی و بالاتر نیز میتوان ساخت. فعلا تا همین حد کافی است که بدانید این کار امکانپذیر است. شما هنوز اول راه هستید. نیازی نیست الان خودتان را درگیر ماتریس با بُعدهای بالاتر کنید.
تعریف بردار صفر در متلب
آیا میتوان با دستور zeros در متلب، یک بردار صفر تعریف کرد؟ مثلا اگر بخواهید یک بردار ستونی با 3 عنصر صفر تعریف کنید چه میکنید؟ آیا مینویسید zeros(3)؟ البته که نه. شما برای تعریف ماتریس ذکر شده قطعا مینویسید zeros(3, 1). زیرا شما قبلا یاد گرفتید که یک ماتریس ستونی با 3 عنصر، 3 سطر و یک ستون دارد. پس دقت کنید، فرقی ندارد بخواهید یک ماتریس تعریف کنید یا بردار. در هر صورت باید حتما هم سطر و هم ستون را مشخص کنید. مثلا برای یک بردار صفرِ سطری، به طول 5 باید بنویسید:
>> zeros(1, 5)
ans = 0 0 0 0 0
یادتان نرود، عدد اول داخل پرانتز معادل تعداد سطرها و عدد دوم معادل تعداد ستونهاست.
نکته یادتان باشد، در متلب همواره سطر مقدم بر ستون است. اول سطر بعدا ستون…
تعریف ماتریس صفر مربعی در متلب
خب حالا اگر یک ورودی به zeros بدهیم، مثلا بنویسیم zeros(3) چه میشود؟ با خطا مواجه میشویم؟ بیایید امتحان کنیم:
>> zeros(2)
ans =
0 0 0 0
مشاهده میکنید که نتیجه اجرای دستور بالا، یک ماتریس مربعی است که 2 سطر و 2 ستون دارد! یعنی zeros(2) و zeros(2, 2) نتیجه یکسانی باید داشته باشند. یعنی:
>> zeros(2)
ans = 0 0 0 0
>> zeros(2, 2)
ans = 0 0 0 0
پس متلب عزیز کار را برایمان راحت کرده است. برای تعریف یک ماتریس مربعی در متلب لازم نیست دو بار یک عدد را تکرار کنیم. کافی است یک بار آن را بنویسیم. بههمین خاطر است که نمیتوان از یک ورودی برای تعریف بردارها استفاده کرد. زیرا دستور zeros اگر یک ورودی بگیرد با آن یک ماتریس مربعی میسازد و لاغیر!
یادآوری ماتریس مربعی، ماتریسی است که تعداد سطر و ستون آن برابر باشد.
>> x = zeros(6, 3)
x = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
ترفند برای اینکه کدهای ما خوانایی بهتری داشته باشند، در نوشتن ورودی دستور zeros در متلب و دستورات مشابه، سبک خاصی وجود دارد. معمولا برای بهتر خوانده شدن دستورات، بعد از کاما یک فاصله گذاشته میشود. مثلا به جای نوشتن zeros(1,3) مینویسیم zeros(1, 3).
کاربرد ماتریس صفر در متلب
شاید برایتان سوال ایجاد شود که ماتریس صفر در متلب به چه دردمان میخورد؟ فرض کنید یک ماتریس خیلی بزرگ داریم مثلا 10 در 10. این ماتریس 100 عنصر در خود دارد، درست است؟ این ماتریس از 100 عنصر تنها 5 عنصر غیر صفر دارد و بقیه عناصر صفر هستند. در چنین مواقعی بهتر است ابتدا یک ماتریسِ صفر به ابعاد 10 در 10 تعریف کنیم، سپس عناصر غیرصفر را تغییر دهیم. چگونگی تغییر مقدار درایه ها در متلب را در جلسات آینده یاد میگیرید. این یکی از کاربردهاست.
کاربرد دیگر زمانی است که متغیری داخل یک حلقه داریم و هر بار عددی به آن اضافه میشود. در این صورت ابتدا یک ماتریس صفر با ابعاد مشخص تعریف شده و سپس آن ماتریس داخل حلقه قرار گرفته و پر میشود. این کار باعث افزایش سرعت اجرای کد میشود. شما با مفاهیم جایگزینی و حلقه هنوز آشنا نیستید. بنابراین اگر کاربرد zeros را درک نکردید نگران نباشید! در جلسات آینده با جایگزینی و حلقه آشنا خواهید شد. در پروژههای پایانی این دوره، شما به صورت عملی این کاربردها را لمس خواهید کرد. پس جلسات بعدی را از دست ندهید!
خب اولین بخش از جلسه ماتریس های خاص در متلب تمام شد. برویم سراغ دستور بعدی…
دستور ones در متلب
واژه ones به معنای یکها است. با استفاده از دستور ones در متلب میتوانید ماتریسی بسازید که تمامی عناصر آن یک است. پس ماتریس ones یا ماتریس واحد در متلب دومین دستور از ماتریس های خاص در متلب است. ورودیهای دستور ones مشابه تابع zeros است. یعنی ورودی دستور ones در متلب نیز ابعاد ماتریس موردنظرمان است. مشابه با zeros، جلوی عبارت ones یک پرانتز باز کنید. اولین عددی که بعد از پرانتز وارد میکنید، تعداد سطرهاست. سپس کاما بگذارید و عدد دوم را وارد کنید. عدد دوم تعداد ستونها را نشان میدهد. برای مثال برای تعریف یک ماتریس 3 در 2 با درایههای یک، باید بنویسیم:
>> ones(3, 2)
ans =
1 1
1 1
1 1
برای تعریف ماتریس مربعی ، همانند zeros ، میتوانیم یک ورودی به دستور ones در متلب بدهیم. یعنی برای تعریف ماتریسی 5 در 5 با درایههای یک، کافی است بنویسیم:
>> ones(5)
ans = 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
مشابه zeros، دستورهای ones(5) و ones(5, 5) نتایج مشابهی دارند (خودتان این مسئله را بررسی کنید.). از ones برای تولید آرایههایی با سه بُعد یا بالاتر نیز استفاده میشود که فعلا آنها را بررسی نمیکنیم.
>> x = zeros(7, 1)
x = 0 0 0 0 0 0 0
نحوه ایجاد ماتریس واحد در متلب خیلی به نحوه ایجاد ماتریس صفر در متلب شبیه بود. دستور بعدی هم همینطور است. توضیحات کمتری دادهایم چون تکراری است…
دستور eye در متلب
ماتریس همانی در متلب یکی دیگر از ماتریس های خاص است. دستور eye در متلب برای تعریف ماتریس همانی یا identity matrix استفاده میشود. ماتریس همانی، ماتریسی مربعی است که عناصر روی قطر اصلی آن یک و بقیه عناصر آن صفر هستند. همانطور که میدانید، هر ماتریسی در ماتریس همانی ضرب شود، نتیجه خود آن ماتریس است. به همین دلیل به آن ماتریس همانی گفته میشود. برای ایجاد چنین ماتریسی در متلب میتوان از دستور eye استفاده کرد. مثلا برای تعریف یک ماتریس همانی 3 در 3 مینویسیم:
>> eye(3)
ans =
1 0 0
0 1 0
0 0 1
ماتریس همانی در متلب یک ماتریس مربعی است. اما در متلب با دستور eye میتوان ماتریسهای غیرمربعی هم تعریف کرد که عناصر روی قطر اصلی آنها صفر باشد. در این صورت ماتریس خروجی دیگر همانی نیست. به هرحال متلب امکان تعریف چنین ماتریسی را نیز دارد. به عنوان مثال اگر بخواهیم یک ماتریس 3 در 2 تعریف کنیم که عناصر روی قطر اصلی آن صفر باشند، باید بنویسیم:
>> eye(3, 2)
ans =
1 0
0 1
0 0
همانطور که مشاهده میکنید در ماتریس خروجی، عناصر روی قطر اصلی (تا جایی که وجود دارند) یک و بقیه عناصر صفر هستند.
ترفند شاید برایتان جالب باشد که بدانید دستور eye در صورتی که ورودی نداشته باشد، عدد یک را برمیگرداند:
>> eye
ans = 1
دستور inf در متلب
در جلسه ترفندهای متلب با inf آشنا شدیم. ما از inf برای تعریف یک متغیر استفاده کردیم. در این جلسه میخواهیم با inf ماتریسی بسازیم که تمامی عناصر آن inf است. برای این کار کافی است همانند دستورهای قبل به آن ورودی بدهیم. یعنی جلوی inf پرانتز باز کنیم. ابتدا تعداد سطر را وارد کنیم و بعد کاما بگذاریم. سپس تعداد ستون را وارد کنیم و پرانتز را ببندیم. فرض کنید بخواهیم یک ماتریس 2 در 3 تعریف کنیم که تمامی درایههای آن inf باشند. در این صورت باید بنویسیم:
>> inf(2, 3)
ans = Inf Inf Inf Inf Inf Inf
برای تعریف ماتریس مربعی با inf باید مثل دستورهای قبل عمل کنیم. یعنی فقط یک عدد را در ورودی بنویسیم. که آن عدد تعداد سطر یا ستون ماتریس مورد نظر ما است. مثلا برای تعریف یک ماتریس مربعی 2 در 2 که تمامی عناصر آن inf هستند باید بنویسیم:
>> inf(2)
ans = Inf Inf Inf Inf
دستور nan در متلب
با دستور nan در متلب نیز در جلسه ترفندهای متلب آشنا شدیم. در این جلسه میخواهیم با دستور nan، ماتریسی بسازیم که تمام عناصر آن nan هستند. باتوجه به توضیحات این جلسه، احتمالا دستتان آمده که چگونه باید این کار انجام شود. برای این کار دقیقا مشابه دستور inf عمل میکنیم. برای تعریف یک ماتریس 4 در 2 که تمامی عناصر آن nan هستند باید بنویسیم:
>> nan(4, 2)
ans = NaN NaN NaN NaN NaN NaN NaN NaN
دستور nan نیز همانند دستورهای قبلی، اگر یک ورودی بگیرد، یک ماتریس مربعی برمیگرداند. مثلا برای داشتن یک ماتریس 2 در 2 که تمام عناصر آن nan هستند باید بنویسیم:
>> nan(2)
ans = NaN NaN NaN NaN
اما کاربرد nan کجاست؟ در بعضی از دادههای عددی عبارت nan دیده میشود. مثلا فرض کنید دادهای دارید که میزان بارندگیِ ماهیانه تهران در سال 98 را در خود دارد. ولی در آن مثلا برای ماه شهریور عبارت nan وجود دارد. این یعنی میزان بارندگی در شهریور به هر علتی ثبت نشده است. این اتفاق متداولی است. پس در آینده هرجا در دادهای به عبارت nan برخورد کردید، بدانید اطلاعات در آن موردِ بهخصوص وجود ندارد یا ثبت نشده است. به طور کلی در ساختن دادههای عددی رایج است که ابتدا یک ماتریس nan تعریف شود و سپس مقادیر متناظر در آن ریخته شود.
خلاصه جلسه ماتریس های خاص در متلب
آنچه که در این جلسه آموختیم را در قالبی شبیه به یک پرسش و پاسخ برای شما آوردهایم. ابتدا به هر سوال جواب دهید و بعد جواب را ببینید. انصافا تنبلی نکنید… 😊
دریافت PDF جلسه ماتریس های خاص در متلب
برای دریافت pdf این جلسه، لطفا ایمیل خود را در باکس زیر وارد کرده و روی دکمه «دریافت pdf» کلیک کنید.
منابع آموزش متلب
در فهرست زیر، تعدادی از منابع خوب آموزش متلب را معرفی کردهایم. ضرورتی وجود ندارد که اینها را نگاه کنید. چون ما برای آموزش متلب، این منابع را مطالعه و استفاده کردهایم.
خب جلسه پنجم هم به پابان رسید. چطور بود؟ در این جلسه نحوه تعریف ماتریس های خاص در متلب را بررسی کردیم. با دستورهای zeros در متلب ، ones در متلب و eye در متلب آشنا شدیم. و نحوه ورودی دادن به هرکدام از دستورها را بیان کردیم. همچنین نحوه تعریف ماتریس با عناصر nan و inf را نیز یاد گرفتیم. امیدوارم این آموزش مورد توجه شما قرار گرفته باشد. جلسات بعدی هوسم را از دست ندهید…
مطالب زیر را حتما مطالعه کنید
تعریف متغیر در متلب
آموزش متلب رایگان
دستور max در متلب
دستور محاسبه انتگرال در متلب
دستور input در متلب
دستور ezplot در متلب
9 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
عالی لذت بردم… خدا قوت
خیلی ممنون به خاطر آموزش خوبتون
باسلام
جواب تمرین 2 رو اصلاح بفرمایید
سلام لطفا جواب تمرین دستور nan اصلاح فرمایید.
سلام واقعا کارتون خیلی خوبه
سلام
خوشحالیم که راضی هستید 😊🌹🙏
خیلی خوبه ، ممنون از زحمتتاتون
فقط چرا جواب اکثر تمرینا صحیح نیست؟
سلام
سپاس 🌹
در اسرع وقت جواب همه تمرینها رو چک میکنیم. ممنون که اطلاع دادید.
نه درسته ک