الـمـصـفـوفـات

الـمـصـفـوفـات 

 
 
تتكون المصفوفة من عدد من الصفوف وعدد من الأعمدة حيث يرمز بمتحول ما لكل منهما وتستخدم المصفوفات في كثير من التطبيقات الهندسية لحل المشاكل المعقدة , وعناصر المصفوفة ممكن أن تكون قيم حقيقية أو عقدية , ويرمز عادة للمصفوفة :
Matrixname(m,n)
 عدد الأسطر  
  n عدد الأعمدة
 
 
و يمكننا التعامل في الماتلاب مع عدة أنواع من المصفوفات نذكر منها :
1) المصفوفات الرقمية .
2) المصفوفات المحرفية (Cell and structure array) .
 

العمليات الأساسية على المصفوفات
إنشاء مصفوفة (4,4)  باسم 
 >> A = [3 4 4 3 ; 4 5 6 7 ; 5 6 7 4 ; 4 5 6 7]                     
 
 
إدخال السطر السابق في سطر الأوامر في ماتلاب يشكل لدي مصفوفة مربعة بالقياس سابق الذكر حيث نلاحظ أنه عندما نريد الانتقال من سطر لسطر لإدخال عناصر مصفوفة نضع فاصلة منقوطة وذلك كما هو موضح .
 
يتم استدعاء قيم عناصر مصفوفة لحذفها أو التعديل عليها أو إجراء العمليات المختلفة بعدة طرق , حيث يمكننا استدعاء عنصر من مصفوفة أو سطر أو عمود , يمكننا أيضاً استدعاء مصفوفة جزئية من مصفوفة. يمكن مثلاً استدعاء عنصر من مصفوفة عن طريق رقم السطر و رقم العمود و ذلك بكتابة :
 

>> A(3,2)
                          ans = 6 

وبطريقة مشابهة يمكن استدعاء عنصر من مصفوفة حسب ترتيب العنصر , بكتابة :
>> A(8)
                         ans = 5      

 

>> A(1)
                         ans = 7       
 
يمكن إضافة عمود جديد للمصفوفة الجديدة بحيث يكون العنصر الأخير من السطر الثالث مساوي لقيمة معينة و لتكن في مثالنا "9" بكتابة :

>>  A(3,6) = 9 
ويمكن حذف قيم و عناصر مصفوفة بالاستفادة من [ ] , فعلى سبيل المثال كتابة السطر التالي تؤدي لحذف كامل عناصر العمود الثاني :

 

>> A(:,2) = [ ]
 
مصفوفات خاصة :
1 – تشكيل مصفوفة واحدية     ones(m,n)
2 – تشكيل مصفوفة صفرية zeros(m,n)   
3 - تشكيل مصفوفة محايدة     eye(m,n)
 
 
عمليات أخرى على المصفوفات

 

تتيح لنا التوابع الكثيرة في الماتلاب تنفيذ عدد كبير من العمليات الخاصة بالمصفوفات , فيمكننا مثلاً إيجاد مقلوب مصفوفة و كذلك منقولها كما يمكن إيجاد رتبة مصفوفة و الكثير من العمليات الأخرى الخاصة بالمصفوفات .

 

     T = D’                      S = inv(D)      V = rank(D)  
 
 


 

 
عمليات متقدمة على المصفوفات
التعامل مع المصفوفة وتغيير شكلها وتعيين حجمها
تتيح لنا بعض التوابع إمكانية الحصول على خصائص المصفوفة , كما تتيح توابع أخرى إمكانية إعادة تشكيل المصفوفة أو تدويرها.
فمثلاً التابع size يعيد مصفوفة تحوي قيمتين الأولى تمثل عدد أسطر المصفوفة بينما القيمة الثانية تمثل عدد الأعمدة , بينما يقوم التابع length بإعادةمصفوفة تحوي قيمة واحدة تمثل طول أطول سلسلة في المصفوفة و يستخدم هذا الأخير غالباً مع المصفوفات الشعاعية التي تكون عبارة عن سطر واحد و ذلك لمعرفة عدد عناصر هذا الشعاع. التابع reshape يسمح بإعادة تشكيل المصفوفة فيمكن مثلاً تحويل المصفوفة من سطرين و عمود إلى عمودين و سطر و هكذا.
بعض التوابع الخاصة المساعدة لإنشاء المصفوفات  
        إنشاء مصفوفة متزايدة خطياً معلوم عدد عناصرها
>> linspace(a,b,c)
      a القيمة البدائية       b القيمة النهائية        c عدد عناصر المصفوفة

       إنشاء مصفوفة متزايدة لوغاريتمياً معلوم عدد عناصرها
>> logspace(a,b,c)
                   a القيمة البدائية       b القيمة النهائية        c عدد عناصر المصفوفة                        
  إنشاء مصفوفة سحرية
magic(d)    حيث d أبعاد المصفوفة   
تحقق هذه المصفوفة أن :

مجموع عناصر كل عمود يساوي مجموع عناصر كل سطر و يساوي مجموع عناصر القطر الرئيسي .

يمكنك الإطلاع على أنواع أخرى من التوابع الخاصة بالمصفوفات في الرابط التالي : 
http://www.mathworks.com.au/help/matlab/constants-and-test-matrices.html
قم بمحاولة تنفيذ كل تابع في الماتلاب و ناقش النتائج .

كل ما سبق ذكره يتعلق بالمصفوفات الرقمية , يمكنكم مشاهدة الفيديو التالي الذي يتم فيه شرح المصفوفات الخلوية cell array في مقدمة بسيطة .

 

 
 

 

 
 

 

 
 
 
 
 
 
 
أخـيـراً اتـمـنـى لـكـم مـشـاهـدة مـمـتـعـة لـهـذا الـدرس
 
 

تمرين -1- :  ( إنشاء المصفوفة)
>> a=[1 2;3 4]
a =
     1     2
     3     4
>> a=[1 2 3]
a =
     1     2     3
>> a=[1;2;3]
a =
     1
     2
     3
>> a=[1 2 3]'
a =
     1
     2
     3
>> a=[1 2];
>> A=[a;3 4]
A =
     1     2
     3     4
>> a=[1;3];
>> b=[2;4];
>> A=[a b]
A =
     1     2
     3     4
>> a=[1 2];
>> b=[3 4];
>> c=[5;6];
>> A=[[a;b] c]
A =
     1     2     5
     3     4     6
 
-----------------------------------
تمرين-2- :
 
>> d=[0:5]
d =
     0     1     2     3     4     5
>> d=[0:2:6]
d =
     0     2     4     6
>> a=zeros(3,2)
a =
     0     0
     0     0
     0     0
>> a=ones(3,2)
a =
     1     1
     1     1
     1     1
>> a=eye(3)
a =
     1     0     0
     0     1     0
     0     0     1
>> A=[magic(4) ones(4,1)]
A =
    16     2     3    13     1
     5    11    10     8     1
     9     7     6    12     1
     4    14    15     1     1
 
-----------------------------------

تمرين -3- :
(إستدعاء عنصر من المصفوفة أو مجموعة من العناصر ، والإضافة والحذف)
>> A=magic(3)
A =
     8     1     6
     3     5     7
     4     9     2
>> A(2,2)
ans =
     5
تغيير قيمة عنصر في المصفوفة
>> A(2,1)=9
A =
     8     1     6
     9     5     7
     4     9     2
تغيير قيمة أكثر من عنصر :
>> A(1,2:3)=[0 0]
A =
     8     0     0
     9     5     7
     4     9     2
 إستدعاء سطر من المصفوفة :
>> A(2,:)
ans =
     9     5     7
إستدعاء عمود من المصفوفة :
>> A(:,3)
ans =
     0
     7
     2
>> A(2,4)=6
A =
     8     0     0     0
     9     5     7     6
     4     9     2     0
>> A(:,2:end)
ans =
     0     0     0
     5     7     6
     9     2     0
حذف عمود من المصفوفة
>> A(:,1)=[]
A =
     0     0     0
     5     7     6
     9     2     0
>> C=A(1:3,2:3)
C =
     0     0
     7     6
     2     0
 
-----------------------------------

تمرين -4-:
>> a='This is a character array'
a =
This is a character array
>> a=['test';'testing']
سيعطي خطأ لأن عدد العناصر في كلا السطرين مختلف ،لذلك نترك فراغ حتى يتساوى العدد كمايلي :
>> a=['test   ';'testing']
a =
test  
testing
>> a=['test   ' 'a';'testing' 'b']
a =
test   a
testingb
>> a
a =
test   a
testing
>> a=['test   ';'testing'];
>> a(2,5:7)
ans =
ing
>> a(2,5:7)='   '
a =
test  
test
 
-----------------------------------

تمرين-5- :
 
  • + :  الجمع
>> a=[1 2]+[3 4]
a =

     4     6
 

  • - :  الطرح
>> a=[3 4]-[1 2]
a =

     2     2
 

  • * :  الضرب
>> a=[1 2;3 4]*[3;6]
a =
    15

    33
 

  • / :  القسمة
>> a=[6 8]/2
a =

     3     4
 

  • ^ :  رفع إلى قوة
>> a=[1 2;3 4]^2
a =
     7    10
    15    22
-------------
>> a=[1 2;3 4].^2
a =
     1     4
     9    16
>> a=[1 2;3 4]'
a =
     1     3
     2     4
>> a=2*[1 2;3 4]*[3;6]
a =
    30
    66
>> a=[9 16]./[3 4]
a =
     3     4
>> a=[1 2;3 4]*[5 6;7 8]
a =
    19    22
    43    50
>> a=[1 2;3 4].*[5 6;7 8]
a =
     5    12
    21    32
>> a=[1 2;3 4]^2
a =
     7    10
    15    22
>> a=[1 2;3 4].^2
a =
     1     4
     9    16
>> a=log([1 2])
a =
         0    0.6931