Professional Documents
Culture Documents
البرمجة بلغة
Dr. Hammed
Computer Science
إعـداد
نيسان 2008
1
البرمجة بلغة MATLAB
المصــــــــــادر:
MATLAB 6.5 -1الدليل المرجعي
ـ والتعليمي ,المهندس عبد الكريم البيكو( ,دار شعاع للنشر).
MATLAB Help Version 6.5 -2
www.mathworks.com -3
2
البرمجة بلغة MATLAB
3
البرمجة بلغة MATLAB
Dr. Hammed
Computer Science
4
البرمجة بلغة MATLAB
5
البرمجة بلغة MATLAB
نافذة أساسية للعمل هي نافذة األمر ،Command Windowوالتي من خاللها يتم التعامل بكتابة وتنفيذ
ـ بصورة مباشرة أو غير مباشرة.
األوامر
-5تعتبر النوافذ الداخلية الظاهرة أسمائها في قائمة Viewكما في الشكل رقم
ـ ( )3هي من مكونات نافذة
برنامج MATLABولكل نافذة منها عملها الخاص وكما يلي-:
6
شكل ( :)4نافذة األمر Command Windowونافذة ساحة العمل Workspace.
البرمجة بلغة MATLAB
ج -نافذة الدليل الحالي Current Directory:وهي أيضا واجهة رسومية تحدد الدليل الحاوي للملف
الذي يتعامل معه برنامج .MATLAB
د -نافذة المساعدة Help:وهي نافذة تخاطبية (رسومية) تسمح لك بالبحث واستعراض
ـ الوثائق بشكل
مباشر.
و -لوحة البرامج التنفيذية Launch Pad:وهي عبارة عن نافذة تستعرض بنية شجرية لألدوات
والبرامج التنفيذية.
ـ السابقة Command History:تمكنك هذه النافذة من إعادة تنفيذ األوامر السابقة
هـ -نافذة األوامر
المنفذة في نافذة األمر بدالً من كتابتها مرة أخرى.
ـ الداخلية لنافذة البرنامج MATLABبعد تفعيلها ....
والشكل ( )5يبين النوافذ
شريط القوائم ()lists bar
7
البرمجة بلغة MATLAB
مالحظات:
-1كل متغير في MATLABعبارة عن مصفوفة ،لغة MATLABموجهة بالمصفوفات
ـ
حتى وان كانت المتغيرات أعدادًا مفردة (.)scalar
-2األمر clearضمن Workspaceيستخدم
ـ لحذف المتغيرات والدوال من الذاكرة .
-3األمر clcضمن Workspaceيستخدم لمسح نافذة األمر.Window Command
-4يمكن إظهار النتائج العددية في لغة MATLABبتنسيقات أظهار مختلفة:
…,format short, long, short e, long e, hex, blank, +, rat
-5يمكن تنفيذ ( demo )demonstrationكايعازات جاهزة في MATLABمن خالل:
Help أختر الموضوع المحدد (مثال Demos )Toolboxes
يمكن االستفادة منها في-:
ـ ( .)Helpج -عرض شفرة
ب -تعليم أكثر حول الموضوع أ -تنفيذ .Demos
.M–file البرنامج .د -استنساخ شفرة البرنامج من Demoإلى
Start مالحظـــــة :يمكن الدخول إلى Demosمن
ـ االيعاز في
-6ثالث نقاط متتالية ( )...في نهاية السطر مسبوقة بفراغ للداللة على استمرار
السطر التالي.
-7فارزة منقوطة بعد اإليعاز تمنع طباعة المتغير أو الناتج في نافذة Commandوكذلك في
نافذة .Editor
-8إشارة النسبة المئوية ( )%تستخدم للتعليق فكل نص يأتي بعدها يعتبر نص تعليق ،مثل:
% This Program Compute Area
-9ملفات MATLABتسمى M–filesوتكون توسعها ( ,)m.مثالً (.)examplel.m
-10االحتفاظ بكتابة االيعازات السابقة والالحقة في نافذة Commandبحركة السهم لألعلى
واألسفل.
8
البرمجة بلغة MATLAB
تعليق
رفع التعليق
هيكلة المقطع
9
البرمجة بلغة MATLAB
الصلب عبر اختيار االختيار Saveمن القائمة Fileأو الخزن ضمن شريط أدوات سطح
مكتب .)MATLABكما في الشكل (.)9
مالحظة:
ـ ( )Untitle1فباإلمكان إعطاء االسم الذي يرغب فيه
عند الخزن يحمل البرنامج اسم افتراضي
المبرمج أو البقاء عليه.
خزن البرنامج
تنفيذ البرنامج
شكل ( :)7نافذة كتابة البرامج (محرر الملفات النصية). شكل ( :)6إنشاء ملف جديد.
10
البرمجة بلغة MATLAB
;tic
)(commands
;t = toc
للبحث عن إيعاز في الـ Helpمن خالل: -19
Help MATLAB Help
ـ للبحث عن اإليعاز ،منها-:
هناك عدة طرق
1- Contents.
2- Index.
3- Search.
4- Demos.
11
البرمجة بلغة MATLAB
أمثـــــلــة:
function ……. if ……. …….
……. ……. …….
……. else …….
……. ;break ;break
;break }توقف في حالة {else .…….
}توقف تنفيذ الدالة فقط{ ….…. ال تنفذ
……
;return خروج من الدالة
……..
ال تنفذ
.…...
12
البرمجة بلغة MATLAB
الثوابت Constants:
يوجد في لغة MATLABأنواع متعددة من الثوابت أهمها-:
(أ) الثوابت العددية :Numerical Constants
ـ ولها عدة أشكال هي:
وتتكون من عدد من األرقام
18- ,472 ,23+ ,0 مثل: ( )1الثوابت الصحيحة:
مالحظة :أكبر عدد صحيح مستخدم.
>> bitmax
= ans
9.007199254740991e+015
والتي تقابل 1-253
مثل18.0- ,472.5 ,51.8 ,0.0 : ( )2الثوابت الحقيقية:
>> realmin :مالحظة
= ans
2.225073858507201e-308
>> realmax
= ans
1.797693134862316e+308
13
البرمجة بلغة MATLAB
>> pi
= ans
3.146
( )3الثوابت الحقيقية المدونة تدوينًا يائيًا :حيث تحول الصيغة الجبرية 10Nإلى صيغة MATLAB
يائية ENفمثال تصبح 103 2.0في الجبر 2.0E3 :أو 2.0E+3بالتدوين اليائي في MATLAB
وكذلك تصبح -102 1.7في الجبر 1.7E2- :في التدوين اليائي وكذلك تصبح :0.0032
10-3 3.2E-3 : 3.2
مثل2i , 6 - 9i , 6 + sin (0.5) * j , sqrt (-2) - 1 : ( )4الثوابت العقدية:
= i = j 1 حيث:
c = -7.7782 – 4.9497i مثال :1إذا كان:
cr = real (cr = -7.7782 )c ـ الجزء الحقيقي
فالستخراج
ci = -4.9497 )ci = imag (c وإلستخراج الجزء التخيلي
)c2 = 3 * (2 – sqrt (-1) * 3 مثال 6.000 – 9.000i:2
Numericاـلرقمية (اـلع
ـددية)
تدخل في العمليات الحسابية ال تدخل في العمليات الحسابية ال تدخل في العمليات الحسابية
(تستخدم لتقليل حجم الخزن)
مثال :2 مثال :1
;>> x = 100 ;>> x = 100
14
البرمجة بلغة MATLAB
15
البرمجة بلغة MATLAB
.2أسماء المتغيرات حساسة لحالة الحرف ( COST, CoST, cost, Costمتغيرات مختلفة,
وكذلك Aو.) a
.3حرف ) l (small letterفي لغة MATLABيشبه رقم
ـ 1.
.4يمكن ألسماء المتغيرات أن تحوي 63رمزا وسيهمل أي رمز زائد عن . 63
ـ أو األحرف أو
.5يجب أن تبدأ أسماء المتغيرات بحرف متبوعا بأي عدد من األرقام
. underscoreوال يجوز استخدام
ـ الرموز الخاصة أو الفراغ.
ـ الصغيرة (.)… ,if, while, input
.6جميع أوامر MATLABتكتب بالحروف
هناك عدة أنواع من المتغيرات في لغة MATLABوهي:
(أ) المتغيرات العددية Numerical Variables:
ـ من Aإلى Zو aإلى bويمكن أن يحتوي على أرقام
ـ تتكون من حرف واحد أو مجموعة من الحروف
ـ بشرط أن يبدأ بحرف (خليط من أرقام وحروف
ـ والحروف
من 0إلى 9ويمكن أن تكون سلسلة من األرقام
مبدوءة بحرف) ويمكن كذلك أن يحتوي المتغير على underscoreحتى 63رمزًا .وتكون قيمة المتغير
عددية ( صحيح ،حقيقي ،عقدي أو أسي).
مثال:
Ali_Ahmed, X2, S2, ks, K
التعبير الحسابي
ـ فيها
ـ تجمع بينهما عمليات حسابية ويستخدم
يتكون التعبير الحسابي من مجموعة من الثوابت والمتغيرات
ـ الحسابية مثل ^ ،* ،/ ،- ،+واألمثلة آالتية تعبر عن تعابير جبرية صيغت بلغة .MATLAB
الرموز
التعبير بلغة MATLAB التعبير الجبري
a–3*b a – 3b
c ^ 2 – 10 c2 - 10
(a ^ 2 + b ^ 2) / 12 a2 + b2 / 12
)m * (7 * d – 8 * g )m (7d – 8g
ـ (األولوية) Rule of Precedence
قاعدة األسبقية
16
البرمجة بلغة MATLAB
1
2
A
يكافئ في الجبر ـ التعبير (A / )B + C
بينما يكافئ
B C
1
2
الن الجمع داخل األقواس يجري أوالً حسب األولوية ثم يقسم ِ Aعلى نتيجة القوس.
مثال :التعبير
M) ^ A - B / (K * F - X
2 1
3
4
5 تنفيذ العمليات حسب الخطوات التالية:
تأخذ األقواس األولوية األولى ،وتنفذ العمليات داخلها حسب األولوية أيضا.
العملية األولى :رفع Xإلى األس Mلتصبح كمية واحدة.
العملية الثانية :ضرب Kفي Fلتصبح كمية واحدة.
17
البرمجة بلغة MATLAB
العملية الثالثة :طرح نتيجة العملية األولى من نتيجة العملية الثانية وتصبح النتيجة كمية واحدة.
العملية الرابعة :تقسم Bعلى نتيجة العملية الثالثة وتصبح النتيجة كمية واحدة.
العملية الخامسة :تطرح نتيجة العملية الرابعة من Aوتصبح النتيجة كمية واحدة.
1
2
3
يمكن مالحظة أن إشارة المساواة تمثل آخر أولوية حسابية بعد انتهاء جميع العمليات الحسابية في الطرف
األيمن.
(ب) المتغيرات الرمزية String Variables:
ـ المتغيرات العددية والفرق الوحيد بينهما هو أن قيمة المتغير الرمزي تكون رمزية
تشبه في تركيبها
(محصورة بين عالمتي اقتباس).
ـ String Statement
الجملة الرمزية
ـ األيمن يكون رمزيًا
ـ الجملة الحسابية والفرق الوحيد بينهما هو أن المتغير في طرفها
تشبه في تركيبها
ـ األيسر يكون متغير.
(محصورة بين عالمتي اقتباس) والتعبير في طرفها
واألمثلة التالية توضح ذلك:
;'A = 'Hameed Abdul–Kareem
18
البرمجة بلغة MATLAB
ـ :Library Functions
االقترانات المكتبية
يتوفر في معظم الحاسبات باستخدام لغة MATLABاقترانات رياضية يكثر استعمالنا لها ،مثل
الدوال واالقترانات المثلثية واللوغارتيمية وغيرها ويمكن استدعائها في أي وقت ،ومنها:
المعـــــــــنى االقتران
ـالجذر التربيعي Sqrt
القيمة المطلقة abs
ـ إلى قوة بأساس 10 المرفوع exp
ـ الطبيعياللوغاريتم log
ـ العشري اللوغاريتم log 10
اللوغاريتم ذو األساس 2 log 2
جيب الزاوية sin
جيب تمام الزاوية Cos
ظل الزاوية Tan
ظل معكوس الزاوية atan
التدوير باتجاه الصفر fix
التدوير باتجاه الالنهاية السالبة floor
التدوير باتجاه الالنهاية الموجبة ceil
التدوير باتجاه أقرب عدد صحيح round
الجزء الصحيح من حاصل القسمة mod
بقية القسمة rem
إشارة العدد إذا كانت موجبة ,سالبة ,صفر Sign
القسم التخيلي imag
القسم الحقيقي real
العوامل األولية factor
يعيد trueإذا كان العدد أوليا Isprime
ينشئ قائمة باألعداد األولية primes
ـ األعظم القاسم المشترك gcd
ـ األصغر المضاعف المشترك lcm
19
البرمجة بلغة MATLAB
مثال:
;>> x = 2.6
;)>> y1 = fix (x); y2 = floor (x); y3 = ceil (x); y4 = round (x
y1 = 2
y2 = 2
y3 = 3
y4 = 3 س /مالفرق بين الدوال األربعة أعاله؟
مالحظة:
ـ المكتبية أولوية بعد األقواس عند تنفيذ العمليات الحسابية.
تأخذ االقترانات
sin (a + b) – m / sqrt )(d
1 3
2
4
يكون تنفيذ العمليات الحسابية كما يلي:
5
العملية األولى :إيجاد قيمة جمع aمع .b
العملية الثانية :إيجاد قيمة جيب الزاوية لناتج العملية (.)1
العملية الثالثة :إيجاد قيمة الجذر التربيعي لــ .d
العملية الرابعة :إيجاد ناتج قيمة ناتج قسمة mعلى ناتج العملية (.)3
العملية الخامسة :طرح ناتج العملية ( )4من ناتج العملية ( )2وتصبح النتيجة النهائية كمية واحدة (عددًا
واحدًا).
ـ قيمتها في :MATLAB
ـ مكتبية في الجبر وإزائها
مثال :تمثل الجمل التالية إقترانات
20
البرمجة بلغة MATLAB
x y
)t = abs (x – sqrt (y)) / (a + m t
)( a m
3
)g = p ^ (3 / 2) + (a * b / c) ^ (1 / 5 g p 2 5 ab
c
21
البرمجة بلغة MATLAB
مما يعني هدر في الوقت والجهد .ولحل هذه المشكلة ،عمد برنامج MATLABإلى إجراء العمليات
الرياضية على مصفوفة من البيانات.
المصفوفة البسيطة
ـ يتم
ـ وبطريقة سلسلة ،إذ أن إنشاء المصفوفات يتعامل برنامج MATLABمع المصفوفات
ـ بشكل مباشر
بطريقة سهلة جدًا.
]x = [1, 3, 7, 9, 20 :مثال ()1
0 x حيث )y = sin (x مثال (:)2
0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9
x 0
y 0 0.31 0.59 0.81 0.95 1 0.95 0.81 0.59 0.31 0
x = [0 0.1 * pi .2 * pi .3 * pi .4 * pi .5 * pi .6 * pi .7 * pi .8 * pi .9 * pi
]pi
)y = sin (x
يقتصر كل ما عليك إلنشاء مصفوفة في لغة MATLABعلى أن تبدأ بقوس يساري ثم تدخل القيم
المطلوبة بفراغ أو (فارزة) ثم أغلق المصفوفة بقوس يميني .وعندما تريد كتابة ) sin (xفأن برنامج
MATLABيعلم بأنك تريد حساب الجيب لكل قيم xويقوم بوضع النتائج في مصفوفة أخرى هي y
وتجعل هذه اإلمكانية MATLABمختلفة عن لغات البرمجة األخرى.
عنونة المصفوفة أو الفهرسة
ـ الفهرسة له.
المصفوفة أعاله تتكون من 11عنصر ،يمكن الوصول إلى أي عنصر منها باستخدام
)>> x (3
= ans
0.6283
)>> y (5
= ans
0.9511
ـ بنفس الوقت فأن برنامج MATLABيستخدم
ـ النقطتين المتعامدتين (.): ولتعريف مجموعة من العناصر
)>> x (1: 5
22
البرمجة بلغة MATLAB
= ans
0 0.3142 0.6283 0.9425 1.2566
هذه هي العناصر الخمسة األولى من المصفوفة ،xويجبرك الرمز 5 :1بأن تبدأ بالرقم 1وتعدّ حتى
ـ .5
الرقم
مثال:
)>> x (7: end
= ans
1.885 2.1991 2.5133 2.8274 3.1416
وهنا تكمل من العنصر السابع وحتى نهاية المصفوفة ،إذ تشير الكلمة endإلى آخر عنصر من عناصر
المصفوفة.
مثال:
)>> y (3: -1: 1
= ans
0.5878 0.3090 0
هنا العنصر الثالث ثم الثاني ثم األول بترتيب عكسي ،ويخبرك الرمز 1 :1- :3بأن تبدأ بالرقم 3وتعدّ
ـ بقيمة 1وتقف عند الرقم .1
نزوالً
مثال:
)>> x (2: 2: 7
= ans
0.3142 0.9425 1.5708
ـ من المصفوفة ،xويخبرك
ـ الرمز 7 :2 :2بأن تبدأ بالرقم 2وتعدّ هنا العنصر الثاني والرابع والسادس
نحو األعلى بــ 2وتقف عندما تصل إلى الرقم .7
مثال:
)]>> y ([8 2 9 1
= ans
0.8090 0.3090 0.5878 0
23
البرمجة بلغة MATLAB
ـ هنا مصفوفة أخرى []1 9 2 8لوضع عناصر المصفوفة yبالترتيب الذي نرغب فيه،
استخدمنا
ـ الثامن أوالً والعنصر الثاني ثانيا ،بينما وضع العنصر التاسع ثالثًا والعنصر األول
حيث وضع العنصر
رابعا .في الواقع تدل المصفوفة []1 9 2 8عناوين العناصر المرغوبة من المصفوفة .y
مثال:
>> y ([1 1 3 4 2 )]2
= ans
0 0 0.5878 0.8090 0.3090 0.3090
مثال:
توضح األمثلة التالية بأن برنامج MATLABال يقبل الدليل كرقم غير صحيح حيث يعطي رسالة خطأ.
)>> y (3.2
Error
)>> y (3.7
Error
)>> y (11.6
Error خطأ بسبب تجاوز الدليل طول المصفوفة
إنشاء المصفوفة
لقد قمنا سابقًا بإدخال قيم مصفوفة xعبر كتابة كل العناصر
ـ ضمن المصفوفة ،وهنا األمر مقبول الن
المصفوفة xتحوي احد عشر عنصرًا فقط ،ماذا لو احتوت 111عنصرًا؟
هناك طريقتان إلدخال عناصر المصفوفة ،xوذلك باستخدام
ـ النقطتين المتعامدتين.
أمثلة:
1) >> x = (0: 0.1: 1) * pi
) 2) >> x = linspace (0, pi, 11
24
البرمجة بلغة MATLAB
=a
1 2 3 4 5 6 7
مثال:
])>> b = [linspace (1, 7, 5
=b
1 2.5 4 5.5 7
مثال:
)>> a = (1: 7
=a
1 2 3 4 5 6 7
مثال:
>> a = 1 :5 , b = 1: 2: 9
=a
1 2 3 4 5
=b
1 3 5 7 9
مالحظة:
هنا تم إنشاء مصفوفتين ،ولكن تذكر بأنك تستطيع دمج التعبيرين ضمن سطر واحد إذا لم تفصل بفواصل:
]>> c = [b a
=c
1 3 5 7 9 1 2 3 4 5
ـ .a
وبذلك تم إنشاء مصفوفة cمؤلفة من عناصر bمتبوعة بعناصر
تكييف المصفوفة
ـ بفراغات أو بفواصل عادية يحدد عناصر في أعمدة
باالعتماد على المثال السابق ،فان فصل العناصر
ـ الفاصلة المنقوطة يجعل العناصر واقعة في أسطر مختلفة.
مختلفة ،في حين أن استخدام
مثال:
25
البرمجة بلغة MATLAB
26
البرمجة بلغة MATLAB
>> g = [1 2 3 4 ; 5 6 7 ]8
=g
1 2 3 4 مصفوفة متكونة من سطرين وأربعة أعمدة
5 6 7 8
مثال:
>> g = [1 2 3 4
5 6 7 8
9 ]10 11 12
كذلك فأن ضغط مفتاح Enterأو Returnيخبرنا برنامج MATLABبأن ينتقل إلى سطر جديد أثناء
إدخال قيم المصفوفة.
مثال:
>> h = [1 2 3 ; 4 5 6 ]7
Error عدد األعمدة غير متساوية
مالحظة:
عنصر ; )half = g (2, 2
مصفوفة ; full = g
مثال:
]>> c = [1: 5; 2: 2: 10; 7: -1: 3
=c
1 2 3 4 5
2 4 6 8 10
7 6 5 4 3
)>> c (1, 2
= ans
27
البرمجة بلغة MATLAB
2
مالحظة:
تقدم لغة MATLABطريقة أخرى لإلشارة إلى عناصر المصفوفة باستخدام رقم
ـ واحد فقط ،ولفهم
هذه الطريقة يجب التخيل بأن جميع عناصر المصفوفة مرتبة بشكل عمود واحد مكون من أعمدة
المصفوفة من األعلى إلى األسفل (أي عناصر العمود األول ثم الثاني ثم الثالث وهكذا).
)>> c (12
= ans
4
العمليات الحسابية بين المصفوفة والعدد المفرد
ـ والقسمة بين العدد المفرد وبين
تجري العديد من العمليات الحسابية كعملية اإلضافة والطرح والضرب
جميع عناصر المصفوفة.
مثال:
>> g – 2 المصفوفة gالمعرفة سابقًا %
= ans
-1 0 1 2
3 4 5 6
7 8 9 10
وهنا طُُرح من كل عنصر من عناصر المصفوفة gالعدد .2
مثال:
>> 2 * g – 1
= ans
1 3 5 7 ـ كل عنصر من عناصر المصفوفة g
أما هنا فضرب
9 11 13 15 ـ
بالعدد , 2ثم طُرح من كل عنصر من العناصر
17 19 21 23 ـ 1.
الناتجة الرقم
مثال:
>> 2 * g / 5 + 1
28
البرمجة بلغة MATLAB
= ans
1.4 1.8 2.2 2.6
3 3.4 3.8 4.2
4.6 5 5.4 5.8
أما في هذه الحالة ،فقد ضُرب كل عنصر من عناصر المصفوفة gبالعدد ،2ثم قُسّم الناتج على العدد 5
ـ أُضيف لها الواحد.
وبعدها
العمليات الحسابية بين المصفوفات
ـ
ـ بسيطة تمامًا مثل العمليات الحسابية المجراة بين المصفوفات
ال تعتبر العمليات الحسابية بين المصفوفات
ـ تعد
ـ أوضح ,فالعمليات الحسابية المجراة بين مصفوفات مختلفة األبعاد والحجوم
واألعداد المفردة .وبشكل
ـ
ـ متساوية األبعاد من جمع وطرح وضرب
عمليات صعبة التحديد ,وتعد العمليات الحسابية على المصفوفات
وقسمة من العمليات األساسية في لغة MATLABواليك األمثلة التالية:
>> g ـ المصفوفة السابقة %
إعادة استخدام
=g
1 2 3 4
5 6 7 8
9 10 11 12
]>> h = [1 1 1 1 ; 2 2 2 2 ; 3 3 3 3
=h
1 1 1 1
2 2 2 2
3 3 3 3
>> g + h
= ans
2 3 4 5
7 8 9 10
12 13 14 15
29
البرمجة بلغة MATLAB
30
البرمجة بلغة MATLAB
31
البرمجة بلغة MATLAB
1 1 1
1 1 1
1 1 1
)>> zeros (2, 5 )مصفوفة صفرية(
األسطر األعمدة
= ans
0 0 0 0
0 0 0 0
)>> size (g )تحديد أبعاد مصفوفة(
= ans
3 4
))>> ones (size (g
= ans
1 1 1 1
1 1 1 1
1 1 1 1
ـ مفرد مثل ) ones (nأو ) zeros (nفأن برنامج
مالحظة :عندما يتبع اسم المصفوفة القياسية برقم
MATLABينشىء مصفوفات مربعة n nتحتوي
ـ على أصفارا أو واحديه على الترتيب.
)>> eye (4 )مصفوفة الوحدة(
= ans
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
)>> rand (3 )مصفوفة عشوائية(
= ans
32
البرمجة بلغة MATLAB
33
البرمجة بلغة MATLAB
1 2 3 4 0 0
جعل جميع عناصر العمود الرابع تكون 4
4 5 6 4 0 1
7 8 0 4 0 0
]>> A (:, 4) = [4 4 4
Error بسبب عدم وجود فارزة منقوطة
مثال:
]>> B = [7 8 9; 4 5 6; 1 2 3
=B
7 8 9
4 5 6
1 2 3
>> A = [1 2 3; 4 5 6; 7 8 ]9
=A
1 2 3
4 5 6
7 8 9
])]>> C = [A B(:, [1 3
=C
1 2 3 7 9 حصلنا على المصفوفة Cعبر توسيع المصفوفة Aبإضافة العمودين
4 5 6 4 6 األول والثالث من المصفوفة .B
7 8 9 1 3
)>> B = A (1: 2, 2: 3
=B
2 3
5 6
مثال :تشكيل المصفوفة Bبجعل المصفوفة Aكمصفوفة عمود واخذ أعمدتها عمود بعد عمود.
)>> B = A (:
35
البرمجة بلغة MATLAB
=B
1
4
7
2
5
8
3
6
9
مثال:
;]>> B = [1 2 3; 4 5 6; 7 8 9
)>> B = reshape (A, 1, 9
=B
1 4 7 2 5 8 3 6 9
;)]>> B = reshape (A, [1 9
=B
1 4 7 2 5 8 3 6 9
في المثال أعاله إيعاز تحويل أبعاد المصفوفة الثنائية 3*3إلى مصفوفة أحادية 9*1
مثال:
>> A = B
=A
1 2 3
4 5 6
7 8 9
] [ = )>> B (:, 2
=B تمت إعادة صياغة المصفوفة Bعبر حذف كل اسطر العمود الثاني من المصفوفة
Bاألصلية ,وعندما تضع أي عنصر مساويًا للمصفوفة
36الفارغة [ ] ,فهذا يعني انك
ـ على العناصر المتبقية بعد الحذف.
ـ من المصفوفة وتقليصها لتحافظ
تريد حذفها
البرمجة بلغة MATLAB
1 3
4 6
7 9
مثال :إيجاد منقول (مدور) المصفوفة وإعادة تشكيلها بالتعليمة . reshape
'>> C = B
=C
1 4 7
3 6 9
)>> reshape (B, 2, 3
= ans
1 7 6
4 3 9
مالحظة :تعمل تعليمة reshapeعمود بعد عمود وللحصول
ـ على سطر بعد سطر نعمل المدور (
. )transport
ـ السطر الثاني في المصفوفة .C
مثال :هنا حذفنا
] [ = )>> C (2, :
=C
1 4 7
ـ .C
مثال :استبدلنا عناصر السطر الثاني من المصفوفة Aبعناصر
>> A (2, :) = C
=A
1 2 3
1 4 7
7 8 9
مثال:
>> x = -3: 3
37
البرمجة بلغة MATLAB
=x
-3 -2 -1 0 1 2 3
ـ المنطقية
هناك المصفوفات المنطقية الناتجة عن العمليات المنطقية .كما يمكن أيضًا استخدام المصفوفات
ـ في هذه الحالة اإلبقاء على العناصر ذات القيمة (
إذا كان حجمها مساويا لحجم المصفوفات المعنونة ,ويتم
ـ المحققة للشرط بينما يتجاهل العناصر ( )0أي falseوهي العناصر
ـ غير )1أي trueوهي العناصر
المحققة الشرط .ولنأخذ المثال التالي:
>> abs (x) > 1
= ans
1 1 0 0 0 1 1
)>> y = x (abs (x) > 1
هنا تم إنشاء المصفوفة yمن تلك العناصر من المصفوفة xالتي قيمتها
ـ اكبر من الواحد.
=y
-3 -2 2 3
ـ الثنائية المنطقية كما عملنا مع األحادية المنطقية ,كما في المثال التالي:
ويمكن العمل مع المصفوفات
>> B = [5 -3; 2 ]-4
=B
5 -3
2 -4
>> x = abs (B) > 2
=x
1 1
0 1
)>> y = B (x
=y
5
38
البرمجة بلغة MATLAB
-3
-4
ـ المصفوفة
ترتيب
ـ تطبيقها هي الترتيب ,ويؤمن
عندما تعطى متجه من البيانات فان أهم عملية يمكن إن نحتاجها وتود
االيعاز sortعملية الترتيب في لغة ,MATLABكما هو واضح في المثال التالي:
>> )x = randperm (8 (إيعاز ترتيب األرقام بصورة عشوائية)
=x
7 5 2 1 3 6 4 8
)>> [y, indx] = sort (x
=y
1 2 3 4 5 6 7 8
= indx
4 3 5 7 2 6 1 8
وعندما تكون المصفوفة ثنائية البعد فان عملية الترتيب تتم بشكل مختلف وكما يلي:
(عمود بعد عمود)
])>> A = [randperm (6); randperm (6); randperm (6); randperm (6
=A
1 2 5 6 4 3
4 2 6 5 3 3
2 3 6 1 4 5
3 5 1 2 4 6
39
البرمجة بلغة MATLAB
40
البرمجة بلغة MATLAB
41
البرمجة بلغة MATLAB
43
البرمجة بلغة MATLAB
44
البرمجة بلغة MATLAB
45
البرمجة بلغة MATLAB
46
البرمجة بلغة MATLAB
47
البرمجة بلغة MATLAB
48
البرمجة بلغة MATLAB
49
البرمجة بلغة MATLAB
50
البرمجة بلغة MATLAB
مالحظة:
51
البرمجة بلغة MATLAB
برنامج MATLABبأن يضع المتغير و A {i, j} = x يخبر كال التعبيرين }A (i, j) = {x
ـ ()i, jمن مصفوفة الخلية .A
في العنصر x
يدعى التعبير ) A (i, jبفهرسة الخلية ( , )cell indexingبينما يدعى التعبير } A {i, jبعنونة
ـ ( )content addressingأي تدل أقواس المجموعة { } على محتوى الخلية ,بينما تعرف
المحتوى
األقواس العادية ( ) الخاليا دون النظر إلى محتواها.
مثال:
}>> y = {1, 'hello', 1 > 5
=y
][1 ''hello ][0
}>> y {1
= ans
1
}>> y {2
= ans
hello
}>> y {3
= ans
0
مثال:
>> ce = {[1 2 3; 5 6 ;}7], 'yes', 3 > 2
)>> ce {1}(2, 2
= ans
6
مثال:
;)>> x = rand (3, 3
;)>> y = rand (3, 3
52
البرمجة بلغة MATLAB
53
البرمجة بلغة MATLAB
55
البرمجة بلغة MATLAB
>> B
=B
][1 2 double ''John Smith
][2.0000 + 3.0000i ][5
]>> C = [A; B )متساوية األبعاد(
=C
][3 3 double ][2.0000 + 3.0000i
''Ali Ahmed ][1 7 double
][1 2 double ''John Smith
56
البرمجة بلغة MATLAB
57
البرمجة بلغة MATLAB
كذلك يعيد االيعاز repmatبالتعامل مع مصفوفات الخاليا حيث يعمل على تكرارها
ـ وفقًا للتكرار
المطلوب.
مثال:
>> y
=y
][ ][
][ ][
][ ][
][ ][
][ ][
][ ][
)>> z = repmat (y, 1, 3
=z
][ ][ ][ ][ ][ ][
][ ][ ][ ][ ][ ][
][ ][ ][ ][ ][ ][
][ ][ ][ ][ ][ ][
][ ][ ][ ][ ][ ][
][ ][ ][ ][ ][ ][
58
البرمجة بلغة MATLAB
السالسل الرمزية
تكمن قوة برنامج MATLABالحقيقية في القدرة على التعامل مع األرقام,
ـ ولكنه يحتاج أحيانًا إلى
ـ على الرسومات.
التعامل مع النصوص كما في حالة وضع العناوين وأسماء المحاور
ـ
تركيب السلسة الرمزية
ـ عددية خاصة من قيم ASCIIوالتي
تتألف السالسل الرمزية في لغة MATLABمن مصفوفات
تعيد أظهار السلسة الرمزية ,فمثالً:
'?>> t = 'How about this character string
=t
?How about this character string
)>> size (t
= ans
1 32
>> whos ـ
إيعاز عرض أسماء المتغيرات وحجومها وعدد بياناتها وصنفها
Name Size Bytes Class
ans 1 2 16 double array
t 1 32 64 character array
Grand total is 34 elements using 80 bytes
ـ كل حرف في السلسة
إن السالسل الرمزية ببساطة هي نص محاطة بفاصلة علوية مفردة .ويعتبر
عنصرًا من مصفوفة ,والتي نحتاج إلى بايتين لتخزين كل حرف ,ونختلف بذلك عن 8بايت المخصصة
لكل عنصر من عناصر المصفوفة العددية أو مضاعفة الدقة .ولرؤية التمثيل ASCIIلسلسلة رمزية
نحتاج فقط إلجراء بعض العمليات الرياضية على السلسلة أو استخدام االيعاز ,doubleوكما في المثال
التالي:
)>> u = double (t
=u
Columns 1 through 12
72 111 119 32 97 98 111 117 116 32 116 104
59
البرمجة بلغة MATLAB
60
البرمجة بلغة MATLAB
a
r
a
c
t
e
r
وتم هنا تحويل كلمة characterإلى مصفوفة عمود عبر عملية مدور(منقول).
ـ الرمزية وكاالتي:
يمكن دمج المصفوفات
;' >> u = 'Hameed
;'>> v = 'Aiad
]>> w = [u v
=w
Hameed Aiad
ويسمح لنا االيعاز dispإظهار السلسلة بدون طباعة اسم المتغير كما في المثال التالي:
)>> disp (u
Hameed
ويمكن أن تتملك السالسل الرمزية (كما في باقي المصفوفات) عدة اسطر ,ولكن يجب أن يحوي كل
ـ متساوية كما في
ـ الفراغات لجعل طول كل األسطر
سطر عددًا متساويًا من األعمدة ,لذلك يجب استخدام
المثال التالي:
' >> v = ['character strings having more than
''one row must have the same number
!'of columns just like arrays ]'
=v
character string having more than
one row must have the same number
61
البرمجة بلغة MATLAB
62
MATLAB البرمجة بلغة
3.5
>> class (ans)
ans =
char
>> fprintf ('% 4.3f\n', sqrt (2))
1.414
>> size (fprintf ('% 4.3f\n' , sqrt (2))
ans =
1 1
:مثال
>> radius = sqrt (2);
>> area = pi * radius ^ 2;
>> fprintf ('A circle of radius% 6.4f has an area of % 6.4f', radius, area)
A circle of radius 1.4142 has an area of 6.2832
.area والمتغيرradiusـ المتغير
ست خانات إلظهار6.4f % تحدد هنا الصيغة
:)مثال (طريقة أخرى
>> S = ['A circle of radius ', (num2str (radius)), 'has an of ', (num2str (area)) '.']
S=
A circle of radius 1.4121 has an area of 6.2832.
ـ إلى عددية
تحويل السالسل الرمزية
>> S = str2num ('3.5')
▼ فراغات
S=
3.5
>> t = ['3.5▼' 'sqrt(2)' ;'▼1.5' '▼▼▼▼9.5']
يجب إن تكون أطوال األسطر متساوية
t=
63
البرمجة بلغة MATLAB
)3.5 sqrt(2
مصفوفة رمزية
1.5 9.5
)>> str2num (t
= ans
3.5000 1.4142
مصفوفة عددية
1.5000 9.5000
']>> t = '[3.5▼sqrt(2);▼1.5▼9.5 ـ غير متساوي
يمكن أن تكون أطوال األسطر
=t
][3.5▼sqrt(2);▼1.5▼9.5 مصفوفة رمزية
)>> str2num (t
= ans
3.5000 1.4142
1.5000 9.5000
يعيد االيعاز findstrأدلة البداية لسلسلة رمزية موجودة ضمن سلسلة أخرى.
;'>> b = 'Peter Piper picked a peck of pickled peppers
)'▼' >> findstr (b,
= ans
6 12 19 21 26 29 37
)'>> findstr (b, 'p
حرف صغير
= ans
9 13 22 30 38 40 41
)'>> findstr (b, 'cow
= ans
][
مصفوفة الخاليا للسالسل الرمزية
64
البرمجة بلغة MATLAB
ـ عدد األعمدة في جميع اسطر المصفوفات النصية متعبًا ,خاصة إذا اختلف عدد
يبدو شرط تساوي
ـ مصفوفات الخاليا ,حيث يمكننا
الفراغات المضافة من سطر آلخر ,ويمكن حل هذه المشكلة عبر استخدام
ـ االستخدام األكبر لمصفوفة الخاليا مع السالسل
وضع كل أنواع البيانات ضمن مصفوفة الخاليا ,ويتجلى
الرمزية.
ـ بتسمية مجموعة من البيانات ذات
تعتبر مصفوفة الخلية ببساطة نوعًا من البيانات التي تسمح للمستخدم
ـ المختلفة ,وذلك كما يبينه المثال التالي:
األنواع والحجوم
}'?>> C = {'How'; 'about'; 'this for a'; 'cell array of strings
=C
''How
''about
''this for a
'?'cell array of strings
)>> size (C
= ans
4 1
ـ في حصر السلسلة الرمزية
ـ أقواس المجموعة { } إلنشاء مصفوفة الخاليا ,وذلك استخدمناها
تستخدم
بأكملها ,وتملك المصفوفة Cفي هذا المثال أربعة اسطر وعمودًا واحدًا ,ويحوي
ـ كل عنصر من مصفوفة
الخلية سلسلة رمزية مختلفة الطول.
ـ الخاليا كما تعنون بقية المصفوفات ,وذلك كما يلي:
وتعنون مصفوفات
)>> C (2: 3
= ans
''about
''this for a
>> C ([4 3 2 )]1
= ans
'?'cell array of strings
65
البرمجة بلغة MATLAB
66
MATLAB البرمجة بلغة
about
this for a
cell array of strings?
>> size (S)
ans =
4 22
بإجراء التحويل العكسي ويعيدcellstrـ االيعاز
:ـ صياغة السالسل الرمزية بشكل جيد كما يلي ويقوم
>> cellstr (S)
ans =
'How'
'about'
'this for a'
'cell array of strings?'
67
البرمجة بلغة MATLAB
68
MATLAB البرمجة بلغة
:مثال
prompt = {'enter x'};
def = {'20'};
dlgTitle = 'Input for my program';
lineNo = 1; % ـ المدخلة
عدد السطور
answer = inputdlg (prompt, dlgTitle, lineNo, def);
;x = str2num (answer {1})% في حالة التعامل مع رقمnum إلىstring تحويل
القيمة األولى من مصفوفة الخاليا
جمل اإلخراج
:هناك عدة صيغ لإلخراج منها
:disp تعليمة-1
:)1( مثال
>> d = 15;
>> disp (d);
15
:)2( مثال
>> a = 'ali';
>> disp (a);
ali
:)3( مثال
>> sum = 9.8;
>> disp (['sum = ', num2str (sum)]);
sum = 9.8
69
البرمجة بلغة MATLAB
مثال (:)4
;)'>> disp ('computer
computer
مالحظة (:)1
يجب أن يكون محتويات dispقيمة ذات نوع بياني واحد ضمن الجملة الواحدة (كل جملة نوع بياني
واحد).
مالحظة (:)2
في حالة كون محتويات dispأكثر من قيمة ذات نوع بيانية مختلفة ضمن الجملة الواحدة (يجب ان
تجمع القيم في قوسين كبيرين [ ] (مثال (.)))3
-2تعليمة :msgbox
)'>> msgbox ('ok', 'result
عنوان الصندوق
الشيء المطلوب طباعته ( نوع بياني رمزي)
70
البرمجة بلغة MATLAB
وهذا يعني بأنه تم حجز 6مراتب منها 3مراتب بعد الفارزة العشرية.
مثال (:)2
;))>> fprintf ('% 8.3f\n', round (3.8
4.000
مالحظة (:)1
ـ صيغ مختلفة للطباعة وكما يلي:
يمكن استخدام
c% رمز واحد
d% تدوين عشري
e% تدوين يائي
f% تدوين النقطة الثابتة
i% تدوين عشري
o% تدوين ثماني
s% تدوين رمزي
x% تدوين سداسي عشر
مالحظة (:)2
ـ النتائج
يمكن طباعة األعداد واألسماء والنتائج من خالل كتابة االيعازات بدون فارزة منقوطة وستظهر
في نافذة األمر .Command Window
71
البرمجة بلغة MATLAB
الجمل الشرطية
يدعم برنامج MATLABالعمليات المنطقية والمقارنة مثلما يدعم العمليات الرياضية ,وتهدف
ـ
العمليات والمعامالت المنطقية الحصول على أجوبة لألسئلة التي يجاب عنها بصح أو خطأ (
.)True/False
تعتبر لغة MATLABفي تعاملها مع جميع التعابير المنطقية وعمليات المقارنة إن أي عدد غير
صفري هو Trueويعتبر الصفر ,Falseكما ويكون إخراج جميع التعابير
ـ المنطقية وعمليات المقارنة
ـ منطقية تحوي العدد واحد من اجل Trueوالعدد صفر من اجل .False
عبارة عن مصفوفات
ـ المصفوفات المنطقية نوعا ًخاصًا من المصفوفات العددية ,كما يمكن عنونة المصفوفة المنطقية
وتعتبر
ـ العددية.
بنفس طريقة عنونة باقي المصفوفات التي استخدمها سابقًا ضمن التعابير
ـ معامالت المقارنة للمقارنة بين مصفوفتين لها نفس الحجم ,أو للمقارنة بين مصفوفة وعدد
يمكن استخدام
مفرد وتتم هذه الحالة مقارنة كل عنصر من المصفوفة مع العدد المفرد ,وتكون المصفوفة الناتجة بنفس
حجم المصفوفة التي تمت مقارنتها كما يبينه المثال التالي:
مثال (:)1
;>> a = 1; b = 5
>> x = a > b
72
البرمجة بلغة MATLAB
=x
0
>> A = 1: 9, B = 9 - A
=A
1 2 3 4 5 6 7 8 9
=B
8 7 6 5 4 3 2 1 0
>> tf = A > 4
= tf
0 0 0 0 1 1 1 1 1
ـ العناصر من Aالتي هي أكبر من ,4وتظهر
ـ االصفار في المصفوفة الناتجة في مواقع لقد أوجدنا
ـ عندما ,A ≤ 4بينما يظهر الرقم 1عندما .A > 4
العناصر
)>> tf = (A == B
= tf
0 0 0 0 0 0 0 0 0
ـ العناصر في المصفوفة .B
لقد تم هنا إيجاد عناصر Aالتي تساوي
مالحظة:
ـ العدد
الحظ بان اإلشارتين (=) و (==) تعنيان شيئًا مختلفًا ,حيث يقوم (==) بمقارنة متغيرين وتعيد
ـ (=) إلسناد إخراج العملية إلى متغير.
ـ وصفرًا إذا لم يكونا متساويين ,بينما تستخدم
واحد إذا كانا متساويين
مثال ( :)1لتوليد مصفوفة أحادية منطقية عناصرها واحدات (في حالة اكبر من )thrواصفارًا (في حالة
ـ .)thr
اصغر من أو تساوي
>> inddent = [10 17 22 0 7 3 ;]2
;>> thr = 7
)>> y = (indent > thr
=y
1 1 1 0 0 0 0
73
البرمجة بلغة MATLAB
74
البرمجة بلغة MATLAB
;>> A = 1: 9; B = 9 - A
>> tf = A > 4
= tf
0 0 0 0 1 1 1 1 1
حيث قام بإيجاد عناصر Aالتي قيمها اكبر من 4
)>> tf = ~ (A > 4
= tf
1 1 1 1 0 0 0 0 0
ـت.
لقد قام البرنامج بقلب النتيجة السابقة ,وتعني استبدال مواقع االصفار والواحدا
)>> tf = (A > 2) & (A < 6
= tf
0 0 1 1 1 0 0 0 0
ـ من Aاكبر من 2واقل من 6.
حيث تعيد هذه العبارة العدد واحد عندما يكون العنصر
أسبقية المعامل
يقوم برنامج MATLABبإيجاد قيمة تعبير مستندًا إلى مجموعة من القواعد الناظمة ألسبقية المعامل,
وتحسب المعامالت ذات األسبقية العليا قبل المعامالت ذات األسبقية الدنيا ,وتقيم المعامالت ذات األسبقية
المتساوية من اليسار إلى اليمين .ويشرح الجدول التالي قواعد أسبقية المعامل التي يعتدها برامج
.MATLAB
الصيغة IF-ELSE-END
قد نحتاج إلى حساب مجموعة من أوامر استنادًا إلى إخراج ناتج عن اختبار شرطي .وتنفذ هذه التعليمة
ـ الصيغة if-else-endوكما يلي:
في لغة MATLABعبر استخدام
if expression
)(commands
end
ـ ( )commandsالواقعة بين العبارتين ifو endإذا كانت قيمة التعبير ()expression
وستنفذ األوامر
تكون .trueواليك المثال التالي:
;>> x = 10
>> if x == 10
)'disp ('ok
;end
وإذا كان لدنيا خياران ,فتصبح الصيغة if-else-endكما يلي:
if expression
)(commands evaluated if True
else
76
MATLAB البرمجة بلغة
77
MATLAB البرمجة بلغة
78
البرمجة بلغة MATLAB
يجب أن يكون expressionهنا أما عددًا مفردًا أو سلسلة رمزية .يقارن التعبير expression
ـ في عبارة caseاألولى .وإذا تساوى
ـ test-expression1الموجود
ـ في الصيغة السابقة بالتعبير
الموجود
ـ التعليمات الواقعة بعدها حتى العبارة .endأما
التعبيران ,سيتم تنفيذ األوامر ( )commands1وتخطي
ـ الشرط الثاني ,حيث سيقارن expressionفي المثال السابق مع
إذا لم يتحقق الشرط األول ,فسيختبر
العبارات test-exoression2الموجودة في عبارة caseالثانية .وإذا تساوى
ـ التعبيران ,سيتم تنفيذ
))commands2وتهمل بقية العبارات حتى عبارة .endإذا لم تحقق أي عبارة caseالمساواة مع
ـ ))commands3التي تلي العبارة .otherwise
التعبير ,expressionعندها ستنفذ األوامر
الحظ من الشرح الذي أوردناه عن صيغة switch-caseبأنه سيتم تنفيذ أحدى مجموعات األوامر
المكونة للصيغة switch-caseواليك األمثلة التالية:
مثال (:)1
;x = 1
switch x
}case {1, 2, 3, 4, 5
;)'disp ('1..5
}case {9, 10
;)'disp ('9..10
otherwise
;)'disp ('this is impossible
;end
اإلخراج 5..1
مثال (:)2
;clc
;clear
;n = 3
switch n
}case {0
79
MATLAB البرمجة بلغة
m = n + 3;
case {2}
m = 'ali';
case {3}
m = magic (n);
otherwise
disp ('error');
end;
disp (m);
اإلخراج
8 1 6
3 5 7
4 9 2
:)3( مثال
x = 2.7;
units = 'm';
switch units
case {'inch', 'in'}
y = x * 2.54;
case {'meter', 'm'}
y = x / 100;
case {'feed', 'ft'}
y = x * 2.54 / 12;
case {'millimeter', 'mm'}
y = x * 10;
case {'centimeter', 'cm'}
y = x;
80
البرمجة بلغة MATLAB
otherwise
'disp (['Unknown Units: ;)]units
;end
اإلخراج
y = 0.027
جملة for
81
البرمجة بلغة MATLAB
تقوم حلقات forبإعادة تنفيذ مجموعة من األوامر لعدد معين من المرات وبخطوة معينة ,وتعطى
ـ
الصيغة العامة لحلقة forكما يلي:
for i = x1: x3: x2
)(commands
;end
حيث يعاد تنفيذ األوامر( )commandsالواقعة بين عبارتي forو endمن القيمة االبتدائية x1إلى
القيمة النهائية x2وبزيادة مقدارها .x3كما في المثال التالي:
مثال:
>> for n = 1: 10
;)x (n) = sin (n * pi / 10
;end
>> x
=x
Columns 1 through 7
0.3090 0.5878 0.8090 0.9511 1.0000 0.9511 0.8090
Columns 8 through 10
0.5878 0.3090 0.0000
ويمكن تفسير الدوارة أعاله كما يلي:
من اجل كل قيمة لـ nمن 1إلى 10يجب حساب قيمة العبارة الموجودة حتى عبارة endالتالية ,تكون
قيمة nفي الدورة األولى ,n = 1وتكون في الدورة الثانية n = 2وهكذا حتى تصل إلى .n = 10
مثال :توليد 10أعداد عشوائية قيمتها (.)10..1
)>> array = randperm (10
= array
8 2 10 7 4 3 6 9 5 1
>> for n = array
;)x (n) = sin (n * pi / 10
82
البرمجة بلغة MATLAB
;end
>> x
=x
Columns 1 through 7
0.3090 0.5878 0.8090 0.9511 1.0000 0.9511 0.8090
Columns 8 through 10
0.5878 0.3090 0.0000
سيأخذ متغير الحلقة nهنا قيمًا عشوائية بين ( )1و ( )10معطاة بالمصفوفة .array
مالحظة:
يمكن إنشاء عدة حلقات forمتداخلة ,كما في المثال التالي:
>> for n =1: 5
for m = 5: -1: 1
;A (n, m) = n ^ 2 + m ^ 2
;end
;)disp (n
;end
اإلخراج
1
2
3
4
5
>> A
=A
2 5 10 17 26
5 8 13 20 29
83
MATLAB البرمجة بلغة
10 13 18 25 34
17 20 25 32 41
26 29 34 41 51
:أمثلة
>> for i = 1: 10
disp (i);
end;
اإلخراج
1
2
3
.
.
10
>> for i = 0: 2: 10 disp (i);
end; اإلخراج
0
2
4
6
8
10
>> for i = 10: -2: 1
disp (i);
end;
اإلخراج
10
84
البرمجة بلغة MATLAB
8
6
4
2
>> for i =1: 10
for j = 1: 10
)طبع جدول الضرب(
;mult (i, j) = i * j
;end
;end 1 2 3 4 5 6 7 8 9 10
2 4 6 8 10 12 14 16 18 20
3 6 9 12 15 18 21 24 27 30
4 8 12 16 20 24 28 32 3 6 40
. . . . . . . . . .
. . . . . . . . . .
10 20 30 40 50 60 70 80 90 100
جملة WHILE
تُجري حلقات whileعمليات الحساب عددًا غير محدد من المرات على عكس حلقات forالتي تؤدي
عددًا معينًا من التمريرات ,ويمكن كتابة الصيغة العامة لحلقة whileكما يلي:
while expression
)(commands
;end
ستنفذ مجموعة األوامر( )commandsالواقعة بين العبارتين whileو endطالما أن كل العناصر
ضمن expressionتمتلك قيمًا صحيحة ( ,)trueوعادةً ما تكون نتيجة expressionعددًا مفردًا.
مثال (:)1
;>> x = 1
>> while x < 25
85
البرمجة بلغة MATLAB
86
البرمجة بلغة MATLAB
;end ;break
;end ;end
;x = x + 5
;end
اإلخراج اإلخراج
i = 22 x = 51
s = 253 s = 286
مالحظة:
أذا وجدت التعليمة breakضمن حلقة داخلية واقعة ضمن حلقات اكبر فان البرنامج يخرج من الحلقة
التي صادف فيها التعليمة وال يخرج من الحلقات األكبر.
87
البرمجة بلغة MATLAB
وبذلك يتم خزن جميع المتغيرات الموجودة في ساحة العمل ( )Workspaceفي ملف ذي صيغة ثنائية
باسم matlab.matيوضع في المجلد الحالي .وتحافظ
ـ هذه الملفات ذات صيغة الثنائية ,والخاصة ببرنامج
,MATLABعلى كامل القيم وبدقة مضاعفة ,كما وتخزن أسماء المتغيرات بنفس الدقة ,وال تعتبر ملفات
MAT-filesذات أصول مستقلة ,إنما هي متوافقة تمامًا مع بقية أنواع الملفات الموجودة في برنامج
, MATLABإذ نستطيع
ـ تخزين أي متغير وفق نوع من الملفات وفتحة من قبل األنواع األخرى دون
إجراء أية معالجة خاصة للملف.
ـ األمر saveلتخزين متغيرات معينة كما في المثال التالي:
ويمكن أن يستخدم
>> save var1 var2 var3
أي قم بتخزين المتغيرات var1و var2و var3ضمن الملف ,matlab.matويمكن أن نحدد اسم
الملف كوسيط أول لألمر saveكما يلي:
>> save filename var1 var2 var3
وتفسر التعليمة السابقة كما يلي :خزّن المتغيرات var1, var2, var3ضمن ملف اسمه
.filename.mat
ـ باألمر saveكما
ويعاكس األمر loadاألمر saveإذ يفتح هذا األمر ملفات البيانات التي تم إنشاؤها
يلي:
>> load
وهي تعني حملّ كل المتغيرات التي تجدها ضمن الملف matlab.matحيثما وجدته أوال سواءً في
المجلد الحالي أو في مسار البحث لبرنامج .MATLABويتم
ـ تخزين أسماء المتغيرات المخزونة في
الملف matlab.matفي ساحة العمل ,وستحمّل فوق
ـ المتغيرات ذات األسماء المطابقة لها في حال
ـ
وجودها.
ولتحميل متغيرات معينة من ملف ذي الحقة ( )MAT-fileيجب ان نذكر اسم الملف وقائمة المتغيرات
كما يلي:
>> load filename var1, var2, var3
لقد تم هنا فتح الملف filename.matوحملت المتغيرات var1, var2, var3إلى ساحة العمل.
88
البرمجة بلغة MATLAB
89
البرمجة بلغة MATLAB
91
البرمجة بلغة MATLAB
92
البرمجة بلغة MATLAB
االيعازات القاعدية
يؤمن برنامج MATLABالعديد من األوامر التي تحول األعداد العشرية إلى قواعد أخرى وفق
ـ صيغ
سالسل رمزية ونستطيع التحويل بين األعداد العشرية واألعداد الثنائية عبر االيعازين bin2dec,dec2bi
nكما يلي:
)>> a = dec2bin (17
= ans
10001
)>> class (a
= ans
char
)>> bin2dec (a
= ans
17
)>> class (ans
= ans
عدد الخانات
double
)>> dec2bin (17, 6
= ans
01001
ويتم التحويل بين األعداد العشرية والستة عشرية (يكون أساس العد فيها العدد )16عبر االيعازين
hex2decو dec2hexكما يلي:
)>> a = dec2hex (2047
=a
عدد الخانات
7FF
)>> dec2hex (2047, 4
= ans
93
البرمجة بلغة MATLAB
07FF
)>> class (a
= ans
char
)>> hex2dec (a
= ans
رمزي
2047
)>> class (ans
= ans
double
المخرجات المدخالت
اسم الدالة
كما في األمثلة التالية:
94
MATLAB البرمجة بلغة
:)1( مثال
>> x = [1, 2, 3, 4, 5, 6, 7, 8];
>> y = [11, 12, 13, 2, 9, 70];
البرنامج الرئيسي
>> avgx = average1 (x);
>> avgy = average1 (y);
>> avgx
avgx =
4.5000
>> avgy
avgy =
19.5000
اإلخراج اإلدخال
:)2( مثال
>> res1 = mult2 (x);
>> res2 = mult2 (y); البرنامج الرئيسي
95
MATLAB البرمجة بلغة
>> res1
res1 =
2 4 6 8 10 12 14 16
>> res2
res2 =
22 24 26 4 18 140
:)3( مثال
>> [sin_x, cos_x, x_2] = multf (x);
>> [sin_y, cos_y, y_2] = multf (y); البرنامج الرئيسي
96
البرمجة بلغة MATLAB
مالحظات:
-1الدالة التي تكون على شكل ملف مفصول اليمكن تنفيذها مباشرة إال بعد استدعائها بالبرنامج
الرئيسي.
ـ في السطر
-2تكون اسم الدالة المخزون في القرص الصلب واسم الدالة بعد عالمة (=) الموجود
األول يجب ان يكونا متطابقين.
مثال:
;)function y = myfunction (a, b
-------
-------
-------
فيكون الخزن myfunction.m
ـ نهاية الدالة على (.)end
-3ال تحتوي
-4تخزن البرامج بعد كل تعديل وخاصة الدوال.
-5اسم الدالة المخزون يجب أن تبدأ بحرف.
-6يمكن أن تستدعي دالة من قبل دالة أخرى.
الرسوم البيانية
ـ برنامج MATLABبالعديد من االيعازات التي تظهر البيانات ثنائية األبعاد وثالثية األبعاد,
يزودك
ـ بعضها منحنيات ثنائية األبعاد وثالثية األبعاد بينما يرسم بعضها سطوحًا وإطارات ,كما
حيث يرسم
ـ اللون كبعد رابع.
يمكن استخدام
االيعاز plot
يقوم هذا االيعاز بإظهار البيانات على شكل ثنائي األبعاد.
مثال (:)1
97
البرمجة بلغة MATLAB
98
MATLAB البرمجة بلغة
y = sin (x);
plot (x, y);
legend ('sin (x)'); دليل المخطط
xlabel ('x = 0: 2: pi'); x ـ
عنوان المحور
ylabel ('sin (x) cos (x)'); y عنوان المحور
title ('plot sin cos function'); )ـ (أعلى المخطط
عنوان المخطط الرئيسي
:)6( مثال
plot (x, sin (x), x, cos (x)); لرسم منحنيين
99
البرمجة بلغة MATLAB
مثال (:)7
;)'* plot (x, sin (x), 'r: +', x, cos (x), 'b:
لون احمر عالمة المخطط ) cos (xلون ازرق عالمة المخطط )sin (x
مالحظة:
يمكن كتابة أي نص على المخطط باستخدام االيعاز:
;)'text (x, y, 'string
100
البرمجة بلغة MATLAB
مثال:
;)t = linspace (0, 10 * pi, 100
;)plot3 (sin (t), cos (t), t
;)')xlabel ('sin (t
;)')ylabel ('cos (t
;)'zlabel ('t
;)'text (0, 0, 0, 'origin
grid on لرسم الشبكة
ـ الجزئية
الرسوم البيانية
ـ حيث يقسم subplot (m, ـ نافذة figureواحدة ان تمسك باكثر من مجموعة محاور
ـ أو صور, تستطيع
ـ ويختار المساحة pلتصبح فعالة .لقد رسمت
) n, pنافذة الشكل الحالية الى مصفوفة m*nلرسم المناطق
ـ البيانية الجزئية من اليسار الى اليمين وعلى طول الصف العلوي ,ثم على طول الصف السفلي
الرسومات
وهكذا ,وذلك كما يلي:
مثال:
;)x = linspace (0, 2 * pi, 30
;)y = sin (x
;)z = cos (x
;)a = 2 * sin (x) .* cos (x
;)b = sin (x) ./ (cos (x) + eps
101
MATLAB البرمجة بلغة
ـ السطحية
الرسوم البيانية
ـ
عبر استخدام,ـ البيانية عدا انها تعبر عن المساحات الواقعة
ـ البيانية السطحية تلك الرسوم
تشبه الرسوم
: كما يليsurf االيعاز
:)1( مثال
[x y z] = peaks (30);
surf (x, y, z);
xlabel ('x-axis');
ylabel ('y-axis');
zlabel ('z-axis');
102
البرمجة بلغة MATLAB
مثال (:)2
for i = 1: 10
for j =1: 10
;mult (i, j) = i * j
;end
;end
)surf (mult ( شكل مجسم (ثالثي االبعاد
مالحظة:
هناك من االيعازات لرسم أشكال هندسية منها:
االيعاز bar
ـ لرسم bar chart
يستخدم
مثال:
;x = -2.9: 0.2: 2.9
;))bar (x, exp (-x .* x
103
MATLAB البرمجة بلغة
hist االيعاز
histogram ـ لرسم
يستخدم
:مثال
x = -2.9: 0.1: 2.9;
y = randn (10000, 1);
hist (y, x);
pie االيعاز
pie chart ـ لرسم
يستخدم
:مثال
x = [1 3 0.5 2.5 2];
explode = [0 1 0 0 0];
pie (x, explode);
104
MATLAB البرمجة بلغة
105