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

چاپ

با استفاده از تابع length و size می توان ابعاد بردارها و ماتریس ها را در متلب پیدا نمود. تابع length تعداد درایه های قرار گرفته در یک بردار را برمی گرداند. تابع size نیز تعداد درایه های قرار گرفته در سطرها و ستون های یک بردار یا ماتریس را تعیین می کند. بعنوان مثال، بردار vec که در زیر تعریف شده است، دارای 4 درایه است، بنابراین تابع length مقدار 4 را برمی گرداند. و چون که این یک بردار است، اندازه ی(ابعاد آن) آن با استفاده از تابع size برابر با 4×1 شده است:

 برای ایجاد ماتریس زیر که نام آن را mat قرار داده ایم، از علامت دونقطه برای ایجاد دو سطر استفاده شده است و سپس ترانهاده ی این ماتریس مورد محاسبه قرار گرفته است. بنابراین اکنون این ماتریس دارای سه سطر و دو ستون است، به عبارت دیگر سایز این ماتریس، 2×3 می باشد:

 تابع size، ابتدا تعداد سطر ها و سپس تعداد ستون ها را مشخص می کند، بنابراین اگر بخواهیم این ابعاد را در متغیرهای جداگانه ای قرار دهیم، برداری از متغیرها را در سمت چپ به تابع size انتساب می دهیم. بنابراین همان طور که در زیر نشان داده شده است، متغیر r اولین مقدار برگشت داده شده، یعنی تعداد سطرها را در خود نگهداری می کند و متغیر c نیز تعداد ستون ها را در خود نگهداری می کند:

 توجه کنید که در مثال بالا، دو مفهوم اساسی در متلب بکار برده شده است:

  1. یک تابع در متلب می تواند چندین مقدار را برگرداند. 
  2. یک بردار از متغیرها، می تواند برای ذخیره کردن مقادیر در داخل خود، در سمت چپ از یک عبارت انتساب قرار گیرد. 

 در صورتی که از تابع size بصورت یک عبارت استفاده شود، هر دو مقدار برگشت داده شده توسط این تابع، در یک بردار ذخیره می شوند. به مثال زیر توجه کنید:

 اگر متغیر یک ماتریس را در تابع length قرار دهیم، این تابع تعداد سطرها یا تعداد ستون ها ( هر کدام که بزرگتر باشد) را برمی گرداند. (در این مورد، تعداد سطرها، یعنی 3 برگردانده می شود):

 

سوال سریع!

چگونه می توان یک ماتریس که تمام درایه های آن صفر باشند ایجاد کرد، به طوری که ابعاد آن با ابعاد یک ماتریس دیگر برابر باشد؟

پاسخ:

اگر که متغیر mat را یک ماتریس در نظر بگیریم، عبارت زیر نتیجه ی دلخواه ما را مشخص خواهد نمود:

$$zeros(size(mat))$$

در دستور بالا، تابع size اندازه ی ماتریس مورد نظر را برمی گرداند و به تابع zeros می دهد. سپس تابع zeros یک ماتریس پر شده از صفرها را با ابعاد متغیر mat، تولید می کند. در این مورد نیاز نیست که مقادیر برگشت داده شده توسط تابع size در یک متغیر ذخیره شوند.

 

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

در بردارها، تابع numel طول یک بردار را محاسبه می کند. اما این تابع برای ماتریس ها حاصلضرب سطرها و ستون ها را مورد محاسبه قرار می دهد.

نکته: به طور کلی بهتر است که از تابع length یا numel برای تعیین تعداد درایه های یک بردار استفاده کنید و از تابع size برای یک ماتریس استفاده نمایید( و نتیجه را  در دو متغیر ذخیره کنید).

 همچنین نرم افزار متلب، یک تابع درونی دیگر به نام end دارد که به وسیله ی آن می توان به آخرین درایه ی درون یک بردار، اشاره کرد. بعنوان مثال عبارت \(v(end)\) معادل است با عبارت \(v(length(v))\). اما در ماتریس ها این عبارت می تواند به  آخرین سطر یا آخرین ستون آن ماتریس اشاره کند. پس اگر از کلمه ی end بعنوان اندیس سطر یک ماتریس استفاده کنیم، آخرین سطر در نظر گرفته می شود. 

در مثال زیر، به درایه ی قرار گرفته در آخرین سطر و اولین ستون اشاره می کنیم:

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

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