بازدید: ٣١۴

آدرس دهی قسمتهای مختلف ماتریس (آموزش MATLAB)

بازگشت به صفحه اصلی آموزش MATLAB

 

برخی مواقع می خواهیم زیرمجموعه ای از اعضای یک ماتریس را انتخاب کرده یا تغییر دهیم. سه روش مختلف برای آدرس دهی یک زیرمجموعه از ماتریس ها وجود دارد. اولین روش استفاده از شماره سطر و ستون می باشد، روش دوم استفاده از تنها یک اندیس و روش سوم استفاده از دستورات شرطی است.

 

آدرس دهی با استفاده از شماره سطرها و ستونها

 

اگر بخاطر داشته باشید در قسمتهای قبلی ، ماتریس testMatrix را تعریف کردیم که در آن دومین مکان در سومین روز، برابر با مقدار 3 میلیمتر بود. برای انتخاب این عدد از ماتریس باید بدانید که این عدد در سطر سوم و ستون سوم ماتریس قرار دارد. برای آدرس دهی این مکان خاص در درون ماتریس کافی است بعد از نام متغیر، شماره سطر و ستون را در درون پرانتز و در مقابل آن بنویسید:

 

آدرس دهی ماتریس

 

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

 

آأرس دهی یک ماتریس

 

در اینجا آدرس دهی سطرها و ستونهای ماتریس با استفاده از بردارها انجام می شود. بردار اول سطرهای 1، 2 و 3 را انتخاب می کند و بردار دوم ستون های 1 و 4 را انتخاب می کند. اغلب اوقات استفاده از عملگر کولون (:) برای آدرس دهی بردارها مناسب می باشد. در این مثال، ما سطرهای 1 تا 3 را می خواستیم. می توانیم آن را بصورت 1:3 بنویسیم. در اصل با استفاده از این دستور یک بردار سطری ایجاد می شود که با عدد 1 شروع شده و با عدد 3 خاتمه می یابد و مقدار نمو آن نیز 1 است (از آنجایی که ما مقدار نموی را برای آن وارد نکردیم، MATLAB بطور پیش فرض مقدار 1 را بعنوان نمو در نظر می گیرد).

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

 

ماتریس ها آدرس دهی

 

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

 

عبارت end ماتریس

 

آدرس دهی با استفاده از یک اندیس

 

بردارهای سطری و ستونی می توانند تنها با کمک یک اندیس آدرس دهی شوند تا به کمک آن مکان قرارگیری زیرمجموعه مورد نظر را نشان دهند. بعنوان مثال، اگر testVector بردار سطری [1 3 5 7 9 11] باشد، چهار عضو ابتدایی آن را می توانید با استفاده از دستور زیر انتخاب کنید:

 

اندیس ها در ماتریس ها

 

در نتیجه نیازی نیست که شما هیچ شماره سطری را وارد کنید. همین کار را می توان برای بردارهای ستونی نیز انجام داد. اگرچه ماتریسها می توانند با استفاده از تنها یک اندیس آدرس دهی شوند. در این حالت اعضای ماتریس می توانند بصورت ستونی شمارگذاری شوند که با شماره عضو بالا و سمت چپ آغاز می شود. بنابراین هفت عضو ابتدایی testMatrix به شرح زیر می باشند:

 

ماتریس برداری

 

از آنجایی که آدرس دهی بصورت برداری است (1:7)، جواب هم بصورت یک بردار سطری می باشد.

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

 

آدرس دهی برداری

 

در این حالت نتیجه یک بردار ستونی خواهد بود.

 

آدرس دهی با استفاده از دستورات شرطی

 

زیرمجموعه ماتریسی را می توان براساس یک شرط انتخاب کرد. فرض کنید می خواهیم تمامی اعضای ماتریس textMatrix را که بزرگتر از 5 هستند انتخاب کنید. دستور مربوطه را می نویسیم:

 

آدرس دهی با دستورات شرطی

 

این دستور یک بردار ستونی به نام index_gt5 ایجاد می کند که در آن فهرستی از اعضای ماتریس testMatrix قرار دارند که بزرگتر از 5 می باشند. اگر دقت کنید متوجه می شوید که اعداد موجود در این لیست، بصورت ستونی شماره گذاری شده اند.  سپس می توانیم با استفاده از اندیس، اعضایی از ماتریس را که بزرگتر از 5 هستند انتخاب کنیم.

 

بردار ستونی

 

البته نیازی به انجام کار اضافی برای تعریف متغیر اندیس نیست. همین کار را نیز می توانید با استفاده از دستورات تودرتو انجام دهید:

 

دستورات تودرتو شرطی

 

استراتژی دیگری برای آدرس دهی شرطی با استفاده از متغیرهای منطقی وجود دارد. به اجرای دستور زیر دقت کنید:

 

آدرس دهی شرطی

 

با اجرای دستور فوق ماتریسی به نام index_gt5_logic بدست می آید که حاوی صفر و یک می باشد. این ماتریس یک متغیر منطقی است. هر عضو آن یک پاسخ منطقی به این سوال است که آیا عضو مورد نظر در ماتریس textMatrix بزرگتر از 5 می باشد یا خیر. عدد 1 مقدار صحیح و عدد 0 مقدار نادرست را نشان می دهد. از این نوع مقادیر می توان برای انتخاب مقادیر بزرگتر از 5 در ماتریس textMatrix استفاده  کرد.

 

دستورات تودرتو

 

همچنین می توانید دستورات فوق را بصورت تودرتو بنویسید که در برخی مواقع نسبت به زمانی که از دستور find() استفاده می کنید، کوتاهتر است.

 

دستور تودر تو شرطی

 

در اینجا ممکن است متوجه تفاوت بین متغیرهای منطقی و متغیرهای عددی شده باشید. حال اگر ما متغیر منطقی index_gt5_logic را با ضرب آن در عدد 1 به یک متغیر عددی تغییر دهیم، دیگر امکان استفاده از آن برای آدرس دهی وجود ندارد:

 

پیغام خطا در دستورات شرطی

 

بازگشت به صفحه اصلی آموزش MATLAB

 

طراحی سایت و سئو توسط ضابط