ایجاد ماتریس های خاص در متلب
در این قسمت از آموزش های متلب قصد داریم نحوه ایجاد بعضی از ماتریس های خاص را در متلب شرح دهیم. با ما همراه باشید.
ایجاد ماتریس همانی در متلب با دستور eye
همانطور که می دانید، ماتریس همانی یک ماتریس مربعی است (تعداد ستون ها و ردیف های آن برابر است.) که همه درایه های روی قطر اصلی آن برابر عدد 1 است و سایر درایه های آن صفر است. هر ماتریس دلخواه A که در ماتریس همانی ضرب شود، حاصل ضرب برابر همان ماتریس A خواهد بود.
برای تعریف تابع همانی در متلب، از تابع eye استفاده می کنیم. ورودی این تابع یک عدد است که تعداد سطر و ستون های این ماتریس را مشخص می کند.
البته حالت دیگری هم وجود دارد که دو ورودی به تابع eye در متلب داده شود. در این حالت، ورودی ها به ترتیب تعداد سطر و ستون ماتریس را مشخص می کند. البته در اینجا ماتریس به دست آمده از لحاظ علمی ماتریس همانی نخواهد بود. هر دوی این حالت ها در مثال های زیر بررسی شده است.
مثال: یک ماتریس همانی مربعی سه در سه با تابع eye در متلب ایجاد کرده ایم. نمایش تابع همانی در متلب به این ترتیب انجام می شود.
مثال: این بار دو ماتریس دیگر با تابع eye ایجاد می کنیم که تعداد سطر و ستون های آنها متفاوت است. البته این ماتریس ها چون مربعی نیستند، قطر اصلی ندارند و در نتیجه ماتریس همانی هم نیستند. ولی از لحاظ ظاهری مشابه ماتریس های همانی هستند. دو ماتریس A و B را در این مثال با هم مقایسه کنید.
نکته: اگر تابع eye را بدون دادن ورودی در متلب به کار ببریم، عدد اسکالر 1 تولید می شود که معادل eye(1) است. این را خودتان در متلب امتحان کنید.
تعریف ماتریس صفر با استفاده از دستور zeros در متلب
گاهی وقت ها نیاز است یک ماتریس صفر با تعداد سطرها و ستون های دلخواه در نرم افزار متلب ایجاد کنید. مثلا خیلی وقت ها لازم می شود ابتدا یک ماتریس با درایه های صفر تعریف کنید و سپس در طول برنامه، درایه های آن را تغییر دهید. مثلا اگر با استفاده از ساختار حلقه ها (که می توانید در آموزش های بعدی آن ها را دنبال کنید) یک ماتریس را تعریف کنید و در هر دور حلقه، تعدادی المان به ماتریس اضافه کنید، ماتریس صفر می تواند به شما کمک کند. به این صورت که در ابتدا یک ماتریس صفر کامل تعریف می شود و در هر دور حلقه، اعداد جدید جایگزین درایه های صفر قبلی می شوند.
این کار باعث می شود سرعت اجرای برنامه افزایش یابد. ( حالا لازم نیست خیلی نگران این بحث باشید، در آموزش مربوط به حلقه ها این مورد را بررسی خواهیم کرد!)
یا فرض کنید می خواهید ماتریسی تعریف کنید که بیشتر درایه های آن را عدد صفر تشکیل داده است. ولی چند درایه اعدادی غیر صفر هستند. در این حالت می توانید به جای اینکه این همه صفر را برای تعریف ماتریس تایپ کنید، کافی است یک ماتریس صفر کامل با ابعاد مطلوب تعریف کنید و سپس درایه های دلخواه خود را با اعداد دیگر جایگزین کنید.
برای تعریف تابع صفر می توانیم از تابع zeros در متلب استفاده کنیم. در مثال های زیر با چند روش استفاده از تابع zeros آشنا می شویم.
مثال: می خواهیم یک ماتریس با دو سطر و سه ستون تعریف کنیم که همه درایه های آن صفر باشد. در تابع zeros ورودی اول، تعداد سطرها و ورودی دوم تعداد ستون ها را مشخص می کند.
مثال: حالا می خواهیم یک ماتریس مربعی با سه سطر و سه ستون ایجاد کنیم. برای این کار می توانیم به جای دو ورودی، صرفا عدد 3 را به عنوان ورودی به تابع zeros بدهیم.
مثال: از دستور zeros در متلب برای تعریف ماتریس صفر سه بعدی استفاده می کنیم. در این حالت، ورودی اول تعداد سطر، ورودی دوم تعداد ستون و ورودی سوم تعداد طبقه را مشخص می کند.
تعریف ماتریس با درایه های 1 با استفاده از دستور ones در متلب
نحوه عملکرد تابع ones در متلب، کاملا شبیه عملکرد تابع zeros است. به این صورت که تعداد ابعاد ماتریس را به عنوان ورودی به تابع ones می دهیم و این تابع ماتریسی با ابعاد گفته شده می سازد که همه درایه های آن برابر 1 باشد. مثال های زیر در درک بهتر نحوه استفاده از دستور ones در متلب به شما کمک می کند.
مثال: می خواهیم یک ماتریس با سه سطر و چهار ستون تعریف کنیم که همه درایه های آن برابر 1 باشد.
مثال: صرفا با استفاده از یک ورودی، یک ماتریس سه در سه با درایه های 1 تعریف می کنیم.
حالا ممکن است یک سوال ایجاد شود. آیا تابع هایی وجود دارند که ماتریس هایی با عدد های بزرگتر ایجاد کنند؟ مثلا ممکن است به ماتریسی نیاز داشته باشیم که همه درایه های آن برابر 5 باشد. خب جواب این سوال «خیر» است. چون ما اصلا با وجود تابع ones نیازی به تعریف تابع های دیگر برای اعداد بزرگتر نداریم. مثال زیر را بخوانید تا بهتر متوجه شوید.
مثال: می خواهیم یک ماتریس 3 در 3 تعریف کنیم که همه درایه های آن برابر با 5 باشد. برای این کار به شیوه زیر عمل می کنیم.
تعریف ماتریس های NaN و inf در متلب
با مفهوم NaN و Inf آشنا شده اید. برای ساخت ماتریس هایی که درایه های آنها تماما از NaN یا Inf تشکیل شده باشد، می توانیم از توابع NaN و Inf استفاده کنیم. برای مشخص کردن تعداد سطرها و ستون های ماتریس دلخواهمان مانند توابعی که در بالا توضیح داده شد عمل می کنیم. یعنی تعداد سطر را به عنوان ورودی اول و تعداد ستون را به عنوان ورودی دوم وارد می کنیم.
مثال: یک ماتریس با سه سطر و چهار ستون ایجاد می کنیم که همه درایه های آن NaN باشد.
مثال: یک ماتریس مربعی 2 در 2 ایجاد می کنیم که همه درایه های آن Inf باشد.
ماتریس جادویی magic
دستور magic در متلب، تابع بسیار جالبی است که یک ماتریس مربعی جادویی تولید می کند. حالا چرا این ماتریس جادویی است؟! چون مجموع اعداد همه سطرها، همه ستون ها و همچنین قطرهای اصلی و فرعی یکسان است. ورودی تابع تعداد سطرها و ستون ها را مشخص می کند.
مثال: یک ماتریس 3 در 3 جادویی تولید می کنیم. جمع اعداد همه ردیف ها، ستون ها و قطرهای اصلی و فرعی برابر 15 است!
مثال: این بار یک ماتریس 4 در 4 جادویی تولید می کنیم. جمع اعداد همه ردیف ها، ستون ها و قطرهای اصلی و فرعی برابر 34 می شود!
امیدوارم این آموزش هم برای شما مفید بوده باشد. آموزش های بعدی ما را از دست ندهید.