آموزش برنامه نویسی متلب
موضوع:آرایه های چندبعدی در متلب
جلسه: دوازدهم
مدرس : مدرسین جاواپرو
متلب را ساده،آسان و شیرین بنوشید!!!
در ادامه مبحث جلسه گذشته یعنی آرایه سلول ها دیدیم در این جلسه میخواهیم ابتدا به تعریف آرایه های چند بعدی و آرایه سلول های چند بعدی بپردازیم و سپس به سراغ مبحث ساختارها یا structure ها میرویم.
در متلب امکان تعریف ماتریس ها با بعد سه به بالا نیز وجود دارد. برای درک این موضوع به دیاگرام زیر که نمایش گرافیکی یک ماتریس سه بعدی است، نگاه کنید:
اگر فرض کنیم این ماتریس m*n*p باشد، در واقع تشکیل یافته از p ماتریس m*n است. با توجه به عکس بالا میتوان تصور نمود که ماتریس سه بعدی را لایه های مختلفی تشکیل داده اند، به هریک از این لایه ها یک صفحه،page، گفته میشود.
دو بعد اول ماتریس سه بعدی همانند ماتریس دوبعدی است، بعد سوم مربوط به شماره صفحه است. بنابرین ماتریس دوبعدی را میتوان حالت خاص ماتریس سه بعدی با اندازه بعد سوم یک، درنظرگرفت. برای ایجاد یک ماتریس سه بعدی میتوان ابتدا یک ماتریس معمولی تعریف نمود و سپس آن را توسعه داد:
>>M = [1 2 3;4 5 6;7 8 9]; |
اکنون این ماتریس صفحه اول ماتریس سه بعدی را تشکیل داده است، صفحه دوم را به آن می-افزاییم. برای این منظور یک ماتریس 3در3 دیگر را تعریف نموده و به شکل زیر به صفحه دوم ماتریس تخصیص میدهیم:
>>M(:,:,2) = ones(3,3); |
بنابراین به اندیس های ماتریس یک مؤلفه اضافه گردید. برای دسترسی به درایه های یک ماتریس سه بعدی باید از سه اندیس که دو اندیس اول مشابه یک آرایه معمولی است و اندیس آخر شماره صفحه را تعیین میکند.
>>M(1,1,1) ans = 1 >>M(1,1,2) ans = 1 |
اما نمایش یک آرایه چند بعدی به صورت صفحه به صفحه است:
>>M M(:,:,1) = 1 2 3 4 5 6 7 8 9 M(:,:,2) = 1 1 1 1 1 1 1 1 1 |
راه دیگر برای گسترش ابعاد آرایه، این است که یک اسکالر،مثلا صفر، را به تمام عناصر صفحه اختصاص دهیم:
>>M(:,:,2) = 0 M(:,:,1) = 1 2 3 4 5 6 7 8 9 M(:,:,2) = 0 0 0 0 0 0 0 0 0 |
به همین ترتیب یک آرایه چهار بعدی را به شکل زیر تعریف میکنیم:
>>M(2,2,2,2) = 1 M(:,:,1,1) = 0 0 0 0 M(:,:,2,1) = 0 0 0 0 M(:,:,1,2) = 0 0 0 0 M(:,:,2,2) = 0 0 0 1 |
مشاهده کردیم که بعد سوم و چهارم به ترتیب نمایش داده شدند.
آرایه سه بعدی M زیر را درنظربگیرید:
>>M = [1 2 3;4 5 6;7 8 9]; >>M(:,:,2) = - M(:,:,1) M(:,:,1) = 1 2 3 4 5 6 7 8 9 M(:,:,2) = -1 -2 -3 -4 -5 -6 -7 -8 -9 |
فرض کنیم که به عناصر ستون اول و آخر همه صفحات میخواهیم دسترسی داشته باشیم، برای این منظور به طریق زیر عمل میکنیم:
>>M(:,[1 end],:) ans(:,:,1) = 1 3 4 6 7 9 ans(:,:,2) = -1 -3 -4 -6 -7 -9 |
یا اینکه اگر فقط سطرهای دوم و سوم همه صفحات را بخواهیم مشاهده کنیم:
>>M([2 3],:,:) ans(:,:,1) = 4 5 6 7 8 9 ans(:,:,2) = -4 -5 -6 -7 -8 -9 |
دستور size را برای M به کارمی بریم:
>>size(M) ans = 3 3 2 |
- دستور ndims(A):
تعداد بعدهای آرایه A را برمی گرداند:
>>ndims(M) ans = 3 |
- reshape():
قبلاً نیز با این آَشنا شده ایم، ابعاد آرایه را تغییر میدهد یا برای کاهش یا افزایش بعد آرایه ها میتوان از آن استفاده نمود:
>>reshape(M,2,3,3) ans(:,:,1) = 1 7 5 4 2 8 ans(:,:,2) = 3 9 -4 6 -1 -7 ans(:,:,3) = -2 -8 -6 -5 -3 -9 |
- permute(A,order):
فرض کنید ماتریس 2در2 A را، به شکل زیر تعریف کنیم:
>>A = [1 2;3 4] A = 1 2 3 4 |
دستور فوق برای جابجایی ترتیب ابعاد به کار میرود. مثلا اگر بخواهیم جای سطرها و ستون ها را در ماتریس فوق عوض کنیم داریم:
>>permute(A,[2 1]) ans = 1 3 2 4 |
البته برای حالت دوبعدی این معادل ترانهاده بوده که با عملگر "’" نیز قابل انجام بود. اما این عملگر برای ابعاد بالاتر تعریف نشده-است. مثلا آرایه 3در3 زیر را درنظربگیرید:
>>M M(:,:,1) = 1 2 3 4 5 6 7 8 9 M(:,:,2) = -1 -2 -3 -4 -5 -6 -7 -8 -9 |
می توان برای مثال جای بعد سوم و دوم را تغییر داد:
>>permute(M,[1 3 2]) ans(:,:,1) = 1 -1 4 -4 7 -7 ans(:,:,2) = 2 -2 5 -5 8 -8 ans(:,:,3) = 3 -3 6 -6 9 -9 |
برای درک بهتر تغییر فوق، میتوان این گونه تصور نمود که ماتریس M اصلی را 90 درجه به-طور چپ گرد دوران داده ایم.
- cat(dim,A,B,C,…): |
این دستور اتصال آرایه ها به همدیگر به کار میرود. علت این که این دستور را این جا معرفی کردیم، این است که یک راه تشکیل آرایه های چندبعدی این دستور است. عبارت dim بعد را مشخص میکند. میتوان دو یا چند آرایه را با هم ترکیب کرد. برای روشن شدن موضوع، با یک مثال ساده برای دو ماتریس 2در2 زیر شروع میکنیم:
A = 1 2 3 4 B = 5 6 7 8 |
عبارت cat(1,A,B) دو ماتریس A و Bرا به نحوی کنار یکدیگر قرار میدهد که بعد اول یعنی سطرهای ماتریس A، گسترش یابد. به عبارت دیگر B در زیر A قرار بگیرد:
>>cat(1,A,B) ans = 1 2 3 4 5 6 7 8 |
اما عبارت cat(2,A,B)، بعد دوم یعنی همان سطرهای ماتریس اول ،A، را گسترش میدهد. یعنی تعداد ستون های ماتریس کلی مجموع ستون-های دوماتریس اولیه است.
>>cat(2,A,B) ans = 1 2 5 6 3 4 7 8 |
اما اگر آرگومان بعد را برابر با 3، قرار دهیم، خواهیم داشت:
بنابراین بدین طریق توانستیم دو ماتریس را جوری تلفیق کنیم که یک آرایه سه بعدی را ایجاد کند.
>>cat(3,A,B) ans(:,:,1) = 1 2 3 4 ans(:,:,2) = 5 6 |
پیروز و موفق باشید
تدریس خصوصی آنلاین و از راه دور متلب(MATLAB) با مدرس های حرفه ای و با تجربه [اینجا کـــــلیک کــــنید]
جلسه دوازدهم | آرایه های چندبعدی در متلب
فرمت:PDF (لطفا در صورت خرابی لینک دانلود گزارش بدید که لینک اصلاح کنیم)
بستن *نام و نام خانوادگی * پست الکترونیک * متن پیام |
دوره های آموزشی برنامه نویسی
انجام پروژه های برنامه نویسی
تدریس خصوصی برنامه نویسی
بیش از 7 سال از فعالیت جاواپرو میگذرد
جاواپرو دارای مجوز نشر دیجیتال از وزارت فرهنگ و ارشاد اسلامی است
جهت ارتباط مستقیم با جاواپرو در واتساپ و تلگرام :
09301904690
بستن دیگر باز نشو! |