آموزش برنامه نویسی در متلب: فانکشن نویسی در متلب

برنامه نویسی در متلب: آرایه ها

تمام متغیرهای همه نوع داده ها در 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

 

 

پست های مشابه

آموزش محاسبات جبری در متلب
آموزش محاسبات جبری در متلب
آموزش محاسبات جبری در متلب
آموزش محاسبات جبری در متلب
آموزش محاسبات جبری در متلب
آموزش محاسبات جبری در متلب

یک نظر ارسال کنید