مشخصات مقاله
-
1950
-
0.0
-
27236
-
0
-
0
آرایه در متلب
Arrays
تمام متغیر های data type ها در متلب آرایه های چند بعدی هستند. یک بردار آرایه یک بعدی و یک ماتریس آرایه دو بعدی خواهد بود.
تا کنون در مورد بردار ها و ماتریس ها صحبت کردیم، در این بخش در مورد آرایه های چند بعدی بحث خواهیم کرد.
آرایه های خاص در متلب
در این بخش، در مورد بعضی از توابعی که آرایه های خاصی را ایجاد می کنند بحث خواهیم کرد. برای تمام این توابع، با یک استدلال ساده یک آرایه مربعی و شناسه double، یک آرایه مستطیل شکل ایجاد می کند.
تابع zeros()، یک آرایه تمام صفر ایجاد می کند.
مثال
zeros(5)
متلب عبارت بالا را اجرا کرده و به صورت زیر بر می گرداند.
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
تابع ones()، یک آرایه تمام یک ایجاد می کند.
مثال
ones(4,3)
متلب عبارت بالا را اجرا کرده و به صورت زیر بر می گرداند.
ans =
1 1 1
1 1 1
1 1 1
1 1 1
تابع eye()، یک آرایه همانی ایجاد می کند.
مثال
eye(4)
متلب عبارت بالا را اجرا کرده و به صورت زیر بر می گرداند.
ans =
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
تابع rand()، یک آرایه از اعداد به صورت رندوم و دارای توزیع یکنواخت روی (0,1) می باشد.
مثال
rand(3, 5)
متلب بعد از اجرای دستور بالا، نتیجه زیر را ایجاد می کند.
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
مربع جادویی
یک magic square، یک مربعی است که مجموع اعداد هر سطر و هر ستون دقیقا یک عدد را بر می گرداند.
تابع magic() یک مربع جادویی را ایجاد می کند. این تابع سایز و اندازه یک ماتریس را می گیرد. مقدار ورودی باید بزرگتر مساوی 3 باشد.
مثال
magic(4)
متلب دستور بالا را به صورت زیر بر می گرداند.
ans =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
آرایه های چند بعدی
در متلب یک آرایه بیشتر از 2 بعد را آرایه چند بعدی می نامیم. آرایه های چند بعدی در متلب یک بسط نرمال از ماتریس دو بعدی است.
به طور معمول برای تولید یک آرایه چند بعدی ابتدا یک آرایه دو بعدی ایجاد کرده و سپس آن را بسط می دهیم. برای مثال فرض کنیم آرایه دوبعدی a را ایجاد کرده ایم.
a = [7 9 5; 6 1 9; 4 3 2]
متلب عبارت بالا را به صورت زیر می نویسد.
a =
7 9 5
6 1 9
4 3 2
آرایه a یک آرایه 3 در 3 می باشد. ما می توانیم یک بعد را به a اضافه کنیم مانند عبارت زیر
a(:, :, 2)= [ 1 2 3; 4 5 6; 7 8 9]
متلب دستور بالا را به صورت زیر اجرا می کند.
a(:,:,1) =
7 9 5
6 1 9
4 3 2
a(:,:,2) =
1 2 3
4 5 6
7 8 9
ما همچنین آرایه های چند بعدی را توسط تابع های ones() و zeros() یا rand() ایجاد می کنیم.
مثال
b = rand(4,3,2)
متلب به صورت زیر نتیجه را نمایش می دهد.
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() به صورت زیر می باشد.
B = cat(dim, A1, A2...)
که در آن
B آرایه جدید ایجاد شده است.
A1، A2، ... آرایه های الحاقی هستند.
dim بعد متعلق به آرایه های الحاقی می باشد.
مثال
عبارت زیر را در فایل اسکریپت بنویسید.
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])
وقتی فایل اجرا می شود، نتیجه به صورت زیر خواهد بود.
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
توابع آرایه
متلب توابع sort، rotate، permute، reshape، shift و ... را با محتوای زیر ارائه می دهد.
|
Function |
Purpose |
|
length |
طول بردار یا بزرگترین بعد آرایه |
|
ndims |
تعداد ابعاد آرایه |
|
numel |
تعداد عناصر آرایه |
|
size |
ابعاد آرایه |
|
iscolumn |
تعیین می کند که آیا ورودی بردار ستونی است |
|
isempty |
تعیین می کند که آیا آرایه خالی است |
|
ismatrix |
تعیین می کند که آیا ورودی ماتریس است |
|
isrow |
تعیین می کند که آیا ورودی بردار سطری است |
|
isscalar |
تعیین می کند که آیا ورودی اسکالر است |
|
isvector |
تعیین می کند که آیا ورودی بردار است |
|
blkdiag |
ایجاد یک ماتریس قطری با درایه های مشخص |
|
circshift |
تغییرات آرایه ها به صورت دایره ای |
|
ctranspose |
ترانهاده مزدوج الحاقی |
|
diag |
ماتریس های قطری و قطر های ماتریس |
|
flipdim |
جابجا کردن ماتریس با بعد مشخص |
|
fliplr |
جابجا کردن ماتریس از چپ به راست |
|
flipud |
جابجا کردن ماتریس از بالا به پایین |
|
ipermute |
Inverses permute dimensions of N-D array |
|
permute |
تنظیم دوباره آرایه های N بعدی |
|
repmat |
تکرار آرایه به تعداد دلخواه |
|
reshape |
تغییر شکل آرایه |
|
rot90 |
چرخش ماتریس به اندازه 90 درجه |
|
shiftdim |
تغییر ابعاد |
|
issorted |
مشخص می کند که آیا عناصر مرتب شده هستند |
|
sort |
مرتب کردن عناصر آرایه به صورت افزایشی یا کاهشی |
|
sortrows |
منظم کردن سطر ها به صورت صعودی |
|
squeeze |
حذف ابعاد تک قلو |
|
transpose |
ترانهاده |
|
vectorize |
بسط عمودی |
عناصر اعداد، بعد و طول
فایل اسکریپت را تولید کرده و کد های زیر ار در آن بنویسید.
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
فایل اسکریپت اجرا شده و نتیجه زیر را بر می گرداند.
ans = 8
ans = 4
ans = 23
جابجایی مدور عناصر آرایه
فایل اسکریپت را ایجاد کرده و کد های زیر را در آن کپی می کنیم.
a = [1 2 3; 4 5 6; 7 8 9] % the original array a
b = circshift(a,1) % circular shift first dimension values down by 1.
c = circshift(a,[1 -1]) % circular shift first dimension values % down by 1
% and second dimension values to the left % by 1.
فایل بعد از اجرا به صورت زیر دیده می شود.
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
مرتب سازی آرایه ها
کد های زیر را در فایل اسکریپت بنویسید.
v = [ 23 45 12 9 5 0 19 17] % horizontal vector
sort(v) % sorting v
m = [2 6 4; 5 3 9; 2 0 1] % two dimensional array
sort(m, 1) % sorting m along the row
sort(m, 2) % sorting m along the column
وقتی که فایل را اجرا می کنیم، نتیجه را به صورت زیر خواهیم دید.
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، برای ایجاد یک خانه آرایه استفاده می شود. دستور نحوی (Syntax) تابع cell به صورت زیر می باشد.
C = cell(dim)
C = cell(dim1,...,dimN)
D = cell(obj)
به طوری که C یک خانه آرایه می باشد.
dim یک اسکالر صحیح یا بردار عدد صحیح که بعد خانه آرایه C را مشخص می کند.
dim1، dim2، ... ،dimN اعدا صحیحی که بعد C را مشخص می کنند.
Obj یکی از شرایط زیر است.
1) آرایه یا شی جاوا
2) آرایه .NET نوع System.String یا System.Object
مثال
فایل اسکریپت را ایجاد کرده و کد های زیر را در آن بنویسید.
c = cell(2, 5);
c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5}
بعد از اجرا عبارت زیر ایجاد می شود.
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)
متلب عبارت بالا را اجرا کرده و نتیجه زیر را بدست می دهد.
ans =
{
[1,1] = Red
[2,1] = 1
[1,2] = Blue
[2,2] = 2
}
می توان به مولفه های خانه با آکولاد دسترسی پیدا کرد.
مثال
c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5};
c{1, 2:4}
متلب عبارت بالا را اجرا کرده و نتیجه زیر را بدست می دهد.
ans = Blue
ans = Green
ans = Yellow