تمام متغیرهای همه نوع داده ها در MATLAB آرایه های چند بعدی هستند. یک بردار یک آرایه یک بعدی و یک ماتریس یک آرایه دو بعدی است.
ما قبلا در مورد بردارها و ماتریس ها صحبت کرده ایم. در این فصل ما آرایه های چند بعدی را مورد بحث قرار خواهیم داد. با این حال، قبل از آن، اجازه دهید ما راجع به انواع خاصی از آرایه ها بحث کنیم.
آرایه های خاص در متلب (Special Arrays in MATLAB)
در این بخش، ما برخی از توابع که برخی از آرایه های خاص ایجاد می کنند را مورد بحث قرار خواهیم داد. برای تمام این توابع، آرگومان تنها یک آرایه مربع و آرگومان های دوبعدی آرایه مستطیلی ایجاد می کنند.
فانکشن ()zero یک آرایه با صفرها ایجاد می کند.
برای مثال
zeros(5)
با اجرای دستور بالا در متلب:
ans = ۰ ۰ ۰ ۰ ۰ ۰ ۰ ۰ ۰ ۰ ۰ ۰ ۰ ۰ ۰ ۰ ۰ ۰ ۰ ۰ ۰ ۰ ۰ ۰ ۰
فانکشن ()ones یک آرایه با اعداد یک ایجاد می کند.
برای مثال
ones(4,3)
با اجرای دستور بالا، متلب خروجی زیر را نشان می دهد
ans = ۱ ۱ ۱ ۱ ۱ ۱ ۱ ۱ ۱ ۱ ۱ ۱
فانکشن ()eye ماتریس واحد را ایجاد می کند.
برای مثال
eye(4)
خروجی ناشی از دستور بالا در متلب
ans = ۱ ۰ ۰ ۰ ۰ ۱ ۰ ۰ ۰ ۰ ۱ ۰ ۰ ۰ ۰ ۱
فانکشن ()round d یک ماتریس با اعداد تصادفی توزیع شده بین صفر و یک ایجاد می کند.
rand(3, 5)
اجرای دستور بالا در متلب، نتیجه زیر را برمی گرداند
ans = ۰.۸۱۴۷ ۰.۹۱۳۴ ۰.۲۷۸۵ ۰.۹۶۴۹ ۰.۹۵۷۲ ۰.۹۰۵۸ ۰.۶۳۲۴ ۰.۵۴۶۹ ۰.۱۵۷۶ ۰.۴۸۵۴ ۰.۱۲۷۰ ۰.۰۹۷۵ ۰.۹۵۷۵ ۰.۹۷۰۶ ۰.۸۰۰۳
مربع های جادویی در متلب (ماتریس های جادویی) (A Magic Square)
مربع جادویی یک مربع است که مقدار یکسان را تولید می کند، زمانی که به صورت سطری، ستونی یا مورب جمع می شوند. مقداری یکسان تولید می کنند و همه ی اعداد یکسان اند.
فانکشن ()magic یک آرایه مربع جادویی ایجاد می کند. آن یک مقدار واحد که اندازه ماتریس جادویی را نشان می دهد، میگیرد . این عدد اسکالر باید بزرگتر-مساوی ۳ باشد.
a= magic(4)
با اجرای دستور بالا، متلب مربع جادویی را به صورت زیر تولید می کند
a = ۱۶ ۲ ۳ ۱۳ ۵ ۱۱ ۱۰ ۸ ۹ ۷ ۶ ۱۲ ۴ ۱۴ ۱۵ ۱
شما مشاهده می کنید که از هر طرف(سطر، ستون یا مورب) آرایه ها را جمع کنید مقدار یکسانی را نتیجه می دهد
b = sum(a)
نتیجه اجرای دستور بالا
b = ۳۴ ۳۴ ۳۴ ۳۴
آرایه های چند بعدی در متلب ( Multidimensional Arrays in Matlab)
یک آرایه دارای بیش از دو بعد، یک آرایه چند بعدی در متلب MATLAB نامیده می شود. آرایه های چند بعدی در متلب MATLAB گسترش یافته یک ماتریس معمولی دو بعدی هستند.
به طور کلی برای ساخت یک آرایه چند بعدی، ابتدا یک آرایه دو بعدی ایجاد می کنیم و آن را گسترش می دهیم.
برای مثال،
یک آرایه دو بعدی ایجاد میکنیم.
a = [7 9 5; 6 1 9; 4 3 2]
خروجی ناشی از اجرای دستور بالا در متلب
a = ۷ ۹ ۵ ۶ ۱ ۹ ۴ ۳ ۲
آرایه a یک آرایه دو بعدی ۳ در ۳ است؛ ما می توانیم بعد سوم را به a اضافه کنیم، به صورت:
a(:, :, 2)= [ 1 2 3; 4 5 6; 7 8 9]
نتیجه اجرای دستور بالا در متلب
a = ans(:,:,1) = ۰ ۰ ۰ ۰ ۰ ۰ ۰ ۰ ۰ ans(:,:,2) = ۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹
ما همچنین می توانیم آرایه های چند بعدی با استفاده از function فانکشن های ()ones ، صفر ()zero و یا ()rand ایجاد کنیم.
برای مثال
b = rand(4,3,2)
وقتی دستور بالا در متلب اجرا می گردد، نتیجه زیر را برمی گرداند
b(:,:,1) = ۰.۰۳۴۴ ۰.۷۹۵۲ ۰.۶۴۶۳ ۰.۴۳۸۷ ۰.۱۸۶۹ ۰.۷۰۹۴ ۰.۳۸۱۶ ۰.۴۸۹۸ ۰.۷۵۴۷ ۰.۷۶۵۵ ۰.۴۴۵۶ ۰.۲۷۶۰ b(:,:,2) = ۰.۶۷۹۷ ۰.۴۹۸۴ ۰.۲۲۳۸ ۰.۶۵۵۱ ۰.۹۵۹۷ ۰.۷۵۱۳ ۰.۱۶۲۶ ۰.۳۴۰۴ ۰.۲۵۵۱ ۰.۱۱۹۰ ۰.۵۸۵۳ ۰.۵۰۶۰
هم چنین برای ساخت آرایه های چند بعد می توان از فانکشن ()cat استفاده کرد. آن یک لیست از آرایه ها را در یک بعد خاص مشخص می کند –
که به صورت زیر نشان داده می شود
B = cat(dim, A1, A2...)
که
- B یک آرایه جدید ایجاد شده است
- A2 ،A1 و … آرایه های به هم پیوسته اند
- 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 توابع زیر را برای مرتب کردن، چرخش، جایجایی، تغییر شکل یا تغییر محتوی آرایه فراهم می کند.
Function Purpose
length طول بردار یا بزرگترین ابعاد آرایه
ndims عدد ابعاد آرایه
numel عدد طول آرایه
size بعد آرایه
iscolumn تعیین اینکه آیا ورودی بردار ستونی است یا خیر
isempty تعیین اینکه آرایه خالی است
ismatrix تعیین اینکه آیا ورودی ماتریس است
isrow تعیین اینکه آیا ورودی بردار سطری است
isscalar تعیین اینکه آیا ورودی اسکالر است
isvector تعیین اینکه آیا ورودی بردار است
blkdiag ساخت بلوک ماتریس قطری از آرگومان ورودی
circshift آرایه شیفت دایره ای
ctranspose ترانهاده مزدوج مختلط
diag ماتریس های مورب و قطر ماتریس
fliplr Flips matrix from left to right
flipud Flips matrix up to down
ipermute Inverses permute dimensions of N-D array
permute Rearranges dimensions of N-D array
repmat Replicates and tile array
reshape Reshapes array
rot90 Rotates matrix 90 degrees
shiftdim Shifts dimensions
issorted Determines whether set elements are in sorted order
sort Sorts array elements in ascending or descending order
sortrows Sorts rows in ascending order
squeeze Removes singleton dimensions
transpose Transpose
vectorize Vectorizes expression
مثال ها
مثال های زیر برخی از توابع ذکر شده در بالا را نشان می دهد
طول، ابعاد و تعداد عناصر در متلب:
یک فایل اسکریپتی ایجاد کنید و کد زیر را در آن وارد کنید:
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 = ۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ 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 برای ایجاد آرایه سلولی استفاده می شود. نحو عملکرد cell :
C = cell(dim) C = cell(dim1,...,dimN) D = cell(obj)
که
- C یک آرایه سلولی است.
- dim یک عدد صحیح اسکالر یا بردار اعداد صحیح است که ابعاد آرایه سلول C را مشخص می کند.
- dim1، …، dim هستند عدد صحیح اسکالر هستند که ابعاد C را مشخص می کنند.
- obj یکی از موارد زیر است:
– آرایه جاوا یا شیء
– آرایه دات نت از نوع System.String یا System.Object
مثال
یک فایل اسکریپتی ایجاد کنید و کد زیر را در آن وارد کنید –
c = cell(2, 5); c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; ۱ ۲ ۳ ۴ ۵}
نتیجه پس از اجرای فایل
c = { [۱,۱] = Red [۲,۱] = ۱ [۱,۲] = Blue [۲,۲] = ۲ [۱,۳] = Green [۲,۳] = ۳ [۱,۴] = Yellow [۲,۴] = ۴ [۱,۵] = White [۲,۵] = ۵ }
دسترسی به داده ها در آرایه های سلولی در متلب
دو راه برای ارجاع به عناصر آرایه سلولی وجود دارد –
- محصور کردن شاخص ها در براکت اول () برای اشاره به مجموعه سلول ها
- محدوده شاخص ها در آکولاد {}، برای اشاره به داده ها در سلول های فردی
هنگامی که شاخص ها را در اولین ستون قرار می دهید، به مجموعه ای از سلول ها اشاره می شود.
شاخص های آرایه سلولی در پرانتزهای صاف به مجموعه سلول ها اشاره دارند.
برای مثال:
c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; ۱ ۲ ۳ ۴ ۵}; c(1:2,1:2)
خروجی ناشی از اجرای دستور بالا
ans = { [۱,۱] = Red [۲,۱] = ۱ [۱,۲] = Blue [۲,۲] = ۲ }
شما همچنین می توانید به محتویات سلول با نمایه سازی با آکولاد دسترسی داشته باشید.
برای مثال
c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; ۱ ۲ ۳ ۴ ۵}; c{1, 2:4}
با اجرای دستور بالا متلب نتیجه زیر را برمی گرداند
ans = Blue ans = Green ans = Yellow