آموزش گام به گام Array در متلب به زبان کاملا ساده
تمام متغیرهای همه نوع داده ها در MATLAB آرایه های چند بعدی هستند. یک بردار آرایه یک بعدی است و یک ماتریس یک آرایه دو بعدی است. در این جا ما آرایه های چند بعدی را مورد بحث قرار خواهیم داد. با این حال، قبل از آن، اجازه دهید ما راجع به انواع خاصی از آرایه ها صحبت کنیم.
آرایه های ویژه در MATLAB
در این بخش، ما برخی از توابع که برخی از آرایه های خاص را ایجاد می کنند، مورد بحث قرار خواهیم داد. برای تمام این توابع، یک آرگومان تنها، آرایه مربع ایجاد می کند یعنی آرگومان ۲ ماتریس دو در دو ایجاد میکند، آرگومان های دوتایی آرایه مستطیلی ایجاد می کنند آرگوان ۲ به همراه آرگومان ۳ یک آرایه دو در سه ایجاد می کند.
تابع صفر (zeros) یک آرایه با مقادیر صفر ایجاد می کند.به عنوان مثال:
zeros(5)
MATLAB دستور بالا را اجرا می کند و نتیجه زیر را برمی گرداند
ans =
۰ ۰ ۰ ۰ ۰
۰ ۰ ۰ ۰ ۰
۰ ۰ ۰ ۰ ۰
۰ ۰ ۰ ۰ ۰
۰ ۰ ۰ ۰ ۰
تابع ones مقادیر یک را برمی گرداند برای مثال:
ones(4,3)
MATLAB دستور بالا را اجرا می کند و نتیجه زیر را برمی گرداند –
ans =
۱ ۱ ۱
۱ ۱ ۱
۱ ۱ ۱
۱ ۱ ۱
تابع eye یک ماتریس تطابقی ایجاد می کند. به عنوان مثال:
eye(4)
MATLAB دستور بالا را اجرا می کند و نتیجه زیر را برمی گرداند –
ans =
۱ ۰ ۰ ۰
۰ ۱ ۰ ۰
۰ ۰ ۱ ۰
۰ ۰ ۰ ۱
تابع rand یک آرایه از اعداد تصادفی بین صفر و یک ایجاد می کند. به عنوان مثال –
rand(3, 5)
MATLAB دستور بالا را اجرا می کند و نتیجه زیر را برمی گرداند –
ans =
۰٫۸۱۴۷ ۰٫۹۱۳۴ ۰٫۲۷۸۵ ۰٫۹۶۴۹ ۰٫۹۵۷۲
۰٫۹۰۵۸ ۰٫۶۳۲۴ ۰٫۵۴۶۹ ۰٫۱۵۷۶ ۰٫۴۸۵۴
۰٫۱۲۷۰ ۰٫۰۹۷۵ ۰٫۹۵۷۵ ۰٫۹۷۰۶ ۰٫۸۰۰۳
A Magic Square
یک آرایه تولید می کند که جمع مقادیر تمام سطر و ستون و قطر ها با هم برابر است.
اندازه این آرایه باید برابر یا بزرگتر از سه باشد.
magic(4)
MATLAB دستور بالا را اجرا می کند و نتیجه زیر را برمی گرداند –
ans =
۱۶ ۲ ۳ ۱۳
۵ ۱۱ ۱۰ ۸
۹ ۷ ۶ ۱۲
۴ ۱۴ ۱۵ ۱
آرایه های چند بعدی
آرایه ای که دارای بیش از دو بعد باشد، در MATLAB یک آرایه چند بعدی نامیده می شود. به طور کلی برای ساخت یک آرایه چند بعدی، ابتدا یک آرایه دو بعدی ایجاد کرده و آن را گسترش دهیم. برای مثال، بیایید یک آرایه دو بعدی ایجاد کنیم.
a = [7 9 5; 6 1 9; 4 3 2]
MATLAB دستور بالا را اجرا می کند و نتیجه زیر را برمی گرداند
a =
۷ ۹ ۵
۶ ۱ ۹
۴ ۳ ۲
آرایه a یک آرایه ۳ در ۳ است؛ ما می توانیم بعد سوم را به a اضافه کنیم
a(:, :, 2)= [ 1 2 3; 4 5 6; 7 8 9]
MATLAB دستور بالا را اجرا می کند و نتیجه زیر را برمی گرداند –
a =
ans(:,:,1) =
۰ ۰ ۰
۰ ۰ ۰
۰ ۰ ۰
ans(:,:,2) =
۱ ۲ ۳
۴ ۵ ۶
۷ ۸ ۹
ما همچنین می توانیم آرایه های چند بعدی با استفاده از توابع zeros, ones, rand ایجاد کنیم.برای مثال:
b = rand(4,3,2)
MATLAB دستور فوق را اجرا می کند و نتیجه زیر را برمی گرداند
b(:,:,1) =
۰٫۰۳۴۴ ۰٫۷۹۵۲ ۰٫۶۴۶۳
۰٫۴۳۸۷ ۰٫۱۸۶۹ ۰٫۷۰۹۴
۰٫۳۸۱۶ ۰٫۴۸۹۸ ۰٫۷۵۴۷
۰٫۷۶۵۵ ۰٫۴۴۵۶ ۰٫۲۷۶۰
b(:,:,2) =
۰٫۶۷۹۷ ۰٫۴۹۸۴ ۰٫۲۲۳۸
۰٫۶۵۵۱ ۰٫۹۵۹۷ ۰٫۷۵۱۳
۰٫۱۶۲۶ ۰٫۳۴۰۴ ۰٫۲۵۵۱
۰٫۱۱۹۰ ۰٫۵۸۵۳ ۰٫۵۰۶۰
ما همچنین می توانیم از تابع 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) =
۹ ۸ ۷
۶ ۵ ۴
۳ ۲ ۱
c(:,:,2) =
۱ ۲ ۳
۴ ۵ ۶
۷ ۸ ۹
c(:,:,3) =
۲ ۳ ۱
۴ ۷ ۸
۳ ۹ ۰
توابع آرایه
MATLAB توابع زیر امکان مرتب کردن، چرخش، پیمایش، تغییر شکل یا تغییر محتوی آرایه را فراهم می کند.
تابع | هدف |
Length | طول بردار یا بزرگترین بعد آرایه |
Ndims | تعداد ابعاد آرایه |
Numel | تعداد عناصر آرایه |
Size | ابعاد آرایه |
Iscolumn | تعیین اینکه آیا ورودی بردار ستونی است یا خیر |
Isempty | تعیین اینکه آرایه خالی است |
Ismatrix | تعیین اینکه ورودی ماتریس است |
Isrow | تعیین اینکه ورودی بردار سطری است |
Isscalar | تعیین اینکه ورودی اسکالر است |
Isvector | تعیین اینکه ورودی بردار است |
Blkdiag | ساخت ماتریس مورب از مقادیر ورودی |
Circshift | شیفت آرایه ها به شکل دایره ای |
Ctranspose | محاسبه مزدوج ماتریس |
Diag | ماتریس های مورب و قطر ماتریس |
Flipdim | فیلپ آرایه در راستای یک بعد مشخص |
Fliplr | فلیپ ماتریس از چپ به راست |
Flipud | فیلیپ ماتریس از بالا به پایین |
Ipermute | پیمایش معکوس ابعاد آرایه |
Permute | چیدن مجدد آرایه و با جابجایی سطر وستون |
Repmat | تکرار آرایه |
Reshape | آرایه ها را تغییر شکل می دهد |
rot90 | چرخش نود درجه ای آرایه |
Shiftdim | شیفت ابعاد آرایه |
Issorted | تعیین اینکه آیا عناصر مجموعه مرتب شده اند |
Sort | مرتب سازی عناصر آرایه به ترتیب صعودی یا نزولی |
Sortrows | مرتب سازی بر اساس ترتیب صعودی |
Squeeze | حذف تک تک عناصر |
transpose | انتقال |
vectorize | تبدیل عبارات به بردار |
حتما بخوانید: آموزش انواع داده ها در متلب به زبان کاملا ساده
مثال ها
مثال های زیر برخی از توابع ذکر شده در بالا را نشان می دهد:
توابع:
Length, Dimension and Number of elements
یک فایل اسکریپتی ایجاد کنید و کد زیر را در آن وارد کنید
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
توابع:
Circular Shifting of the Array Elements −
یک فایل اسکریپتی ایجاد کنید و کد زیر را در آن وارد کنید:
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 =
۱ ۲ ۳
۴ ۵ ۶
۷ ۸ ۹
b =
۷ ۸ ۹
۱ ۲ ۳
۴ ۵ ۶
c =
۸ ۹ ۷
۲ ۳ ۱
۵ ۶ ۴
مرتب سازی آرایه ها
یک فایل اسکریپتی ایجاد کنید و کد زیر را در آن وارد کنید:
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 =
۲۳ ۴۵ ۱۲ ۹ ۵ ۰ ۱۹ ۱۷
ans =
۰ ۵ ۹ ۱۲ ۱۷ ۱۹ ۲۳ ۴۵
m =
۲ ۶ ۴
۵ ۳ ۹
۲ ۰ ۱
ans =
۲ ۰ ۱
۲ ۳ ۴
۵ ۶ ۹
ans =
۲ ۴ ۶
۳ ۵ ۹
۰ ۱ ۲
Cell Array
آرایه های سلولی آرایه هایی از سلول ها هستند که هر سلول می تواند یک آرایه از ابعاد مختلف و انواع داده را ذخیره کند. استفاده بصورت زیر است
C = cell(dim)
C = cell(dim1,…,dimN)
D = cell(obj)
- C آرایه سلولی است
- dim یک مقدار صحیح اسکالر یا برداری است که ابعاد آرایه c را معلوم می کند
- dim1, …, dimN مقادیر اسکالر که ابعاد آرایه c را مشخص می کنند
- obj یکی از دو عبارت زیر است
- آرایه یا یک شی جاوا
- آرایه.NET از نوع System.String or System.Object
مثال
یک فایل اسکریپتی ایجاد کنید و کد زیر را در آن وارد کنید:
c = cell(2, 5);
c = {‘Red’, ‘Blue’, ‘Green’, ‘Yellow’, ‘White’; 1 2 3 4 5}
حتما بخوانید: کجا و به چه دلیل باید از نرم افزار متلب استفاده کنیم یا نکنیم؟
هنگام اجرای فایل، نتیجه زیر نمایش داده می شود:
c =
{
[۱,۱] = Red
[۲,۱] = ۱
[۱,۲] = Blue
[۲,۲] = ۲
[۱,۳] = Green
[۲,۳] = ۳
[۱,۴] = Yellow
[۲,۴] = ۴
[۱,۵] = White
[۲,۵] = ۵
}
دسترسی به داده ها در آرایه های سلولی
دو راه برای ارجاع به عناصر آرایه سلولی وجود دارد:
- مشخص کردن ایندکس در براکت اول، برای اشاره به مجموعه سلول ها
- مشخص کردن ایندکس در داخل بریس {}، برای ارجاع به داده ها در سلول های فردی
هنگامی که ایندکس ها را در براکت اول قرار می دهید، به مجموعه ای از سلول ها اشاره می شود. ایندکس های آرایه سلول در پرانتزها به مجموعه سلول ها اشاره دارند.به عنوان مثال:
c = {‘Red’, ‘Blue’, ‘Green’, ‘Yellow’, ‘White’; 1 2 3 4 5};
c(1:2,1:2)
MATLAB دستور بالا را اجرا می کند و نتیجه زیر را برمی گرداند:
ans =
{
[۱,۱] = Red
[۲,۱] = ۱
[۱,۲] = Blue
[۲,۲] = ۲
}
حتما بخوانید: آموزش عملیات و نمایه سازی منطقی در نرم افزار متلب به زبان ساده
همچنین می توانید به محتویات سلول ها با استفاده ازبریس{} دسترسی پیدا کنید.به عنوان مثال:
c = {‘Red’, ‘Blue’, ‘Green’, ‘Yellow’, ‘White’; 1 2 3 4 5};
c{1, 2:4}
MATLAB دستور فوق را اجرا می کند و نتیجه زیر را برمی گرداند
ans = Blue
ans = Green
ans = Yellow
باسلام و احترام
پاسخممنونم از اشتراک گزاری خوب و کاربردی.
من ۲۰ تا فایل txt دارم که در این فایلها، ۴ ستون اعداد (تقریبا ۱۰ هزار عدد) وجود دارد. میخوام هر یک از ستونها رو داخل ۱ سلول قرار بدم و بعد در ستون بعدی یک عدد ۰ یا ۱ قرار بدم . این کار رو می خواهم برای هر ۲۰ فایل txt انجام بدم.
لطفا راهنمایی بفرمایید.
با تشکر