کانال بله, جهت پشتیبانی و اطلاع رسانی کانال بله, جهت پشتیبانی و اطلاع رسانی
عضویت

آرایه در متلب

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

 

 

1394/09/03 27236 1950
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

نظرات خود را ثبت کنید...