ماتريس هاي چند بعدي در متلب

گاهي شما مجبوريد از يك سري  پارامترهاي استفاده كنيد كه هركدام از اين پارامترها خود داراي چندين مشخصه و مقادير معلوم و ... مي باشند ، اگر با روند ماتريسهاي معمولي اقدام به ذخيره اطلاعات نمائيد ،( مثلا روش المان بلندي در تحليل مسائل مختلف تيرو ... ) ، شايد در عمل دچار سردرگمي و مشكل گرديد ، لذا در مطلب يكسري توابع مي باشند كه توسط آنها مي توانيد ماتريس با لايه هاي مختلف در مطلب ايجاد نمائيد  :

 

 

 

 

 

 

يكي از توابعي كه براي ايجاد چنين ماتريس هایي در نرم افزار matlab مي توان بكار برد،  دستور cat  مي باشد نحوه استفاده از اين دستور بدين صورت است : 

   cat(تعداد لايه هاي ماتريس  , نام ماتريس 1,نام ماتريس 2,….)

به مثال زير جهت درك بيشتر توجه فرمائيد :

a=[1 0;0 1];

b=[2 2;2 2];

c=[0 3;3 0];

d=cat(3,a,b,c)

d(:,:,1) =

     1     0

     0     1

 

d(:,:,2) =

     2     2

     2     2

 

d(:,:,3) =

     0     3

     3     0

 

size(d)

ans =

     2     2     3

  چند تابع بسيار كاربردي در ماتريسها :

       ماتريس دوران و يا تابع دوران يك ماتريس در نرم افزار مطلب  با دستور (rot(a,n  بيان مي شود كه در آن ماتريس a به اندازه n*90 درجه دوران می يابد و n يك عدد صحيح است در صورتيكه n=1 باشد لازم نيست بنويسيم  :

X =

    1    2    3

    4    5    6

    7    8    9

Y = rot90(X) % rotated by 90 degrees

Y =

    3    6    9

    2    5    8

    1    4    7

براي دورانهاي تحت زاويه  ماتريسهاي دوران زير بيان مي شود كه به بردار  مورد نظر ضرب می گردد:

دروان تحت زاويه  حول محور x ها :

            

دروان تحت زاويه  حول محور y ها :

            

دروان تحت زاويه  حول محور z ها :

            

تابع (diag(a  در نرم افزار متلب قطر اصلي ماتريس a  را برمي گرداند :

 

a =[

    16     5     9     4

     3    10     6    15

     2    11     7    14

    13     8    12     1 ]

 

diag(A)

 

ans =

   

    16

    10

     7

     1

 

 

 

 

در ماتريسهاي غير مربع چون قطر اصلي را دقيقا نميتوان  تعيين كرد  كاربرد تابع بصورت ( diag(a,k  كه در آن k عدد صحيح است‹ تاثير اين عدد را با مثال زير بهتر مي توانيد درك نمائيد :

 

 

 

h =[

     1     2     3

     3     4     5

     6     7     8

     7     9     7]

 

diag(h)

ans =

     1

     4

     8

 

diag(h,1)

ans =

     2

     5

 

diag(h,2)

ans =

     3

 

diag(h,-1)

ans =

     3

     7

     7

 

diag(h,-2)

ans =

     6

     9

ماتريسهاي بالا مثلثي و پائين مثلثي با توابع (triu(a,k  و (tril(a,k  در نرم افزار matlab بيان مي گردند كه در آن k عدد صحيحي است كه براي ماتريسهاي مربع برابر با 0 و براي ماتريسهاي غير مربع با توجه به شكل فوق ميتوان به دلخواه نسبت به گوشه سمت چپ بالا تعين كرد  :

triu(ones(4,4),-1)

ans =

    1    1    1    1

    1    1    1    1

    0    1    1    1

    0    0    1    1

 

tril(ones(4,4),-1)

ans =

    0    0    0    0

    1    0    0    0

    1    1    0    0

    1    1    1    0

ماتريس كرنیكر ( kronecker tensor  ) :

ماتريس كرنوكه يكي از ماتريسهاي كاربردي در حل مسائل مكانيك محيط پيوسته و ... مي باشد نحوه عملكرد آن بدين صورت است كه اگر دو ماتريس  داشته باشيم سايز  ماتريس حاصل بصورت m*p x n*q  خواهد بود و نحوه عملكرد بصورت زير است :

% If X is 2-by-3, then kron(X,Y) is

 [ X(1,1)*Y X(1,2)*Y X(1,3)*Y

   X(2,1)*Y X(2,2)*Y X(2,3)*Y ]

به مثال زير توجه فرمائيد :

a=[1 2 3;3 4 5];

b=[2 8 7 4;5 8 9 4];

 

A = kron(a,b)

A =

 2   8    7    4    4   16   14     8    6    24   21   12

 5   8    9    4   10   16   18     8   15    24   27   12

 6   24  21   12    8   32   28    16   10    40   35   20

15   24  27   12   20   32   36    16   25    40   45   20

 

  ماتريسها ( آرايه هاي چند بعدي )  :

 در بخش قبلي به دستور cat براي ايجاد ماتريسها چند لايه  منشكل از چند ماتريس در نرم افزار مطلب اشاره كرديم ، حال ميخواهيم روند فوق را با ارائه روش ايجاد ماتريسها چند بعدي و يا فضائي تكميل نمائيم ، شما مي توانيد يك ماتريس فضائي ايجاد كنيد يعني علاوه بر گسترش يك ماتريس در امتداد x,y آنرا در جهت z نيز گسترش دهيد و آدرس آرايه مورد نظرتان را با سه مختصات (x,y,z) ) بيان نمائيد  به مثال زير توجه فرمائيد :

a=zeros(2,2,3)

a(:,:,1) =

     0     0

     0     0

a(:,:,2) =

     0     0

     0     0

a(:,:,3) =

     0     0

     0     0

a(1,1,2)=45;

a(1,2,2)=4;

a(2,1,2)=-3;

a(2,2,2)=5;

a(1,1,3)=-4;

a(1,2,3)=7;

a(2,1,3)=1;

a(2,2,3)=-3;

 

a

a(:,:,1) =

     5    -6

     6    -9

a(:,:,2) =

    45     4

    -3     5

a(:,:,3) =

    -4     7

     1    -3

در مثال فوق  ابتدا ماتريس صفر a به اندازه   تشكيل داده شده و چون به حالتي سه بعدي اعداد قابل نمايش نيستند مطلب صفحه به صفحه ماتريس را براي شما نشان ميدهد و در ادامه برنامه ما آرايه هاي آنرا با اعداد مورد نظر خود پركرديم و در آخر شما ماتريس تغيير يافته a را ميتوانيد با اعداد جانشين شده ببينيد .

شما بسته به نياز ميتوانيد لايه هاي ماتريس را به هر چند تا كه بخواهيد افزايش دهيد و از اين نظر محدوديتي وجود ندارد . قابل ذكر است كه تمامي دستوراتي كه قبلا در مورد ماتريسها بيان كرديم با اضافه كردن بعد سوم يا z به آن در ماتريسهاي فضائي نيز قابل اجرا ميباشد مثلا براي ايجاد يك ماتريس واحد با سه سطر وستون و پنج لايه بفرم (ones(3,3,5 .

 

مثال :

معادله زير را در نظر بگيريد :

                                                         

برنامه اي  در نرم افزار مطلب بنويسيد كه به ازاي مقادير ثابت  و  با گام 1 مقادير x رامحاسبه نموده و نمودار آنرا در matlab ترسيم نمايد .

(مبحث ترسيم نمودارها در مطلب بعدا بطور كامل بيان خواهد شد و دراينجا فقط بخاطر حضورذهن بعدي آورده شده است ).

حل :

يك M-file در نرم افزار matlab باز كرده و برنامه زير را در آن بنويسيد :

 

clc;

clear all;

a=90;

b=50;

x=1:1:10;

y=floor(log(a/b)./log(1+x/100));

stem(x,y)  % plot of problems

xlabel('x')

ylabel('y=log(a/b)/log(1+x)')

title(' Example')

 

خروجي برنامه matlab بصورت ترسيمه زير است:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

دیدگاه خود را بنویسید

دیدگاه پس از تائید مدیریت منتشر می شود.