با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن. و کاربرانی که دوره کامل آموزش متلب را دنبال می کنند. تاکنون شما را با مباحث متغیرها ، بردار و ماتریس ها در متلب آشنا کرده ایم. حالا باید بدانید که در واقع تمام متغیرها از هر نوع داده در MATLAB در واقع آرایه های چند بعدی هستند. یک بردار یک آرایه یک بعدی و یک ماتریس یک آرایه دو بعدی است. تاکنون آرایه های یک بعدی و ماتریس را در آموزش های قبلی مورد بررسی قرار دادیم، در این آموزش قصد داریم تا شما را با انواع خاصی از آرایه ها و ساختار کلی آرایه ها در متلب آشنا کنیم. حالا به منظور آشنایی با آرایه ها در متلب ، نحوه استفاده از آرایه ها در متلب و کار با آرایه ها در متلب در ادامه ی مباحث این بخش با ما همراه باشید.
ادامه ی مباحث این آموزش را برای آشنایی با آرایه ها در متلب و چگونگی دنبال کنید.
توابعی در متلب ارائه شده که آرایه های خاصی را ایجاد می کند.
توابعی با یک آرگومان آرایه ای با سطر و ستون برابر ایجاد می کنند.
همچنین توابعی با دو آرگومان نیز آرایه ای با سطر و ستون نابرابر ایجاد می کنند.
این تابع آرایه ای با سطر و ستون هایی به تعداد پارامتر دریافتی و مقادیر صفر تولید می کند.
مثال:
1 | zeros(5) |
نتیجه ی اجرای کد فوق در متلب :
1 2 3 4 5 6 | ans = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |
این تابع بر اساس پارامترهای ورودی یک آرایه ی دو بعدی با مقدار ۱ برای تمام عناصر ایجاد می کند.
مثال:
1 | ones(4,3) |
نتیجه ی اجرای کد فوق در متلب :
1 2 3 4 5 | ans = 1 1 1 1 1 1 1 1 1 1 1 1 |
این تابع یک ماتریس بر اساس پارامتر ورودی با مقدار قطر اصلی ۱ و بقیه عناصر ۰ ایجاد می کند.
مثال:
1 | eye(4) |
نتیجه ی کد فوق در متلب :
1 2 3 4 5 | ans = 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 |
تابع فوق بر اساس پارامترهای دریافتی یک ماتریس با مقادیر تصادفی تولید می کند.
مثال:
1 | rand(3, 5) |
نتیجه ی اجرای کد فوق در متلب :
1 2 3 4 | ans = 0.8147 0.9134 0.2785 0.9649 0.9572 0.9058 0.6324 0.5469 0.1576 0.4854 0.1270 0.0975 0.9575 0.9706 0.8003 |
این تابع یک آرایه دو بعدی با مقادیر دهدهی تولید می کند. پارامتر ورودی این تابع باید بزرگتر یا مساوی ۳ باشد.
مثال:
1 | magic(4) |
نتیجه ی اجرای کد فوق در متلب:
1 2 3 4 5 | ans = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 |
یک آرایه دارای بیش از دو ابعاد، در متلب یک آرایه چند بعدی نامیده می شود.
به طور کلی برای ساخت یک آرایه چند بعدی، ابتدا یک آرایه دو بعدی ایجاد کرده و آن را گسترش می دهیم.
مثال- ابتدا یک آرایه ی دو بعدی ایجاد می کنیم:
1 | a = [7 9 5; 6 1 9; 4 3 2] |
نتیجه ی اجرای کد فوق در متلب :
1 2 3 4 | a = 7 9 5 6 1 9 4 3 2 |
آرایه ی a یک آرایه ی دو بعدی است و ما می توانیم بعد سوم را نیز بصورت زیر اضافه کنیم:
1 | a(:, :, 2)= [ 1 2 3; 4 5 6; 7 8 9] |
نتیجه ی اجرای کد فوق در متلب :
1 2 3 4 5 6 7 8 9 10 11 12 13 | a = ans(:,:,1) = 0 0 0 0 0 0 0 0 0 ans(:,:,2) = 1 2 3 4 5 6 7 8 9 |
همچنین می توانیم با استفاده از توابع ()ones و ()zeros یا ()rand ماتریس های چند بعدی بسازیم.
مثال:
1 | b = rand(4,3,2) |
نتیجه ی اجرای کد فوق :
1 2 3 4 5 6 7 8 9 10 11 | b(:,:,1) = 0.0344 0.7952 0.6463 0.4387 0.1869 0.7094 0.3816 0.4898 0.7547 0.7655 0.4456 0.2760 b(:,:,2) = 0.6797 0.4984 0.2238 0.6551 0.9597 0.7513 0.1626 0.3404 0.2551 0.1190 0.5853 0.5060 |
ما همچنین می توانیم از تابع ()cat برای ساخت آرایه های چند بعدی استفاده کنیم.
این تابع یک لیست از آرایه ها را در کنار یک بعد خاص مشخص می کند.
ساختار تابع ()cat :
1 | B = cat(dim, A1, A2...) |
تشریح ساختار فوق:
مثال:
یک فایل اسکریپت ایجاد کرده و کد زیر را در آن تایپ نمائید:
1 2 3 | a = [9 8 7; 6 5 4; 3 2 1]; b = [1 2 3; 4 5 6; 7 8 9]; c = cat(3, a, b, [ 2 3 1; 4 7 8; 3 9 0]) |
نتیجه ی اجرای فایل فوق در متلب بصورت زیر است :
1 2 3 4 5 6 7 8 9 10 11 12 | c(:,:,1) = 9 8 7 6 5 4 3 2 1 c(:,:,2) = 1 2 3 4 5 6 7 8 9 c(:,:,3) = 2 3 1 4 7 8 3 9 0 |
متلب توابع زیر را برای مرتب کردن، چرخش، تغییر شکل یا تغییر محتوی آرایه فراهم می کند:
تابع | کاربرد تابع |
---|---|
length | طول بردار یا بزرگترین بعد آرایه را برمی گرداند. |
ndims | تعداد ابعاد آرایه را برمی گرداند. |
numel | تعداد عناصر آرایه را برمی گرداند. |
size | اندازه ی ابعاد آرایه است. |
iscolumn | تعیین اینکه آیا ورودی ستون بردار است یا خیر |
isempty | تشخیص می دهد که آیا آرایه خالی است یا خیر. |
ismatrix | تشخیص می دهد که آیا ورودی یک ماتریس است یا خیر. |
isrow | تشخیص می دهد که آیا ورودی یک آرایه سطری است یا خیر. |
isscalar | تشخیص می دهد که آیا ورودی اسکالر است یا خیر. |
isvector | تشخیص می دهد که آیا ورودی بردار است یا خیر. |
blkdiag | ساختار مورب یک ماتریس است. |
circshift | آرایه شیفت به صورت دایره ای |
ctranspose | پیوند آرایه ها |
diag | ماتریس های مورب و قطر ماتریس است. |
flipdim | آرایه flips در ابعاد مشخص شده. |
fliplr | یک آرایه ی flips از چپ به راست تولید می کند. |
flipud | یک آرایه ی flips از بالا به پایین تولید می کند. |
ipermute | ابعاد آرایه را جابه جا می کند. |
permute | ابعاد آرایه را کامل می کند. |
repmat | تکرار یک آرایه است. |
reshape | آرایه ها را تغییر می دهد. |
rot90 | یک آرایه را ۹۰ درجه می چرخاند. |
shiftdim | ابعاد یک آرایه را شیفت می دهد. |
issorted | تعیین اینکه آیا عناصر مجموعه مرتب شده اند یا خیر. |
sort | عناصر آرایه را به ترتیب نزولی مرتب می کند. |
sortrows | مرتب سازی عناصر آرایه بر اساس ترتیب صعودی. |
squeeze | ابعاد تکی را حذف می کند. |
transpose | ترانهاده ی ماتریس است. |
vectorize | آرایه ی یک بعدی یا بردار می سازد. |
مثال های زیر برخی از توابع ذکر شده ی فوق را نشان می دهد.
یک فایل اسکریپت ایجاد کرده و کد زیر را در آن تایپ نمائید:
1 2 3 4 5 6 | x = [7.1, 3.4, 7.2, 28/4, 3.6, 17, 9.4, 8.9]; length(x) % length of x vector y = rand(3, 4, 5, 2); ndims(y) % no of dimensions in array y s = ['Zara', 'Nuha', 'Shamim', 'Riz', 'Shadab']; numel(s) % no of elements in s |
نتیجه ی اجرای فایل فوق در متلب به صورت زیر است:
1 2 3 | ans = 8 ans = 4 ans = 23 |
یک فایل اسکریپت ایجاد کرده و کد زیر را در آن تایپ نمائید:
1 2 3 | a = [1 2 3; 4 5 6; 7 8 9] b = circshift(a,1) c = circshift(a,[1 -1]) |
نتیجه ی اجرای فایل فوق در متلب به صورت زیر است:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | a = 1 2 3 4 5 6 7 8 9 b = 7 8 9 1 2 3 4 5 6 c = 8 9 7 2 3 1 5 6 4 |
یک فایل اسکریپ ایجاد کرده و کد زیر را داخل آن تایپ نمائید:
1 2 3 4 | v = [ 23 45 12 9 5 0 19 17] sort(v) m = [2 6 4; 5 3 9; 2 0 1]sort(m, 1) sort(m, 2) |
نتیجه ی اجرای فایل فوق در متلب به صورت زیر است:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | v = 23 45 12 9 5 0 19 17 ans = 0 5 9 12 17 19 23 45 m = 2 6 4 5 3 9 2 0 1 ans = 2 0 1 2 3 4 5 6 9 ans = 2 4 6 3 5 9 0 1 2 |
آرایه های سلولی آرایه هایی از سلول های ایندکس شده هستند که در آن هر سلول می تواند یک آرایه از ابعاد مختلف و انواع داده را ذخیره کند.
از تابع cell برای ایجاد یک آرایه ی سلولی استفاده می شود.
ساختار تابع cell بصورت زیر است :
1 2 3 | C = cell(dim) C = cell(dim1,...,dimN) D = cell(obj) |
تشریح کد فوق:
مثال – یک فایل اسکریپت ایجاد کرده وکد زیر را در آن تایپ نمائید:
1 2 | c = cell(2, 5); c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5} |
نتیجه ی اجرای فایل فوق در متلب به صورت زیر است:
1 2 3 4 5 6 7 8 9 10 11 12 13 | c = { [1,1] = Red [2,1] = 1 [1,2] = Blue [2,2] = 2 [1,3] = Green [2,3] = 3 [1,4] = Yellow [2,4] = 4 [1,5] = White [2,5] = 5 } |
دو روش برای دسترسی به عناصر آرایه های سلولی در متلب وجود دارد:
هنگامی که شاخص ها را در اولین ستون قرار می دهید، به مجموعه ای از سلول ها اشاره می شود.
شاخص های آرایه سلولی در پرانتزهای صاف به مجموعه سلول ها اشاره دارند.
مثال:
1 2 | c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5}; c(1:2,1:2) |
نتیجه ی اجرای کد فوق در متلب:
1 2 3 4 5 6 7 | ans = { [1,1] = Red [2,1] = 1 [1,2] = Blue [2,2] = 2 } |
همچنین می توانید با استفاده از براکت به محتوای آرایه ها دسترسی داشته باشید.
مثال:
1 2 | c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5}; c{1, 2:4} |
نتیجه ی اجرای کد فوق در متلب:
1 2 3 | ans = Blue ans = Green ans = Yellow |
متلب از توابع مختلف و گسترده ای برای ایجاد آرایه های خاصی از جمله آرایه هایی با مقادیر صفر ، ۱ ، تصادفی ، همانی و … استفاده می کند. که آشنایی با آن ها برای کار با آرایه ها و ماتریس ها ضرورت دارد. از این رو مباحث این بخش را به آشنایی با آرایه ها در متلب اختصاص داده ایم.