
البرمجة بلغة
MATLAB
1
البرمجة بلغة
إع
ـ
داد
Dr. Hammed
Computer Science
مجموعة من التدريسيين
لمادة علوم الحاسب
ات
وزارة التعليم العالي والبحث العلمي
قسم علوم الحاسبات
نيسان
8002

البرمجة بلغة
MATLAB
2
ةـــــــــــجمربلا ةغل
:MATLAB
(
The MATLAB programming language
)
~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~
~~~~~~~~~
1
-
مقدمة عن لغة االحتساب التقني
MATLAB
.
2
-
.الثوابت والمتغيرات
3
-
المصفوفات والعمليات
.على المصفوفات
4
-
المصفوفات متعددة األبعاد
.
5
-
.مصفوفات الخاليا
6
-
.السالسل الرمزية
7
-
.جمل اإلدخال واإلخراج
8
-
ةـــــيطرشلا لمجلا
.
9
-
.جمل الدوران والتكرار
11
-
ملفات البيانات الخاصة ببرنامج
MATLAB
.
11
-
ايعازات المجموعات والبتات
و
االيعازات
.القاعدية
12
-
ا
.لدوال والبرامج الفرعية
13
-
.الرسوم البيانية
ادرــــــــــصملا
:
1
-
MATLAB 6.5
الدليل المرجعي والتعليمي
,
ا
لمهندس
عبد الكريم البيكو
,
(دار شعاع للنشر
.)
2
-
MATLAB Help Version 6.5
3
-

البرمجة بلغة
MATLAB
3
لغة البرمجة
MATLAB
:
The MATLAB Programming Language
مقدمة
يعتبر برنامج
MATLAB
إذ يستخدم هذا البرناامج فاي مع ام،ةيملعلا طاسولأا يف رهشلأا جمانربلا
وبعد،ةيسدنهلاو ةيملعلا لئاسملا
ن
مذج
ة
أي مسألة أو اهرة يأتي بعدها دور هذا البرنامج ليتعامل مع تلك
الب
ومن الجدير ذكره بان هذا البرنامج،ةجمرب اهرسيأو اهثدحأو قرطلا طسبأب اهللحيو جمار
مــّـــلعي
أكثر
من
211
ويكفي،ملاعلا ةيقبو ابروأ يف دهاعملا كلت ادع ،طقف ةيكيرملأا ةدحتملا تايلاولا يف ةيلكو دهعم
أن تدخل إلى أحد محركات البحث على شبكة االنترنت وتكتب فقط
MATLAB
ذهل من عددــُــتـــــسف ،
.المواقع التي تتحدث عن هذا البرنامج
وتعتبر لغة
MATLAB
لغة برمجية عالية
األداء
تستخدم
إلجاراء
الحساابات التقنياة
,
وتقاوم بعملياات
الحساب
واإل هار
ضمن بيئة سهلة البرمجة كما
أنها
ال تحتاج
إلاى احتاراك كبيار
. تمكناك هاذه اللغاة مان
حل العدي
خاصاة التاي يعبار عنهاا بمصافوفات والتاي تحتااج إلاى جهاد كبيار،ايبااسح ةاينقتلا لئاسملا نم د
لبرمجتها بلغات البرمجة األخرى مثل لغة
C
و
FORTAN
.
أتت تسمية هذه اللغة من اختصار التعبير
MATrix LABoratory
حياث إن،)ةفوفصملا ربتخم(
البرنامج مصمم أساسا للتعامل مع العملي
.ات على المصفوفات بشكل بسايط
كماا أرفقات بهاذه اللغاة أدوات
لمعالجااة وحاال تطبيقااات علميااة خاصااة سااميت
toolboxes
وتعتباار هااذه،)ةادأ نيرااشع ناام رااثكأ يااهو(
حيث تسام لهام باتعلم وتطبياق تقنياات حال متخصصاة لمعالجاة،ةغللا هذه يمدختسمل ًادج ةماه تاودلأا
مثاال معالجاا،ةااصاخ لئاااسمو تلاكااشم
ة اإلشااارة
,
ون اام الااتحكم والمحاكاااة والشاابكات العصاابية والتحلياال
.الكمي والمالي واإلحصاء ومسائل الجبر الخطي واالمثلية ... الخ
ياانمن برنااامج
MATLAB
أدوات واجهااة التخاطااب الرسااومية
Graphical User Interface
(GUI)
التي تجعلك تتعامل مع البرنامج على انه أداة تطبيقية متط
.ورة

البرمجة بلغة
MATLAB
4
تشغيل برنامج
MATLAB
:يتم تشغيل البرنامج بأحد الطرق التالية
1
-
بعد تنصيب برنامج
MATLAB
على الحاسابة التاي تعمال عليهاا. يا
تم
إضاافة رماز أيقوناة البرناامج
علااى سااط مكتااب الحاساابة ويحماال الرمااز
ويااتم
فتحااة عنااد
النقاار علااى األيقونااة بنقاارتين
مزدوج
تين
double click
.
2
-
أو عن طريق الذهاب
إلى
قائمة
start
ومنها
إلى
برامج
Programs
ثم أسام البرناامج
MATLAB
6.5
.
عندها سوك ت هر لنا شاشة تحمل أسم البرنامج
MATLAB
ونسخة اإلصادار وسانة النشار كماا فاي
ا
( لشكل رقم
1
). ثم بعد ثواني قليلة ت هر نافذة البرنامج الرئيسية والتي تكون فاي بداياة التشاغيل كماا فاي
( الشكل رقم
2
) حيث تحتوي هذه النافذة كسائر البرمجيات التي تعمل تحت بيئة ن اام
Windows
علاى
.نوافذ فرعية
start
Programs
MATLAB 6.5
Dr. Hammed
Computer Science
( شكل
1
شاشة اسم البرنامج:)
MATLAB
( شكل
2
:)
شاشة
نافذة البرنامج الرئيسية
)
سط
مكتب
(MATLAB

البرمجة بلغة
MATLAB
5
سطح مكتب برنامج
MATLAB
عند تشغيل برن
امج
MATLAB
ست هر على شاشتك عدة نوافذ عناوان احادها
MATLAB
وتسامى
سط مكتب برناامج
MATLAB
تحاوي هاذه النافاذة وتاتحكم بجمياع النوافاذ األخارى المكوناة لبرناامج،
MATLAB
.
فقاد تكاون بعا هاذه النوافاذ مرئياة أو مخفياة ضامن،جماانربلا بياصنت تارايخ بسحو
نافذة
MATLAB
.
مكونات نافذة
MATLAB
تتكون نافذة
MATLAB
:من األجزاء التالية
-
1
-
شريط العنوان ويكون ذات لون مميز عن باقي األشرطة يوجد على يساره الرماز الصاوري للبرناامج
وأسم البرنامج
وفي يمينه
2
-
شااريط قااوائم
(Menu Bar)
أو
(Lists Bar)
يباادأ بقائمااة ملااك
File
قائمااة تحرياار،
Edit
قائمااة،
عر
View
... وحتى قائمة المساعدة،
Help
.
3
-
شريط األدوات
(Tools Bar)
ويضم رموز صورية لابع
االيعاازات
الموجاودة فاي قاوائم الشاريط
.السابق
هنااك فاي الجازء األخيار مان شاريط األدوات جازء مهام يادعى الادليل الحاالي
(Current Directory)
والذي يخبر المستخدم في أي ج
( وكماا فاي الشاكلًاايلاح دواجوم وه بساحلا نم ءز
2
) يعلمناا بأنناا علاى
)الدليل (المجلد
MATLAB6P5\work
وعلى القرص
C:
4
-
هنالااك شااريط مهااام خاااص بنافااذة برنااامج
MATLAB
وفيااه كلمتااان األولااى
Start
وعملهااا
كطريااق
مختصر لتنف
ي
ذ بع االيعازات
. بينما
Ready
تعلمك بأن البرنامج جاه
ز للعمال حساب التوجياه المعطاى
ل
ه
.
باإلضافة
إلى
األشرطة أعاله هناك مجموعة من النوافذ الفرعية التي يمكن تفعيلهاا أو إخفائهاا حساب
( الحاجة وذلك كما في الشكل
3
( ) حيث يتم تأشير أسم النافذة المرغاوب بعرضاها باشاارة
√
لكان هنااك،)
نافذة أساسية للعمل هي نافذة األمر
Command Window
والتي من خاللها يتم التعامل بكتاباة وتنفياذ،
.األوامر بصورة مباشرة أو غير مباشرة
5
-
تعتبر النوافذ الداخلية ال اهرة أسمائها في قائمة
View
( كما في الشكل رقم
3
) هي من مكونات نافذة
برنامج
MATLAB
:ولكل نافذة منها عملها الخاص وكما يلي
-

البرمجة بلغة
MATLAB
6
أ-
نافااذة
األماار
:Command Window
وهااي نافااذة ال يمكاان االسااتغناء عنهااا ألن بواسااطتها يااتم تنفيااذ
األوامر وعر النتائج التي نحصل عليها من تنفيذ تلك األوامر
( وتكتب بعد عالمة الحث
>>
)
.
ب
-
نافذة ساحة العمل
Workspace
:
وهاي عان واجهاة
تخاطبيا
ة
تسام لاك باساتعرا وتحميال وحفا
متغيارات لغاة
MATLAB
حياث ت هار قائمااة تضام أسام المتغيار وحجمااه وعادد بياناتاه وصانفه (جميااع
متغيرات لغة
MATLAB
)هي من صنك مصفوفة
( كما في الشكل,
4
)
.
ج
-
نافذة الدليل الحالي
:Current Directory
وهاي أيضاا واجهاة رساومية تحادد الادليل الحااوي للملاك
الذي يتعامل معه برنامج
MATLAB
.
( شكل
3
النوافذ الداخلية في قائمة:)
View
( شكل
4
نافذة األمر:)
Command Window
ونافذة ساحة العمل
.Workspace

البرمجة بلغة
MATLAB
7
د
-
نافذة المساعدة
:Help
وهاي نافاذة تخاطبياة (رساومية) تسام لاك بالبحاث واساتعرا الوثاائق بشاكل
.مباشر
و
-
لوحاا
ة
الباارامج التنفيذيااة
:Launch Pad
وهااي عبااارة عاان نافااذة تسااتعر بنيااة شااجرية لاا دوات
والبرامج
التنفيذية
.
ـها
-
نافاذة األواماار الساابقة
:Command History
تمكناك هااذه ا
لنافاذة ماان إعاادة تنفيااذ األوامار السااابقة
. من كتابتها مرة أخرىًلادب رملأا ةذفان يف ةذفنملا
( والشكل
5
) يبين النوافذ الداخلية لنافذة البرنامج
MATLAB
.... بعد تفعيلها
مالحظات
:
1
-
كال متغياار فااي
MATLAB
لغااة،ةفوفااصم ناع ةرااابع
MATLAB
موجهااة بالمصاافوفات
حتى
( مفردةًادادعأ تاريغتملا تناك ناو
scalar
.)
( شكل
5
:)
النوافذ الداخلية لنافذة البرنامج
MATLAB
بعد تفعيلها
شريط القوائم
(lists bar)
شريط األدوات
(tools bar)

البرمجة بلغة
MATLAB
8
2
-
األمر
clear
ضمن
Workspace
. يستخدم لحذك المتغيرات والدوال من الذاكرة
3
-
األمر
clc
ضمن
Workspace
يستخدم
لمس نافذة
األ
مر
Window
Command
.
4
-
يمكن
إ هار
النتائج العددية
في لغة
MATLAB
بتنسيقات أ هار مختلفة
:
format short, long, short e, long e, hex, blank, +, rat,…
5
-
( يمكن تنفيذ
demonstration
)
demo
ك
يا
عازات
جاهزة في
MATLAB
:من خالل
أختر الموضوع المحدد
(مثال
Toolboxes
)
Help Demos
:يمكن االستفادة منها في
-
أ-
تنفيذ
Demos
.
ب
-
( تعليم أكثر حول الموضوع
Help
)
.
ج
-
عر شفرة
. البرنامج
د
-
استنساخ شفرة البرنامج من
Demo
إلى
M–file
.
ـــــ مالح
: ة
يمكن الدخول إلى
s
emo
D
من
6
-
ثالث نقااط متتالياة
)...(
فاي نهاياة الساطر
مسابوقة بفارا
للداللاة علاى اساتمرار االيعااز فاي
الس
.طر التالي
7
-
فارزة منقوطة بعد اإليعاز
ت
منع طباعة المتغيار أو النااتج فاي نافاذة
Command
وكاذلك فاي
نافذة
Editor
.
8
-
) تستخدم للتعليق%( ةيوئملا ةبسنلا ةراشإ
فكل نص يأتي
بعده
ا يعتبر نص تعليق
: مثل،
% This Program Compute Area
9
-
ملفات
MATLAB
تسمى
M–files
و
( تكون توسعها
.m
)
,
( ًمثال
examplel.m
.)
11
-
االحتفا بكتابة االيعازات السابقة والالحقة في
نافذة
Command
بحركة الساهم ل علاى
.واألسفل
11
-
نتيجة تنفيذ برنامج
MATLAB
)(النتائج واالخراجات
ت هار فاي شاشاة
Command
Window
.لذلك يجب االنتقال إليها بعد التنفيذ
12
-
لغااة
MATLAB
ال تحتااا
ج إلااى
اإلعااالن
عاان المتغياارات
والثواباات واألنااواع البيانيااة
األخرى
.المستخدمة بالبرنامج
13
-
لتنفيااذ مقطااع ماان البرنااامج (تعليمااة أو مقطااع ماان البرنااامج) يااتم تأشاايرها ثاام النقاار
أيماان
فت هر القائمة المنسدلة
:
Start
لحساب الجزء المنشر وإ هار النتيجة في نافذة
Command
الذهاب إلى الدالة المنشرة
الذهاب لل
ـ
Help
للجزء المنشر
قص
نسخ
لصق

البرمجة بلغة
MATLAB
9
وبعد ذلك نختار
Copy
وننتقل إلى
Command Window
ون
ختار
Paste
.وننفذها
14
-
إلنشاااء ملااك نصااي
M-file
أنقاار علااى أي،
ك
ونااة الصاافحة الفارغااة (البيضاااء) الموجااودة
ضامن شااريط
أدوات
سااط مكتاب
MATLAB
أو اختاار،
New
ماان القائماة
File
وماان ثاام
اختر
M-file
أو اختيار
Open
.لفت ملك موجود مسبقا
يستدعي هذ
ه
ا
ألوامر
نافاذة محارر
النصوص
التي يمكنك
في كتابة أوامر
MATLAB
)(نافذة كتابة البرامج
. كماا فاي األشاكال
(
6
( ,)
7
( ,)
8
.)
15
-
يمكاان
تنفيااذ الملااك المخاازون
باختيااار أي
ك
ونااة
Run
الموجااودة فااي شااريط أدوات نافااذة
Editor
أو عبار ضاغط المفتاا
F5
أو االختياار
Run
مان القائماة
Debug
أو،
كتاباة اسام
الملك المخزون أمام عالماة الحاث
>>
فاي نافاذة
Command
.
بعاد انتهااء كتاباة البرناامج
)(الملك
يخزن هذا الملك كملك
M-file
باسم معاين
(
ًماثال
example1.m
) علاى قرصاك
الصلب عبر اختيار
االختياار
Save
مان القائماة
File
أو
الخازن ضامن شاريط أدوات ساط
مكتب
MATLAB
.)
( كما في الشكل
9
.)
:مالح ة
عند الخزن يحمل ال
برنامج اسم افتراضي
(Untitle1)
فباإلمكان إعطااء االسام الاذي يرغاب فياه
.المبرمج أو البقاء عليه
تنفيذ البرنامج
خزن البرنامج

البرمجة بلغة
MATLAB
10
16
-
عندما نريد إغالق برناامج
MATLAB
عبار
االختياار
Exit MATLAB
مان القائماة
File
الموجااودة فااي نافااذة سااط مكتااب
MATLAB
أو عباار كتابااة األماار
Exit
فااي
نافااذة
Command
أو عالمة،
)×(
في زاوية سط مكتب
MATLAB
.العليا اليمنى
17
-
اإليعاز
global
.لإلعالن عن متغير عالمي بين الدوال والبرنامج الرئيسي
18
-
( لحساب زمن تنفيذ البرنامج نضع تعليمتي
tic
( ) و
toc
.) بين االيعازات
:مثال
clc;
clear;
tic;
(commands)
t = toc;
19
-
للبحث عن إيعاز في ا
لـ
Help
:من خالل
يفضل كتابتها في بداية
أي بر
نامج رئيسي

البرمجة بلغة
MATLAB
11
Help MATLAB Help
: منها،زاعيلإا نع ثحبلل قرط ةدع كانه
-
1- Contents.
2- Index.
3- Search.
4- Demos.
21
-
اإليعاز
break
يقوم بايقاك تنفيذ البرناامج أو جازء مان البرناامج أو الدالاة (التعليماات
التي بعد
break
ــُــال ت
.)نفذ
ةــلـــــثمأ
:
function ……. if ……. …….
……. ……. …….
……. else …….
……. break; break;
break; .…….
….….
}
توقك تنفيذ الدالة فقط
{
}
توقك في حالة
{else
ال
تنفذ

البرمجة بلغة
MATLAB
12
21
-
اإليعاز
return
.للخروج من الدالة
function …… : مثال
……..
…….
……
return;
……..
.…...
22
-
.رسالة الخطأ تحتوي على رقم السطر ونوع الخطأ
23
-
أي عملية حسابية غير منسبة إلى متغير تنسب ت
لقائيا إلى المتغير
ans
.
24
-
.أي متغير غير مستخدم ويدخل في العمليات فان البرنامج سوك يعطي خطأ
رموز لغة
MATLAB
:
MATLAB Symbols
تتكون لغة
MATLAB
:من العناصر األساسية التالية
أ-
حروك أبجدية إنكليزية
:
:وهي
A, B, … , Z, a, b, … , z
ب
-
:أرقام حسابية
0, 1, 2, …, 9
ج
-
:رموز خاصة مثل
+ , - ,= , > , < , ; , *, ) , (
,
{
,
.... الخ
الثوابت
Constants
:
يوجد في لغة
MATLAB
:أنواع متعددة من الثوابت أهمها
-
خروج من الدالة
ال
تنفذ

البرمجة بلغة
MATLAB
13
(أ) الثوابت العددية
Numerical Constants
:
:وتتكون من عدد من األرقام ولها عدة أشكال هي
(
1
) الثوا
:بت الصحيحة
مثل
:
0, +23, 472, -18
مالح ة
:
.أكبر عدد صحي مستخدم
>> bitmax
ans =
9.007199254740991e+015
والتي تقابل
1
-
53
2
(
2
:) الثوابت الحقيقية
:مثل
0.0, 51.8, 472.5, -18.0
>> realmin : مالح ة
ans =
2.225073858507201e-308
>> realmax
ans =
1.797693134862316e+308
>> pi
ans =
3.146
(
3
ً) الثوابت الحقيقية المدونة تدوينا
يائي
:ًا
حيث تحول الصايغة الجبرياة
N
10
إلاى صايغة
MATLAB
ي
ائيااة
EN
فمااثال تصااب
0
2.
3
10
:فااي الجباار
2.0E3
أو
2.0E+3
بالتاادوين اليااائي فااي
MATLAB
وكذلك تصب
1.7
2
10
-
:في الجبر
1.7E2
-
في التدوين اليائي وكذلك تصب
0.0032
:
3 : 3.2
-
3.2E
3
-
10
(
4
) الثوابت
العقدية
:
مثل
:
1 - 2i
,
6 - 9i
,
6 + sin (0.5) * j
,
sqrt (-2)
:حيث
1
i = j =
مثال
1
:
:إذا كان
4.9497i
–
7.7782
-
=
c
فالستخراج الجزء الحقيقي
(c)
cr = real
cr = -7.7782
وإلستخراج الجزء التخيلي
ci = -4.9497 ci = imag (c)

البرمجة بلغة
MATLAB
14
مثال
2
:
9.000i
–
6.000
1) * 3)
-
sqrt (
–
c2 = 3 * (2
مثال
1
:
مثال
2
:
>> x = 100; >> x = 100;
>> x = double (x); >> x = uint8 (x);
>> y = x + 1; >> y = x + 1;
y = 101 Error
(ب) الثوابت الرمزية
:String Constants
يسمى هذا
ألن الثابات هاذا يتكاون مان حاروك وأرقاام ورماوز توضاع باينًازاجم "تباوث" نم عونلا
عالمتي اقت
بااس
quotations
مفاردة أي
' '
ويساتخدم عاادة كعنااوين توضا القايم الناتجاة مان الحساابات
. تسمى العبارات التالية والموجودة بين الحاصرات العليا ثوابت رمزية،اهتادحوو
'The speed of wind ='
ُُ'I love Basrah'
'My birthday = 1970'
وان اساتخدمت أ،هلااعأ ةايزمرلا تاباوثلا لك
ومان،يبااسح ىانعم لامحت لا ياهف ،ااهلخاد ةيبااسح ااماقر
،الجدير بالذكر أثناء استعمال الثوابت الرمزياة اناه ال يجاوز اساتخدام حاصارات علوياة داخال حاصاراتها
Numeric
)الرقمية (العددية
int8, uint8 (1 byte)
int16, uint16 (2 bytes)
int32, uint32 (4 bytes)
int64, uint64 (8 bytes)
single
نوع
real
(4 bytes)
double
االفتراضي في
MATLAB
real
نوع
(8 bytes)
ال تدخل في العمليات الحساب
ية
(
تستخدم لتقليل حجم الخزن
)
ال تدخل في العمليات الحسا
بية
تدخل في العمليات الحسابية

البرمجة بلغة
MATLAB
15
رمزية للحروك يعتبر الحركًاميق كانه نأ يأ هيبنتلا يغبني امك
A
اقل من الحرك
B
ويمكن كتابة ذلك
بالصورة
:
'A' < 'B'
ـ(ج
) الثوابت المنطقية
:Boolean Constants
وهي الثوابت التي قيمتها العددية
(1)
في حالة
true
و
(0)
في حالة
false
.
مثال
:
3 > 2 1
0 > 5 0
المتغيرات
Variables
:
هناك بع القواعد الواجب مراعاتها عند كتابة اسم المتغي
:ر وهي
1
.
ال يمكن استخدام الكلمات المفتاحية (الكلمات المحجوزة) أو الدوال التي توفرها اللغاة كأساماء
مثال،تاريغتم
:
if, end, for, break, else, global, return, function, sin, log, …
2
. أسماء المتغيرات حسا
س
( ة لحالاة الحارك
COST, CoST, cost, Cost
,متغيارات مختلفاة
وكذلك
A
و
a
.)
3
.
حرك
l
(
small letter
) في لغة
MATLAB
يشبه رقم
.1
4
. يمكن ألسماء المتغيرات أن تحوي
63
رمزا وسيهمل أي رمز زائد عن
63
.
5
. يجاااب أن تبااادأ أساااماء المتغيااارات بحااارك متبوعاااا باااأي عااادد مااان األرقاااام أو األحااارك أو
underscore
. وال يجو
ز
استخدام الرموز الخاصة أو
. الفرا
6
. جميع
أوامر
MATLAB
تكتب بالحروك الصغيرة
(if, while, input, …)
.
هناك عدة أنواع من المتغيرات في لغة
MATLAB
وهي
:
)(أ
المتغيرات العددية
:Numerical Variables
تتكون من حرك واحد أو مجموعة من الحروك من
A
إلى
Z
و
a
إلى
b
ويمكن أن يحتوي على أرقام
ماان
0
إلااى
9
ويمكاان أن تكااون سلساالة ماان األرقااام والحااروك بشاارط أن يباادأ بحاارك (خلاايط ماان
أرقااام
وحروك مبدوءة بحرك) ويمكان كاذلك أن يحتاوي المتغيار علاى
underscore
حتاى
63
. وتكاونًازامر
عقدي،يقيقح ، يحص ( ةيددع ريغتملا ةميق
أو
أسي
.)
مثال
:

البرمجة بلغة
MATLAB
16
Ali_Ahmed, X2, S2, ks, K
التعبير الحس
ابي
يتكون التعبير الحسابي من مجموعة من الثوابات والمتغيارات تجماع بينهماا عملياات حساابية ويساتخدم
فيهاااا الرماااوز
، الحساااابية مثااال
-
،/ ،
*
،
واألمثلاااة يالتياااة تعبااار عااان تعاااابير جبرياااة صااايغت بلغاااة^
MATLAB
.
التعبير الجبري
التعبير
بلغة
MATLAB
a – 3 * b a – 3b
c
^
2 – 10 c
2
- 10
(a ^ 2 + b ^ 2) / 12 a
2
+ b
2
/ 12
m * (7 * d – 8 * g) m (7d – 8g)
)قاعدة األسبقية (األولوية
Rule of Precedence
وهذه القاعدة مهمة في فهم وترتيب
أولويات
العمليات الحسابية في التعابير والمعاامالت الحسااب
كماا،ةي
وتنص القاعدة على أن األولوية األولى تعطى للعمليات الموجاودة باين القوساين،بساحلا اهذفنيو اهيرجي
، والضارب (أو القسامة) ثانياا,لاوأ سلأا ىالإ عفرلااف ةيبااسحلا تايلمعلل ةبسنلابو ,نيميلا ىلإ راسيلا نمو
والمثال التالي يوضع هذه القاعدةًاريخأ ) رطلا وأ( عمجلاو
:
:التعبير
A / B + C
يكافئ في الجبر
B
A
+ C
( بينما يكافئ التعبير
B + C
/ )
A
يكافئ في الجبر
C
B
A
الن الجمع داخل
األقواس
حسب األولوية ثم يقسمًلاوأ يرجي
ُ
A
.على نتيجة القوس
1
2
2
1

البرمجة بلغة
MATLAB
17
مثال
:
التعبير
M)
^
A - B / (K * F - X
:تنفيذ العمليات حسب الخطوات التالية
وتنفذ العمليات داخلها،ىلولأا ةيولولأا ساوقلأا ذخأت
.حسب األولوية أيضا
العملية األولى
رفع:
X
إلى األس
M
.لتصب كمية واحدة
العم
:لية الثانية
ضرب
K
في
F
.لتصب كمية واحدة
العملية الثالثة
. طر نتيجة العملية األولى من نتيجة العملية الثانية وتصب النتيجة كمية واحدة:
العملية الرابعة
تقسم:
B
.على نتيجة العملية الثالثة وتصب النتيجة كمية واحدة
العملية الخامسة
تطر نتيجة العملية الرابعة:
من
A
.وتصب النتيجة كمية واحدة
الجملة الحسابية
Arithmetic Statement
الجملة الحسابية في
MATLAB
تكافئ المعادلاة الحساابية فاي الجبار إال أن
MATLAB
تشاترط أن
يكون اسم المتغير المراد حساب قيمته في الطرك األيسر وحد
ه
بدون أشارة بينما يكاون التعبيار الحساابي
(بقي
ة
: كما في األمثلة التالية،نميلأا كرطلا يف )ةلداعملا
1( y = A * X + B
2) A = 3.14 * R ^ 2
مثال
:
:أولوية العمليات الحسابية في الجمل الحسابية
Z = A – B / C
3
4
2
5
1
2
3
1

البرمجة بلغة
MATLAB
18
يمكاان مالح ااة أن إشااارة المساااواة تمثاال يخاار أولويااة حسااابية بعااد انتهاااء جميااع العمليااات الحسااابية فااي
الطرك
.األيمن
(ب) المتغيرات الرمزية
:String Variables
تشبه في تركيبها المتغيرات العددية والفرق الوحيد بينهماا هاو أن قيماة المتغيار الرمازي تكاون رمزياة
(محصورة بين عالمتي
اقتباس
.)
الجملة الرمزية
String Statement
تشبه في تركيبها الجملة الحسابية والفرق الوحيد ب
ًينهما هو أن المتغير في طرفهاا األيمان يكاون رمزياا
.(محصورة بين عالمتي اقتباس) والتعبير في طرفها األيسر يكون متغير
:واألمثلة التالية توض ذلك
A = 'Hameed Abdul–Kareem';
N = 'Number of Student';
Dept = ُُ'Computer Science';
مالح ة
:
التعاابير فاي الطارك األيمان ال
يكاون لهاا قايم حساابية لاو
اساتخدمت
فاي عملياات حساابية ألنهاا
موضوعة داخل
' '
.
االقترانات المكتبية
Library Functions
:
يتااوفر فااي مع اام الحاساابات
باسااتخدام
لغااة
MATLAB
اقترانااات
مثاال،اااهل انلامعتااسا رااثكي ةيااضاير
الدوال
و
االقترانات
المثلثية واللوغارتيمية وغيرها ويمكن
: ومنها،تقو يأ يف اهئاعدتسا
االقتران
نىـــــــــعملا
Sqrt
الجذر التربيعي
abs
القيمة المطلقة
exp
المرفوع إلى قوة بأساس
10
log
اللوغاريتم الطبيعي
10
og
l
اللوغاريتم العشري
2
og
l
اللوغاريتم ذو األساس
2
sin
جيب الزاوية
Cos
جيب تمام الزاوية

البرمجة بلغة
MATLAB
19
Tan
ل الزا
وية
atan
ل معكوس الزاوية
fix
التدوير
باتجاه
الصفر
floor
التدوير
باتجاه
الالنهاية السالبة
ceil
التدوير
باتجاه
الالنهاية الموجبة
round
التدوير
باتجاه
أقرب عدد صحي
mod
الجزء الصحي من حاصل القسمة
rem
بقية القسمة
Sign
سالب,ةبجوم تناك اذإ ددعلا ةراشإ
صفر,ة
imag
القسم التخيلي
real
القسم الحقيقي
factor
العوامل األولية
Isprime
يعيد
true
إذا كان العدد
أوليا
primes
ينشئ قائمة باألعداد األولية
gcd
القاسم المشترك األع م
lcm
المضاعك المشترك األصغر
مثال
:
>> x = 2.6;
>> y1 = fix (x); y2 = floor (x); y3 = ceil (x); y4 = round (x);
y1 = 2
y2 = 2
y3 = 3
y4 = 3 ؟ س/ مالفرق بين الدوال األربعة أعاله
:مالح ة
.تأخذ االقترانات المكتبية أولوية بعد األقواس عند تنفيذ العمليات الحسابية

البرمجة بلغة
MATLAB
20
)
(
m
a
y
x
t
5
2
3
c
ab
p
g
sin (a + b) – m / sqrt (d)
:يكون تنفيذ العمليات الحسابية كما يلي
العملية األولى
إيجاد قيمة جمع:
a
مع
b
.
العملية الثانية
( إيجاد قيمة جيب الزاوية لناتج العملية:
1
.)
العملية الثالثة
ــ إيجاد قيمة الجذر التربيعي ل:
d
.
العملية الرابعة
إيجاد ناتج قيمة ناتج ق:
سمة
m
( على ناتج العملية
3
.)
العملية الخامسة
( طر ناتج العملية:
4
( ) من ناتج العملية
2
) وتصب النتيجة النهائية كمياة واحادة
(
ًعاددا
ًواحدا
)
.
مثال
:
تمثل الجمل التالية إقترانات مكتبية في الجبر
وإزائها
قيمتها في
MATLAB
:
10
2
a
b
b = sqrt ( a ^ 2 + 10 )
z = ln (cx + ny)
z = log (c * x + n * y)
(x + nk)
3
y = sin
k)) ^ 3
*
n
+
y = (sin (x
x)
/
(y
1
-
s = tan
x)
/
n (y
a
= at
s
5
2
x
e
r
)
)
5
–
x
(
sqrt (exp
*
r = 2
t = abs (x – sqrt (y)) / (a + m)
g = p ^ (3 / 2) + (a * b / c) ^ (1 / 5)
5
4
3
1
2

البرمجة بلغة
MATLAB
21
المصفوفات والعمليات على المصفوفات
.لقد كانت جميع الحسابات التي أجريتها حتى اآلن منلفة من أعداد وحيدة البعاد سنساميها أعاداد مفاردة
وتعتبر العمليات المجراة على األعداد المفردة
وعندما يريد،تقولا سفنبو .تايضايرلا ملع تايساسأ يه
، فسيحتاج إلى أكثر إعادة إجراء العملية عادة مارات،رثكأ وأ درفم ددع ىلع ةيلمعلا سفن ءارجإ صخشلا
عماد برناامج،ةلكاشملا هذاه لاحلو .داهجلاو تاقولا يف رده ينعي امم
MATLAB
إلاى إجاراء العملياات
الرياضية على مصفوفة من البي
.انات
المصفوفة البسيطة
يتعامل برنامج
MATLAB
مع المصفوفات بشكل مباشار وبطريقاة سلسا
ل
إذ أن إنشااء المصافوفات،ة
.ًيتم بطريقة سهلة جدا
x = [1, 3, 7, 9, 20] :)1( مثال
مثال
(
2
)
:
= sin (x)
y
حيث
x
0
x
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
y
0
0.31 0.59 0.81 0.95
1
0.95 0.81 0.59 0.31
0

البرمجة بلغة
MATLAB
22
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)
ans =
0 0.3142 0.6283 0.9425 1.2566
هذه هي العناصر الخمسة األولى من المصافوفة
x
ويجبارك الرماز،
1: 5
باأن تبادأ باالرقم
1
حتاىّداعتو
الرقم
5
.
مثال
:
>> x (7: end)
ans =
1.885 2.1991 2.5133 2.8274 3.1416

البرمجة بلغة
MATLAB
23
وهنا تكمل من العنصر السابع وحتى نهاية
إذ تشير الكلمة،ةفوفصملا
end
إلى يخر عنصار مان عناصار
.المصفوفة
:مثال
>> y (3: -1: 1)
ans =
0.5878 0.3090 0
ويخبرك الرمز،يسكع بيترتب لولأا مث يناثلا مث ثلاثلا رصنعلا انه
3: -1: 1
بأن تبادأ باالرقم
3
ّوتعاد
بقيمةًلاوزن
1
وتقك عند الرقم
1
.
:مثال
>> x (2: 2: 7)
ans =
0.3142 0.9425 1.5708
هنا العنصر الثاني والرابع والسادس من المصفوفة
x
ويخبرك الرمز،
2: 2: 7
باأن تبادأ باالرقم
2
ّوتعاد
ــنحو األعلى ب
2
وتقك عندما تصل إلى الرقم
7
.
:مثال
>> y ([8 2 9 1])
ans =
0.8090 0.3090 0.5878 0
استخدمنا هنا مصفوفة أخرى
[8 2 9 1]
لوضع عناصار المصافوفة
y
،بالترتياب الاذي نرغاب فياه
والعنصار األولًااثلاث عاساتلا راصنعلا عاضو اامنيب ،ايناث يناثلا رصنعلاو ًلاوأ نماثلا رصنعلا عضو ثيح
رابعا. في الواقع تدل المصفوفة
[8 2 9 1]
عناوين العناصر ا
لمرغوبة من المصفوفة
y
.
:مثال
>> y ([1 1 3 4 2 2])
ans =
0 0 0.5878 0.8090 0.3090 0.3090
:مثال
توض األمثلة
التالية بأن برنامج
MATLAB
ال
يقبل الدليل كرقم غير صحي
حيث
يعطي
رسالة
خطأ
.

البرمجة بلغة
MATLAB
24
>> 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 )
:مثال
>> a = [1: 7]
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
القيمة االبتدائية
عدد القيم
القيمة النهائية

البرمجة بلغة
MATLAB
25
:مثال
>> 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
وبذلك تم إنشاء مصفوفة
c
منلفة من عناصر
b
متبوعة بعناصر
a
.
تكييف المصفوفة
فان فصل العناصر بفراغات أو بفواصل عادية يحدد عناصر فاي أعمادة،قباسلا لاثملا ىلع دامتعلااب
م
. في حين أن استخدام الفاصلة المنقوطة يجعل العناصر واقعة في أسطر مختلفة،ةفلتخ
:مثال
>> c = [1 2 3 4 5]
c =
1 2 3 4 5 مصفوفة أفقية
:مثال
>> c = [1; 2; 3; 4; 5]
c =
1
مصفوفة عمودية (كل عنصر في
)سطر
2
3
4

البرمجة بلغة
MATLAB
26
5
:مثال
>> a = 1: 5
a =
1 2 3 4 5
:مثال
>> b = a'
b =
1
2
3
4
5
:مثال
>> k = b;
(
نت
سيب
)المصفوفات
:مثال
>> 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]
لقد استخدمنا هنا إشارة المنقول (المدور) لتحويل السطر
a
إلى العمود
b
.
تنزيل سطر يخر

البرمجة بلغة
MATLAB
27
كذلك فأن ضغط مفت
ا
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 =
2
:مالح ة
تقدم لغة
MATLAB
ول،طاقف داحاو مقر مادختساب ةفوفصملا رصانع ىلإ ةراشلإل ىرخأ ةقيرط
فهام
هااذه الطريقااة يجااب التخياال بااأن جميااع عناصاار المصاافوفة مرتبااة بشااكل عمااود واحااد مكااون ماان أعماادة
.)المصفوفة من األعلى إلى األسفل (أي عناصر العمود األول ثم الثاني ثم الثالث وهكذا
>> c (12)
ans =
4
العمليات الحسابية بين المصفوفة والعدد المفرد
تجري العدي
د من العمليات الحسابية كعملية اإلضافة والطر والضرب والقسمة بين العدد المفرد وباين
.جميع عناصر المصفوفة

البرمجة بلغة
MATLAB
28
:مثال
>> 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
9 11 13 15
17 19 21 23
:مثال
>> 2 * g / 5 + 1
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
بالعدد
2
ُ ثم ط,
ر من ك
ل عنصر من العناصر
الناتجة الرقم
.1

البرمجة بلغة
MATLAB
29
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
>> ans – h
ans =
1 2 3 4
5 6 7 8
9 10 11 12
>> 2 * g – h
ans =
1 3 5 7
8 10 12 14
15 17 19 21
>> 2 * (g – h)
ans =
0 2 4 6

البرمجة بلغة
MATLAB
30
6 8 10 12
12 14 16 18
ال
بأن العمليات الحساابية باين المصافوفات تعتماد نفاس تسلسال أسابقية العملياات المعتماد عنادًاضيأ ح
اساتخدام األقاواس لكسار تلاك األولوياة. كمااًااضيأ ناكميو ,ةدرفملا دادعلأا ىلع ةيباسحلا تايلمعلا ءارجإ
ويمكن ضرب كل عنصر بالعنصر المنا ر لاه مان المصافوفة األخارى أو قسامته شارط
سابق إشاارةُت نإ
:الضرب أو القسمة بنقطة كما في الشكل
>> g .* h
ans =
1 2 3 4
10 12 14 16
27 30 33 36
ولقد قمنا هنا بضرب المصفوفة
g
بالمصفوفة
h
عنصر بعنصر عبر استخدام إشارة الضارب المسابوقة
.بنقطة
:مالح ة
يجعل
وجود النقطاة
أماام إشاارة الضارب القياساية برناامج
MATLAB
يضارب المصافوفتين
,عنصرا بعنصر
.بينما تخبر إشارة الضرب لوحدها البرنامج بان يقوم بضرب مصفوفات عادية
>> g * h
Error
الن عدد األسطر للمصفوفة
g
عدد األع
مدة للمصفوفة
h
كما
إن
بعنصر ممكناة عان طرياق كتاباةًارصنع نيتفوفصم ةمسق
إشاارة
القسامة مسابوقة بنقطاة كماا فاي
:المثال التالي
>> g ./ h
ans =
1.0000 2.0000 3.0000 4.0000
2.5000 3.0000 3.5000 4.0000
3.0000 3.3333 3.6667 4.0000
:مالح ة
عندها سيقوم برنامج,ةطقنب ةمسقلا ةراشإ ىدحإ تقبس اذإ
MATLAB
بتقسيم المصافوفتين
. فاننا ستحدد قسمة مصفوفات عادية,ةطقن نودب ةمسقلا تناك اذإ امأ .رصنعب ارصنع

البرمجة بلغة
MATLAB
31
>> g .^ 2
ans =
1 4 9 16
25 36 49 64
81 100 121 144
ولقد وجدنا هنا مربع كل عنصر من عناصر المصفوفة
g
.
المصفوفات القياسية
نااك برنااامجّكمي
MATLAB
وذلااك لتمتااع تلااك المصاافوفات بخااواص,ةيااسايق تافوفااصم ءاااشنإ ناام
ً وتتضمن أيضا,ةصاخ تازيمو
المصفوفات التي جميع عناصرها صفرية
ومصفوفات,دحاولل ةيواسم وأ
األعداد العشوائية والمصفوفات القطرية والمصفوفات التي عناصرها
أعداد
.ثابتة
>> ones (3)
(مصفوفة
واحديه
)
ans =
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
األعمدة األسطر

البرمجة بلغة
MATLAB
32
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 =
0.9501 0.4860 0.4565
0.2311 0.8913 0.0185
0.6068 0.7621 0.8214
>> rand (1, 5)
ans =
0.4447 0.6154 0.7919 0.9218 0.7382
:مثال
>> d = pi;
>> d * ones (3, 4)
ans =
3.1416 3.1416 3.1416 3.1416
3.1416 3.1416 3.1416 3.1416
3.1416 3.1416 3.1416 3.1416
>> d + zeros (3, 4)
ans =
3.1416 3.1416 3.1416 3.1416

البرمجة بلغة
MATLAB
33
3.1416 3.1416 3.1416 3.1416
3.1416 3.1416 3.1416 3.1416
>> repmat (d, 3, 4) (3
4 باألبعادd ةميقلا راركت(
ans =
3.1416 3.1416 3.1416 3.1416
3.1416 3.1416 3.1416 3.1416
3.1416 3.1416 3.1416 3.1416
مالح ة
:
يمكن ان تكون
d
مصفوفة فتكون حينئذ تكرر مصفوفا
.ت وليس قيم
التعامل مع المصفوفة
لقد امتلك
برنامج
MATLAB
وكانت هاذه الخاصاية هاي,تافوفصملا عم لماعتلل قرطلا نم ديدعلا
التوساعة,لااخدلإا قراط ىوقأاب جماانربلا كدوزاي ىاتح ةفوفاصملا دّدحُت نإ امف ,جمانربلا تازيمم مهأ
أو
إعادة
ترتيب بع
أجزاء
المصفوفة عبر استعمال ت
عابير
أو
وتعتبر معرفاة هاذه,ةعتممو ةددحم تاميلعت
التعليمات مفتا االستعمال الفعال لبرنامج
MATLAB
. ولشار التعامال ماع المصافوفات نأخاذ األمثلاة
:التالية
>> A = [1 2 3; 4 5 6; 7 8 9]
A =
1 2 3
4 5 6
7 8 9
>> A (3, 3) = 0
A =
1 2 3
4 5 6
7 8 0
>> A (2, 6) = 1
A =
1 2 3 0 0 0
جعل العنصر في الموقع
(3, 3)
.ًصفرا
جعل العنصر في الموقع
(2, 6)
تكون
1
وبما ان المصفوفة
A
ال
لذلك سيقوم البرنامج بتوسيعها حسب الضرورة,ةدمعأ ةتس كلتمت
. وتكون مستطيلةًارفص رصانعلا يقب عضيو

البرمجة بلغة
MATLAB
34
4 5 6 0 0 1
7 8 0 0 0 0
>> A (:, 4) = 4
A =
1 2 3 4 0 0
4 5 6 4 0 1
7 8 0 4 0 0
>> A (:, 4) = [4; 4; 4]
A =
1 2 3 4 0 0
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 =
جعل جمي
ع عناصر العمود الرابع تكون
4
جعل جميع عناصر العمود الرابع تكون
4

البرمجة بلغة
MATLAB
35
1 2 3 7 9
4 5 6 4 6
7 8 9 1 3
>> B = A (1: 2, 2: 3)
B =
2 3
5 6
:مثال
تشكيل المصفوفة
B
بجعل المصفوفة
A
.كمصفوفة عمود واخذ أعمدتها عمود بعد عمود
>> B = A (:)
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
حصلنا على المصفوفة
C
عبر توسيع المصفوفة
A
باضافة
العمودين األول والثالث من المصفوفة
B
.

البرمجة بلغة
MATLAB
36
في المثال أعاله إيعاز تحويل أبعاد المصفوفة الثنائية
3*3
إلى مصفوفة أحادية
1*9
:مثال
>> A = B
A =
1 2 3
4 5 6
7 8 9
>> B (:, 2) = [ ]
B =
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
تمت إعادة صياغة المصفوفة
B
عبر حذك كل اسطر العمود الثاني من
المصفوفة
B
وعندما تضع أي عنص,ةيلصلأا
للمصفوفة الفارغةًايواسم ر
[ ]
,
فهذا يعني انك تريد حذفها من المصفوفة وتقليصها لتحاف على العناصر المتبقية
.بعد الحذك

البرمجة بلغة
MATLAB
37
:مثال
استبدلنا عناصر السطر الثاني من المصفوفة
A
بعناصر
C
.
>> A (2, :) = C
A =
1 2 3
1 4 7
7 8 9
:مثال
>> x = -3: 3
x =
-3 -2 -1 0 1 2 3
هناااك المصاافوفات المنطقيااة الناتجااة عاان العمليااات المنطقيااة. كمااا يمكاان
ًأيضااا
اسااتخدام المصاافوفات
المنطقية
إذا
كان حجمها مساويا لحجم المصافوفات المعن
وياتم فاي هاذه الحالاة,ةانو
اإلبقااء
علاى العناصار
ذات القيمااة
(1)
أي
true
وهااي العناصاار المحققااة للشاارط بينمااا يتجاهاال ال
عناصاار
(0)
أي
false
وهااي
العناصر
:غير المحققة الشرط. ولنأخذ المثال التالي
>> 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

البرمجة بلغة
MATLAB
38
x =
1 1
0 1
>> y = B (x)
y =
5
-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)]
المواقع القديمة الترتيب الجديد

البرمجة بلغة
MATLAB
39
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
>> [As, idx] = sort (A)
As =
1 2 1 1 3 1
2 2 5 2 4 3
3 3 6 5 4 5
4 5 6 6 4 6
idx =
1 1 4 3 2 2
3 2 1 4 1 1
4 3 2 2 3 3
2 4 3 1 4 4
البحث عن مصفوفة جزئية
من المفيد
في بع
األحياان
إن تعارك موقاع
أو
والموجاودة,اانيعم اطراش قاقحت ياتلا راصانعلا لايلد
ضمن مصفوفة معينة. يقوم برنامج
MATLAB
بتحقيق هذه الغاية عبر االيعاز
find
والذي يعياد لاك,
دليل
أو
موقع العنصر
الذي تكون نتيجة تحقيقه لشرط ما
true
,
:واليك المثال التالي
>> x = -3: 3
x =
-3 -2 -1 0 1 2 3
>> k = find (abs (x) > 1)
k = ) (الموقع
1 2 6 7

البرمجة بلغة
MATLAB
40
>> y = x (k)
y =
-3 -2 2 3
>> y = x (abs (x) > 1)
y =
-3 -2 2 3
وي
ستطيع االيعاز
find
أن يعمل في المصفوفات الثنائية البعد أيضا
)(عمود بعد عمود
,
:فمثال
>> A = [1 2 3; 4 5 6; 7 8 9]
A =
1 2 3
4 5 6
7 8 9
>> [i, j] = find (A > 6)
i =
3
3
3
j =
1
2
3
مالح ة
:
االيعاز
diag
.يوجد عناصر القطر الرئيسي للمصفوفة
A =
9
8
8
7
9
8
7
6
5
4
9
9
7
9
9
8
>> diag (A)

البرمجة بلغة
MATLAB
41
ans =
7
8
8
9
مالح ة
:
ياوفر برناامج
MATLAB
الادالتين
max
،
min
الاذين يوجادان اكبار واصاغر عنصار فاي المصافوفة
.ومواقعهما
ف
:ي حالة المصفوفة األحادية
>> v = rand (1, 6)
v =
0.3046 0.1897 0.1934 0.6822 0.3028 0.5417
>> max (v)
ans =
0.6822
>> [mx, i] = max (v)
mx =
0.6822
i =
4
>> min (v)
ans =
0.1897
>> [mn, j] = min (v)
mn =
0.1897
j =

البرمجة بلغة
MATLAB
42
2
:في حالة كون المصفوفة ثنائية البعد
>> A = rand (4, 6)
A =
0.1509 0.8537 0.8216 0.3420 0.7271 0.3704
0.6979 0.5936 0.6449 0.2897 0.3093 0.7027
0.3784 0.4966 0.8180 0.3412 0.8385 0.5466
0.8600 0.8998 0.6602 0.5341 0.5681 0.4449
>> [mx, r] = max (A)
mx =
0.8600 0.8998 0.8216 0.5341 0.8385 0.7027
r =
4 4 1 4 3 2
مالح ة
:
>> max (A'); ) (اكبر عنصر لكل سطر
>> [mn, r] = min (A)
mn =
0.1509 0.4966 0.6449 0.2897 0.3093 0.3704
r =
1 3 2 2 2 1
مالح ة
:
>> min (A'); ) (اصغر عنصر لكل سطر
. اكباار عنصاار فااي مصاافوفة ثنائيااة البعااد:ةاا حلام>>
mmx = max (mx)
mmx =
0.8998
>> [mmx, i] = max (A (:))

البرمجة بلغة
MATLAB
43
mmx =
0.8998
i =
8
مالح ة
:
:توجد طريقة أخرى
>> z = max (max (A));
>> z = min (min (A));
مالح ة
:
نفس الشيء لحساب المج
موع
sum
.
>> z = sum (sum (A));
توابع التعامل مع المصفوفة
يزودك برنامج
MATLAB
,
باإلضافة
إلى
عنونة المصفوفات والمقدرة على التعامل مع المصافوفات
ًالتي شرحناها سابقا
,
: وهي سهلة التطبيق مثل,تافوفصملا عم لماعتلا تايلمعب
>> A = [1 2 3; 4 5 6; 7 8 9]
A =
1 2 3
4 5 6
7 8 9
>> flipud (A) up-down قلب المصفوفة باتجاه
ans =
7 8 9
4 5 6
1 2 3
>> fliplr (A) left-right
قلب المص
فوفة باتجاه
ans =
3 2 1
6 5 4
9 8 7

البرمجة بلغة
MATLAB
44
>> triu (A) (upper) استخالص الجزء المثلية العليا
ans =
1 2 3
0 5 6
0 0 9
>> tril (A) (lower) استخالص الجزء المثلية السفلى
ans =
1 0 0
4 5 0
7 8 9
>> g = det (A); ) حساب محدد المصفوفة (قيمة
>> h = inv (A);
( حساب معكوس المصفوفة
)مصفوفة
>> i = eig (A); حساب القيم الذاتية للمصفوفة
>> j = eye (3) حساب مصفوفة الوحدة
j =
1 0 0
0 1 0
0 0 1
>> trace (A); حساب مجموع عناصر القطر الرئيسي
حجم المصفوفة
إذا أردت
أن
تعرك حجم
أو
بعد مصفوفة
أحادية
أو
ثنائية
أو
ثالثية البعد غير معاروف
ين وكنات بحاجاة
لحجمها
إلجراء
فان برنامج,ةيضايرلا تايلمعلا عب
MATLAB
يمكنك مان خاالل االيعااز
length
و
size
و
numel
:واليك األمثلة التالية
>> A = [1 2 3 4; 5 6 7 8]
A =
1 2 3 4
5 6 7 8

البرمجة بلغة
MATLAB
45
>> S = size (A)
S =
2 4
يعبر العنصر األول عن عدد األسطر
(2)
بينما يعطي العنصر الثاني عدد األعمدة
(4)
.
>> [r, c] = size (A)
r =
2
c =
4
>> r = size (A, 1)
r =
2
>> c = size (A, 2)
c =
4
يعيد االيعاز
numel
العدد الكلي لعناصر مصفوفة فم
:ًثال
>> numel (A)
ans =
8
بينما يعيد االيعاز
length
: كما يلي,ةفوفصملل لوطلأا دعبلا نمض ةدوجوملا رصانعلا ددع
>> length (A)
ans =
4
>> B = -3: 3
B =
-3 -2 -1 0 1 2 3
>> length (B)

البرمجة بلغة
MATLAB
46
ans =
7
>> min (size (A)) مصفوفة ثنائيةA
ans =
2
:مالح ة
.طريقة توليد مصفوفة بالدمج
>> x = [1 2; 3 4];
>> y = [x x .^ 2; x .^ 3 x .^ 4];
المصفوفات متعددة اإلبعاد

البرمجة بلغة
MATLAB
47
لقد شرحنا في الفصل السابق ا
لمصفوفات
أحادياة
وثنائياة
األبعااد
والعملياات التاي تجاري عليهاا. يادعم
برنامج
MATLAB
المصفوفات متعددة األبعاد (أي
(n-D arrays
وذلك نفس االيعاازات وتقنياات
العنونااة المطبقااة علااى المصاافوفات أحاديااة وثنائيااة البعااد. و
ب
ياارقم البعااد الثالااث عباار صاافحات,ماااع لكااش
(pages)
ولذلك,
حياث تتاألك كال صافحة مان,تاحفاصو ةدامعأو ارطسا دعبلا ةيثلاث تافوفصملا كلتمت
مصفوفة ثنائية البعد ذات ا
س
,طر وأعمدة
ويجب أن تمتلك كل صفحة عددا متساويا من األسطر واألعمادة
.والعكس بالعكس في كل صفحة
ولكننا سنستخدم مصافوفات ثال,تافوفصملا يف داعبلأا ددعل دح كانه سيل
ثياة األبعااد فاي هاذا الفصال
.بسبب سهولة تخيلها وإ هارها
تركيب المصفوفة
: واليك بعضها,ةفلتخم قرطب داعبلأا ةددعتملا ةفوفصملا ءاشنإ نكمي
>> A = zeros (4, 3, 2)
A (:, :, 1) =
0 0 0
0 0 0
0 0 0
0 0 0
A (:, :, 2) =
0 0 0
0 0 0
0 0 0
0 0 0
ولقد هرت الصفحة األولى ثام,نيتحفصو ةدمعأ ةثلاثو رطسا ةعبرأ نم ةيرفصلا ةفوفصملا هذه كلأتت
الصفح
.ة الثانية
:مثال
>> B (:, :, 1) = zeros (2, 3);
>> B (:, :, 2) = ones (2, 3);
>> B (:, :, 3) = 4;

البرمجة بلغة
MATLAB
48
>> B
B (:, :, 1) =
0 0 0
0 0 0
B (:, :, 2) =
1 1 1
1 1 1
B (:, :, 3) =
4 4 4
4 4 4
يمكن استخدام االيعاز
reshape
لتحويل المصفوفة من مصفوفة ثنائية
األبعاد
إلى مصفوفة ثالثية األبعاد
:وكاالتي
>> C = [B (:, :, 1), B (:, :, 2), B (:, :, 3)]
C =
0 0 0 1 1 1 4 4 4
0 0 0 1 1 1 4 4 4
>> reshape (C, 2, 3, 3)
ans (:, :, 1) =
0 0 0
0 0 0
ans (:, :, 2) =
1 1 1
1 1 1
ans (:, :, 3) =
4 4 4
4 4 4
حجم المصفوفة

البرمجة بلغة
MATLAB
49
االيعاز
size
.ًيعيد بعد المصفوفة وفق كل أبعادها كما شرحنا سابقا
>> [r, c, p] = size (C)
r =
2
c =
3
p =
3
وإذا
لم نعرك عدد
إبعاد
المصفوفة
أو
كانت
عندما نستطيع استخدام االيعاز,ةريغتم اهداعبا
ndims
كما
:يلي
>> ndims (C)
ans =
3
>> numel (C) إيجاد عدد عناصر المصفوفة
ans =
18
>> length (size (C)) إيجاد طول اكبر بعد بالمصفوفة
ans =
3
مصفوفة الخاليا
Cell Arrays

البرمجة بلغة
MATLAB
50
تعتبر مصفوفات الخاليا مصفوفات في لغة
MATLAB
تك
وتتضمن,ايلاخ نع ةرابع اهرصانع نو
من البيانات قد تكاون مصافوفات عددياةًاعون ةيلخ لك
أو
رمزياة
أو
كائناات بسايطة
أو
مصافوفات خالياا
أخرى
.
قد تحوي خلية من مصفوفة الخلية مصفوفة عددية وتحوي الخليةًلاثمف
األخرى
,مصفوفة رمزية
بينما تحوي الثالثة على
أعداد
عقدية (يسم ب
اساتخدام مصافوفات
باأنواع
))بيانياة مختلفاة (غيار متجانساة
كما ويمكن
إنشاء
ولكان مع ام,ةايددعلا تافوفاصملا عام لااحلا ياه اامك نااك داعب يأب ايلاخلا تافوفصم
مصفوفات الخاليا تكون عبارة عن مصفوفات
أحادية
.البعد
تنشأ مصفوفات الخاليا عبر استخدام تعابير
اإلسناد
أو
عبر
إعادة
تقسايم المصافوفة
باإليعااز
cell
ثام,
نقوم
باسناد
البيانات
إلى
.الخاليا
هناك
طريقتان مختلفتان للوصول
إلى
.الخاليا
وإذا
أردت
استخدام رموز مصفوفة قياساية للداللاة علاى
يجب عليك,ةفوفصملا
أن
تحيط الخلية
بأقواس
مجموعة
{ }
,
إذ
إن
برنامج
MATLAB
يستخدم
هذه
األقواس
واليك,ايلاخلا تافوفصم كيرعتل
األمثلة
:التالية
>> A (1, 1) = {[1 2 3; 4 5 6; 7 8 9]};
>> A (1, 2) = {2 + 3i};
>> A (2, 1) = {'Ali Ahmed'};
>> A (2, 2) = {12: -2: 0};
>> A
A =
[3
3 double] [2.0000 + 3.0000i]
'Ali Ahmed' [1
7 double]
الح إن برناامج
MATLAB
ي هار المصافوفة
كمصافوفة خلياة
بعاداها
2
2
ولكان ذلاك ال ي هار
محتويات الخلية
وإنما ي هر البرنامج محتويات الخلية بشاكل أساساي إذا لام تأخاذ هاذه المحتو,
ًياات حجماا
كما ويوصك محتويات الخلية,ًاريبك
إذا
أخذت
ًحجما
ًمعقوال
.
إن وجاود أقاواس مجموعاات علاى الجاناب
األيمن من المساواة يدل على إن المشار إليه هاو خلياة ولايس قيماا عددياة وهاذا ماا يسامى
بفهرساة الخلياة
(cell indexing)
. وسينشئ التعابير التالية مصفوفة الخلية نفسها,
:مالح ة

البرمجة بلغة
MATLAB
51
يخبر كال التعبيرين
A (i, j) = {x}
و
A {i, j} = x
برنامج
MATLAB
بأن يضع المتغير
x
في العنصر
(i, j)
من مصفوفة الخلية
A
.
يادعى التعبيار
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);
>> z = rand (3, 3);

البرمجة بلغة
MATLAB
52
>> w {1} = x;
>> w {2} = y;
>> w {3} = z;
>> w
ans =
[3
3 double] [3
3 double] [3
3 double]
:مثال
>> x {1} = rand (3, 3);
>> x {2} = rand (3, 3);
>> x {3} = rand (3, 3);
.
.
.
.
.
>> x {9} = rand (3, 3);
>> x {1}
ans =
0.8462 0.6721 0.6813
0.5252 0.8381 0.3795
0.2026 0.0196 0.8318
( العنصر الموجود في السطر الثاني والعمود الثاني في مصفوفة (الخلية) األولى
>> x {1} (2, 2
ans =
0.8381
:مثال
برنامج لجمع المصفوفات التس
عة
في المثال السابق
.في مصفوفة واحدة
>> L = length (x);

البرمجة بلغة
MATLAB
53
>> sum1 = 0;
>> for i = 1: L
b = x {i};
sum1 = sum1 + b;
end;
يجبر
اإليعاز
celldisp
برنامج
MATLAB
على
إ
هار
والياك,يدااعلا جذومنلااب ايلاخلا ىوتحم
المثال التالي الذي يوض ذ
:لك
>> celldisp (A)
A (1, 1) =
1 2 3
4 5 6
7 8 9
A (2, 1) =
Ali Ahmed
A (1, 2) =
2.0000 + 3.0000i
A (2, 2) =
12 10 8 6 4 2 0
ُُ كما ي
هر البرنامج محتوى الخلية المفردة عبر طلب محتوى الخلية باستخدام عنونة المحتوى
وهذا,
ّيتم بشكل مختلك عن فهرسة الخلية التي تع
رك الخلية فقط دون
الدخول
إلى
فمثال,ةيلخلا ىوتحم
:
>> A {2, 2}
ans =
12 10 8 6 4 2 0
>> A (2, 2)
ans =
[1
7 double]
>> A (1, :)

البرمجة بلغة
MATLAB
54
ans =
[3
3 double] [2.0000 + 3.0000i]
الح بأن البرنامج استخدم لجميع الخاليا السابقة االسم
ans
وذلك الن خاليا البياناات المخزوناة لايس,
له
.ا اسم محدد
لقد
استخدمنا
ًًُسابقا
األقواس
المربعة
إلنشاء
وتعمل,ةيددعلا تافوفصملا
أقواس
المجموعة ن
فس العمل
وتفصل األعمدة بفواصل بينما تفصل,ايلاخلل ةبسنلاب
األسطر
بفواصل منقوطة. واليك
:المثال التالي
>> B = {[1 2], 'John Smith'; 2 + 3i, 5}
B =
[1
2 double] 'John Smith'
[2.0000 + 3.0000i] [5]
من
المألوك
عند استخدام المصافوفات العددياة
أن
ُت
ُما المصافوفة بعناصار صافرية ثام ت
ما مان جدياد
حياث ينشاأ,اايلاخلا تافوفاصم يف جهنملا سفن مادختسا نكميو ,ةمزلالا تانايبلاب
االيعااز
cell
مصافوفة
خلية ويملنها بمصفوفات عددية فارغة
[ ]
:ولنأخذ المثال التالي
>> C = cell (2, 3)
C =
[ ] [ ] [ ]
[ ] [ ] [ ]
ما
إن
يتم تعريك مصفوفة
الخلية
فأنة
,يمكن تعميم الخاليا عن طريق عنونة المحتوى وفهرسة الخاليا
كما
يبين
ه
المثال التالي
:
>> C (1, 1) = 'The does n't work'
Error
لقد استخدمنا هنا في الجانب
األيسر
يجب,يلاتلابو ةيلخلا ليلد
أن
يكون الطرك
األيمن
خلياة وهاذا ماا
سبب
هور
الخطأ
ُ وليس كوننا لم ن,
.خط محتوياتها بأقواس مجموعة
>> C (1, 1) = {'The does n't work'}
C =
'The does n't work' [ ] [ ]
[ ] [ ] [ ]

البرمجة بلغة
MATLAB
55
>> C (2, 3) = {'This works too'}
C =
'This does work' [ ] [ ]
[ ] [ ] 'This works too'
وبسبب وجود
أقواس
المجموعاة فاي الجاناب
األيسار
مان العباارة
األخيارة
فاان برناامج,
MATLAB
سيضع الخيط الرمزي في الخلياة المعنوناة. ويوجاد هناا مارة
أخارى
بينماا تعتبار العباارة,ىواتحم ةانونع
األصلية
. عن فهرسة المصفوفةًلااثم
التعامل مع مصفوفة الخلية
ي
مكن
أن
نستخدم
األقواس
المربعة
ًأيضا
كما هو الحاال,ربكا تافوفصم نمض ايلاخلا تافوفصم مضل
للمصفوفة العددية
,
:واليك المثال التالي
>> A
A=
[3
3 double] [2.0000 + 3.0000i]
'Ali Ahmed' [1
7 double]
>> 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'
[2.0000 + 3.0000i] [5]
يمكن تحديد خاليا جزئية
إلن
شاء
خاليا جديدة عبر استخدام تقنيات مناسابة لعنوناة مصافوفة الخلياة كماا
:في المثال التالي

البرمجة بلغة
MATLAB
56
>> D = C ([1 3], :)
D =
[3
3 double] [2.0000 + 3.0000i]
[1
2 double] 'John Smith'
و
يمكن حذك سطر مصفوفة الخلية عبر استخدام الخلية
ال
فارغة
.
>> C (3, :) = [ ]
C =
[3
3 double] [2.0000 + 3.0000i]
'Ali Ahmed' [1
7 double]
[2.0000 + 3.0000i] [5]
ويستخدم االيعاز
reshape
ولكن,ايلاخلا عضاوم ريغتل
ه
ال
ي
ستطيع
إضافة
أو
,حذك الخاليا وليبان ذلك
:نأخذ المثال التالي
>> x = cells (3, 4);
>> size (x)
ans =
3 4
>> y = reshape (x, 6, 2);
>> size (y)
ans =
6 2
أي
إن
االيعاز
reshape
يعيد
ت
شكيل
أية
وكذلك يعيد االيعااز,اهعون ريغت نودب ةفوفصم
size
حجام
.أي نوع من المصفوفات
كذلك يعيد االيعاز
repmat
للتكارارًااقفو ااهراركت ىالع لامعي ثايح اايلاخلا تافوفاصم عام لاماعتلاب
.المطلوب
مثال
:
>> y
y =

البرمجة بلغة
MATLAB
57
[ ] [ ]
[ ] [ ]
[ ] [ ]
[ ] [ ]
[ ] [ ]
[ ] [ ]
>> z = repmat (y, 1, 3)
z =
[ ] [ ] [ ] [ ] [ ] [ ]
[ ] [ ] [ ] [ ] [ ] [ ]
[ ] [ ] [ ] [ ] [ ] [ ]
[ ] [ ] [ ] [ ] [ ] [ ]
[ ] [ ] [ ] [ ] [ ] [ ]
[ ] [ ] [ ] [ ] [ ] [ ]
السالسل الرمزية
تكمن قوة برنامج
MATLAB
الحقيقية في القدرة على التعامل مع
األرقاام
ولكنا,
ه
يحتااج
أ
ًحياناا
إلاى
التعامل مع النصوص كما في حالة
وضع العناوين
وأسماء
.المحاور على الرسومات
تركيب السلسة الرمزية

البرمجة بلغة
MATLAB
58
تتألك السالسل الرمزية في لغة
MATLAB
من مصافوفات عددياة خاصاة مان قايم
ASCII
والتاي
تعيد أ
:ً فمثال,ةيزمرلا ةسلسلا راه
>> 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
Columns 13 through 24
105 115 32 99 104 97 114 97 99 116 101 114
Columns 25 through 32
32 115 116 114 105 110 103 63
>> char (u)

البرمجة بلغة
MATLAB
59
ans =
How about this character string?
>> char (u (1))
ans =
H
وبما
إن
لذلك يمكن التعامل معها بكل,تافوفصم يه لسلاسلا
أدوات
التعامل مع المصفوفات ال
م
ت
وفرة
في لغة
MATLAB
:ً فمثال,
>> u = t (16: 24)
u =
character
ًوتعنون السالسل تماماا
وتحاوي العناصار مان,تافوفاصملا نوانعت اامك
16
إلاى
24
فاي المثاال
أعاال
ه
الكلمة
character
>> u = t (24: -1: 16)
u =
retcarahc
وهنا تمت ته
ج
ئة الكلمة
character
بشكل ع
.كسي
>> u = t (16: 24)'
u =
c
h
a
r
a
c
t
e

البرمجة بلغة
MATLAB
60
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
of columns just like array!
وينشئ
االيعاز
char
مصفوفة نصية متعددة
األسطر
من سالسل مستقلةًاقلاطنا
مختلفة
كما في,لوطلا
ال
م
:ثال التالي
>> legends = char ('Wilt', 'Russel', 'Kareem', 'Bird', 'Magic', 'Jordan')
legends =
Wilt
Russel

البرمجة بلغة
MATLAB
61
Kareem
Bird
Magic
Jordan
>> size (legends)
ans =
6 6
تحويل
األعداد
إلى
سالسل رمزية وب
العكس
قد نرغب في العديد من الحاالت بتحويل النتائج العددية
إلى
سالسل رمزية واستخراج البيانات العددياة
ماان السالساال الرمزيااة. ياازودك برنااامج
MATLAB
باإليعاااز
num2str
و
int2str
و
fprintf
وغيرها لتحويل النتائج العددية
إلى
واليك,ةيزمر لسلاس
األمثلة
التالية على
:التحويل
>> int2str (35)
ans =
35
>> class (ans)
ans =
char
>> num2str (3.5)
ans =
3.5
>> class (ans)
ans =
char
>> fprintf ('% 4.3f\n', sqrt (2))
1.414
>> size (fprintf ('% 4.3f\n' , sqrt (2))
ans =

البرمجة بلغة
MATLAB
62
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
تحدد هنا الصيغة
% 6.4f
ست
خانات
إل
هار
المتغير
radius
والمتغير
area
.
مثال (طري
:)قة أخرى
>> 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 =
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]
▼
فراغات
مصفوفة رمزية
مصفوفة عددية
مصفوفة رمزية

البرمجة بلغة
MATLAB
63
>> 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 1 9 21 26 29 37
>> findstr (b, 'p')
ans =
9 13 22 30 38 40 41
>> findstr (b, 'cow')
ans =
[ ]
مصفوفة الخاليا للسالسل الرمزية
يبدو
شرط تساوي عدد
األعمادة
خاصاة,ًاابعتم ةياصنلا تافوفاصملا رطاسا عايمج ياف
إذا
اختلاك عادد
ويمكن حل,رخلآ رطس نم ةفاضملا تاغارفلا
هذه
حيث يمكننا,ايلاخلا تافوفصم مادختسا ربع ةلكشملا
وضع كل
أنواع
ويتجلى االستخدام,ايلاخلا ةفوفصم نمض تانايبلا
األكبر
لمصفوفة الخاليا ماع
السالسال
.الرمزية
من البيانات التي تسم للمستخدم بتسمية مجموعة من البيانات ذاتًاعون ةطاسبب ةيلخلا ةفوفصم ربتعت
األنواع
وذلك كما يبين,ةفلتخملا موجحلاو
ه
:المثال التالي
>> C = {'How'; 'about'; 'this for a'; 'cell array of strings?'}
C =
'How'
'about'
'this for a'
حرك صغ
ير

البرمجة بلغة
MATLAB
64
'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?'
'this for a'
'about'
'How'
>> C (1)
ans =
'How'
>> size (C (1))
ans =
1 1
ما زالت النتائج حتى
أالن
وذلك الن التعبير,ايلاخ تافوفصم نع ةرابع
C (indices)
يعنون الخاليا
المعطاااة ولكناا
ه
ال
يحاادد محتااوى
هااذه
.الخاليااا
والسااترجاع
ّمحتويااات خليااة جزئيااة محااد
دة عليااك اسااتخدام
أقواس
:مجموعة كما في المثال التالي

البرمجة بلغة
MATLAB
65
>> S = C {4}
S =
cell array of strings?
>> size (s)
ans =
1 22
:كما ويمكن عنونة جزء من محتويات مصفوفة الخلية الجزئية كما يلي
>> C {4} (1: 10)
ans =
cell array
يحول االيعاز
char
محتويات مصفوفة الخلية
إلى
كما يبين,ةبسانم ةيصن ةفوفصم
ه
المثال ا
:لتالي
>> S = char (C)
S =
How
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?'

البرمجة بلغة
MATLAB
66
جمل
اإلدخال
واإلخراج
جمل
اإل
دخال
هناك عدة صيغ
لإلدخال
باإلضافة
إلى
:عملية التنسيب منها
1
-
تعليمة
input
:
( مثال
1
:)
>> x = input ('enter x: ')
enter x:
( مثال
2
:)
إدخال
األعداد
.
n = input ('enter n:');

البرمجة بلغة
MATLAB
67
m = input ('enter m:');
for i = 1: n
for j = 1: m
result (i, j) = i ^ j;
end;
end;
( مثال
3
:)
إدخال
أسماء
.رمزية
clc;
clear;
z = input ('enter name', 's');
2
-
صيغة ثابتة
لإلدخال
:)(على شكل مربع حوار
:مثال
prompt = {'enter x'};
def = {'20'};
dlgTitle = 'Input for my program';
lineNo = 1; % عدد السطور المدخلة
answer = inputdlg (prompt, dlgTitle, lineNo, def);
تحويل
string
إلى
num
في حالة التعامل مع رقم
%
x = str2num (answer {1});
جمل
اإلخراج
هناك عدة صيغ
لإلخراج
:منها
للداللة على إدخال
string
القيمة األولى من مصفوفة الخاليا

البرمجة بلغة
MATLAB
68
1
-
تعليمة
disp
:
مثال
(
1
)
:
>> d = 15;
>> disp (d);
15
مثال
(
2
)
:
>> a = 'ali';
>> disp (a);
ali
مثال
(
3
)
:
>> sum = 9.8;
>> disp (['sum = ', num2str (sum)]);
sum = 9.8
مثال
(
4
)
:
>> disp ('computer');
computer
مالح ة
(
1
:)
يجب
أن
يكون محتويات
disp
قيمة ذات نوع بياني واحد ضمن الجملة الواحدة (كال جملاة نا
وع بيااني
.)واحد
مالح ة
(
2
:)
في حالة كون محتويات
disp
أكثر
من قيمة ذات نوع بيانية مختلفاة ضامن الجملاة الواحادة
(يجاب ان
تجمع القيم في قوسين كبيرين
[ ]
(مثال
(
3
))
)
.
2
-
تعليمة
msgbox
:
>> msgbox ('ok', 'result')
عنوان الصندوق
الشيء المطلوب طباعت
ه
)( نوع بياني رمزي

البرمجة بلغة
MATLAB
69
(
3
) تعليمة
fprintf
:
مثال
(
1
:)
>> y = 1.2;
>> x = 100.5;
>> fprintf ('variable x is % 6.3f\n', x);
>> fprintf ('variable y is % 6.3f\n', y);
variable x is 1.200
variable y is 100.500
وهذا يعني
بأنه
تم حجز
6
مراتب منها
3
.مراتب بعد الفارزة العشرية
مثال
(
2
:)
>> fprintf ('% 8.3f\n', round (3.8));
4.000
مالح ة
(
1
:)
:يمكن استخدام صيغ مختلفة للطباعة وكما يلي
رمز واحد
%c
تدوين عشري
%d
تدوين يائي
%e
تدوين النق
ط
ة الثابتة
%f
تدوين عشري
%i
تدوين ثماني
%o
تدوين رمزي
%s
تدوين سداسي عشر
%x
مالح ة
(
2
:)

البرمجة بلغة
MATLAB
70
يمكن طباعة
األعداد
واألسماء
والنتائج
من خالل
كتابة
االيعازات بدون فارزة منقوطة
وست هر النتائج
في نافذة
األمر
Command Window
.
الجمل الشرطية
ياادعم برنااامج
MATLAB
وتهاادك,ةيااضايرلا تااايلمعلا معدااي اااملثم ةاانراقملاو ةاايقطنملا تااايلمعلا
العملياااات والمعاااامالت المنطقياااة الحصاااول علاااى
أجوباااة
ل سااائلة
التاااي يجااااب عنهاااا
ب
صااا
أ
و خطاااأ
(True/False)
.
تعتبر لغاة
MATLAB
فاي تعاملهاا ماع جمياع التعاابير المنط
قياة وعملياات المقارناة
إن
أي
عادد غيار
صفري هو
True
ويعتبر الصفر
False
كما ويكون,
إخراج
جمياع التعاابير المنطقياة وعملياات المقارناة
عبارة عن مصفوفات منطقية تحوي العدد واحد من اجل
True
والعدد صفر من اجل
False
.
من المصفوفاتًاصاخً اعون ةيقطنملا تافوفصملا ربتعتو
كما يمكن عنونة المصفوفة المنطقية,ةيددعلا
ضمن التعابيرًاقباس اهمدختسا يتلا تافوفصملا يقاب ةنونع ةقيرط سفنب
العددية
.
معامالت المقارنة
: )(العوامل العالئقية
Relational Operators
تتضمن معامالت المقارنة كل
اإلشارات
المقارنة الشائعة والمدرجة في الجدول التا
:لي
معامل المقارنة
الوصف

البرمجة بلغة
MATLAB
71
<
أصغر من
<=
أصغر
أو
يساوي
>
أكبر من
>=
أكبر
أو
يساوي
==
إشارة
المساواة
(لكي نميزها عن
)=
=
~
اشارة عدم المساواة
أو للمقارناة باين مصافوفة,ماجحلا سافن ااهل نيتفوفاصم نياب ةانراقملل ةانراقملا تلاماعم مادختسا نكمي
وعدد مفرد وتتم
هذه
وتكاون المصافوفة الناتجاة,درافملا ددعلا عم ةفوفصملا نم رصنع لك ةنراقم ةلاحلا
بنفس حجم المصفوفة التي تمت مقارنتها كما يبين
ه
المثال
ا
:لتالي
مثال
(
1
:)
>> a = 1; b = 5;
>> x = a > b
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 =

البرمجة بلغة
MATLAB
72
0 0 0 0 0 0 0 0 0
لقد تم هنا
إيجاد
عناصر
A
التي تساوي العناصر في المصفوفة
B
.
:مالح ة
الح بان
اإلشارتين
) بمقارنة متغيرين وتعياد العادد==( موقي ثيح ,ًافلتخم ًائيش ناينعت )==( و )=(
واحاا
د
إذا
ًكانااا متساااويين وصاافرا
إذا
لاام يكوناا
ا
بينمااا تسااتخدم,نييواااستم
)=(
إلسااناد
إخااراج
العمليااة
إلااى
.متغير
مثال
(
1
:)
لتوليد مصفوفة
أحادية
منطقية عناصرها واحدات (في حالة اكبر من
thr
(في حالاةًارافصاو )
اصغر م
ن
أو
تساوي
thr
)
.
>> inddent = [10 17 22 0 7 3 2];
>> thr = 7;
>> y = (indent > thr)
y =
1 1 1 0 0 0 0
مثال
(
2
:)
لتوليد مصفوفة
أحادية
عناصرها نفس العناصر (في
حالاة اكبا
ر
مان
thr
(فاي حالاةًارافاصاو )
اصغر من
أو
تساوي
thr
)
.
>> z = inddent .* (inddent > thr)
z =
10 17 22 0 0 0 0
)المعامالت المنطقية (العوامل المنطقية
Logical Operators:
تااوفر المعااامالت المنطقيااة طريقااة لاادمج
أو
وي,ةاانراقملا ريباااعت ياافن
هاار الجاادول التااالي المعااامالت
المنطقية الموجودة في لغة
:MATLAB
المعامل المنطقي
الوصف
&
AND
)(و
|
OR
)(أو
~
NOT
)(نفي
وسنقدم لك فيما يلي بع
األمثلة
:على استخدام المعامالت المنطقية

البرمجة بلغة
MATLAB
73
>> a = 1;
>> b = 5;
>> x = a ~= b
x =
1
>> b = (1 == 1) & (2 ~= 3)
b =
1
>> b = (1==1) | (2 ~= 3)
b =
1
>> b = (1==1) & not ((2 ~= 3))
b =
0
>> 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 =

البرمجة بلغة
MATLAB
74
0 0 1 1 1 0 0 0 0
حيث تعيد
هذه
العبارة العدد واحد عندما يكون العنصر من
A
اكبر من
2
واقل من
.6
أسبقية المعامل
يقوم برنامج
MATLAB
إلى مجموعة من اًادنتسم ريبعت ةميق داجياب
,لقواعد النا مة ألسبقية المعامل
وتقيم المعامالت ذات األسابقية,ايندلا ةيقبسلأا تاذ تلاماعملا لبق ايلعلا ةيقبسلأا تاذ تلاماعملا بسحتو
المتساااوية ماان اليسااار
إلااى
اليمااين. ويشاار الجاادول التااالي قواعااد أساابقية المعاماال التااي يعتاادها باارامج
MATLAB
.
الصيغة
IF-ELSE-END
قد نحتاج
إلى
حساب مجموعة من
أوامر
ًاستنادا
إلى
إخراج
ناتج عن اختبار شرطي. وتنفذ هذ
ه
التعليمة
في لغة
MATLAB
عبر استخدام الصيغة
if-else-end
:وكما يلي
المعامل
مستوى
األسبق
ية
( األقواس
)
األعلى
(المدور
'
القوة,)
(
^
,
^
).
إشارة
( النفي
~
)
( الضرب
*
,
*
( القسمة,).
/
،
/
.
)
الجمع
والطر,) (
(
-
)
معامل النقطتين
المتعامدتين
):(
أصغر من
(
<
,)
واصغر
أو
(يساوي
<=
,)
اكبر م
ن
(
>
,)
اكبر من
أو
(يساوي
>=
,)
المساواة
عدم المساو,)==(
اة
=(
~
)
)&(الجمع المنطقي
AND
المعامل المنطقي
(|
)
OR
األدنى

البرمجة بلغة
MATLAB
75
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
(commands evaluated if False)
end
حيث ستنفذ المجموعة
األولى
من
األوامر
في حال
ا
متلك التعبير
expression
القيمة
true
،
بينما تنفاذ
المجموعة الثانية
إذا
امتلك
التعبير
expression
القيمة
false
.
وإذا
فس,تلااح ةدع كانه تناك
ت
أخذ التعبير
if-else-end
:الشكل التالي
if expression1
(commands evaluated if expression1 is true)
elseif expression2
(commands evaluated if expression2 is true)
elseif expression3
(commands evaluated if expression3 is true)
elseif expression4
(commands evaluated if expression4 is true)

البرمجة بلغة
MATLAB
76
.
.
.
else
(commands evaluated if no other expression is true)
end
واليك
األمثلة
:التالية
( مثال
1
:)
>> x = 10;
>> if x == 10
msgbox ('ok', 'result');
( مثال
2
:)
>> if x == 10
msgbox ('ok', 'result');
else
msgbox ('no', 'result');
end;
( مثال
3
:)
>> x = 11;
>> if x == 1
disp ('1');
elseif x == 2
disp ('2');
else
disp ('3');
end;
اإلخراج

البرمجة بلغة
MATLAB
77
3
الصيغة
SWITCH-CASE
عندما يتوجب علينا تنفيذ
أوامر
عندها من الساهل,ام طسول يمك رايتخلا رركتم مادختسا ىلع ًادامتعا
استخدام الصيغة
switch-case
:التي لها الصيغة العامة التالية
switch expression
case test-expression1
(commands1)
case test-expression2
(commands2)
otherwise
(commands3)
end
يجااب
أن
يكااون
expression
هنااا
أمااا
ً مفاارداًاددااع
أو
سلساالة رمزيااة. يقااارن التعبياار
expression
الموجود في الصيغة
السابقة
بالتعبير
test-expression1
الموجود في
عبارة
case
األولى
.
وإذا
تساوى
سيتم تنفيذ,ناريبعتلا
األوامر
(commands1)
وتخطي التعليمات الواقعة بعادها حتاى
ال
عباارة
end
. أماا
إذا
لم يتحقق الشرط
األول
حياث سايقارن,ينااثلا طراشلا ربتخياسف ,
expression
فاي
المثاال
الساابق ماع
العبااارات
test-exoression2
الموجااودة فااي عبااار
ة
case
.الثانيااة
وإذا
ساايتم تنفيااذ,ناراايبعتلا ىواااست
commands2)
) وتهماال بقيااة العبااارات حتااى عبااارة
end
.
إذا
لاام تحقااق أي عبااارة
case
المساااواة مااع
التعبير
expression
عندها ستنفذ,
األوامر
commands3)
) التي تلي العبارة
otherwise
.
الح من الشر الذي
أوردنا
ه
عن صايغة
switch-case
بأنا
ه
سايتم تنفياذ
أحادى
مجموعاات
األوامار
المكونة للصيغة
switch-case
واليك
األمثلة
:التالية
( مثال
1
:)
x = 1;
switch x
case {1, 2, 3, 4, 5}
disp ('1..5');
case {9, 10}

البرمجة بلغة
MATLAB
78
disp ('9..10');
otherwise
disp ('this is impossible');
end;
( مثال
2
:)
clc;
clear;
n = 3;
switch n
case {0}
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';
اإلخراج
1..5

البرمجة بلغة
MATLAB
79
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;
otherwise
disp (['Unknown Units:' units]);
end;
اإلخراج
y = 0.027

البرمجة بلغة
MATLAB
80
جمل الدوران والتكرار
توفر لغة
MATLAB
:مجموعة من جمل الدوران والتكرار وهي
جملة
for
تقوم حلقات
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

البرمجة بلغة
MATLAB
81
ويمكن تفسير الدوارة
أعال
ه
:كما يلي
من اجل كل قيمة ل
ـ
n
من
1
إلى
10
يجب حس
ا
ب قيمة العبارة الموجودة حتاى عباارة
end
تكاون,ةايلاتلا
قيمة
n
في الدورة
األولى
n = 1
,
وتكون في الدورة الثانية
n = 2
وهكذا حتى تصل
إلى
n = 10
.
:مثال
توليد
10
أ
عداد
عشوائية قي
( متها
1..10
.)
>> array = randperm (10)
array =
8 2 10 7 4 3 6 9 5 1
>> for n = array
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
) معطاة بالمصفوفة
array
.
:مالح ة
يمكن
إنشاء
عدة حلقات
for
,متداخلة
:كما في المثال التالي
>> for n =1: 5
for m = 5: -1: 1
A (n, m) = n ^ 2 + m ^ 2;
end;
disp (n);
end;
اإلخراج
1

البرمجة بلغة
MATLAB
82
2
3
4
5
>> A
A =
2 5 10 17 26
5 8 13 20 29
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

البرمجة بلغة
MATLAB
83
2
4
6
8
10
>> for i = 10: -2: 1
disp (i);
end;
اإلخراج
10
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
) (طبع جدول الضرب

البرمجة بلغة
MATLAB
84
ُت
جري حلقات
while
غير محدد من المرات على عكس حلقاتًاددع باسحلا تايلمع
for
التي تندي
, من التمريراتًانيعم ًاددع
ويمكن كتابة الصيغة العامة لحلقة
while
:كما يلي
while expression
(commands)
end;
ستنفذ مجموعة
األوامر
(commands)
الواقعاة باين العباارتين
while
و
end
طالماا
أن
كال العناصار
ضمن
expression
صحيحةًاميق كلتمت
(true)
ً وعادة,
ما تكون نتيجة
expression
.ً مفرداًاددع
مثال
(
1
:)
>> x = 1;
>> while x < 25
disp (x);
x
= x + 1;
end; اإلخراج
1
2
3
.
.
24
مثال
(
2
:)
>> num = 0; EPS = 1;
>> while (1 + EPS) > 1
EPS = EPS / 2;
num = num + 1;
end;
>> num
num =

البرمجة بلغة
MATLAB
85
53
مال
ح
: ة
هناك طريقة قانونية للخروج من حلقة
for
و
while
:وكاالتي
(في حال تحقق الشرط يتم الخروج من
الدوارة
for
وكذلك
while
)
s = 0; s = 0;
for i = 1: 100 x = 1;
s = s + i; while x < 100
if s > 250 s = s + x;
break; if s > 250
end; break;
end; end;
x = x + 5;
end;
اإلخراج
اإلخراج
i = 22 x = 51
s = 253 s = 286
:مالح ة
أذا وجدت التعليمة
break
ضمن حلقة داخلية واقعة ضمن حلقات اكبر فان البرنامج يخرج مان الحلقاة
التي صادك ف
يها التعليمة وال يخرج من الحلقات
األكبر
.

البرمجة بلغة
MATLAB
86
ملفات البيانات الخاصة ببرنامج
MATLAB
يمكاان تخاازين المتغياار الموجااود فااي ساااحة عماال برنااامج
MATLAB
,
وفااق صاايغة خاصااة ببرنااامج
MATLAB
وذلك عن طريق استخدام,
األمر
save
:كما يلي
>> save
وبذلك يتم خزن جميع المتغيرات ا
لموجودة في ساحة العمل
(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
.
ويعاكس
األمر
load
األمر
save
إذ
يفت هذا
األمر
ملفات البيانات التي تم
إنشانها
بااألمر
save
كماا
:يلي
>> load
ّوهي تعني حمل
كل المتغيرات التاي تجادها ضامن الملاك
matlab.mat
حيثماا وجدتا
ه
أوال
فايًءاواس
المجلد الحالي
أو
في مسار البحث لبرناامج
MATLAB
.
وياتم تخازين
أساماء
المتغيارات المخزوناة فاي

البرمجة بلغة
MATLAB
87
الملااك
matlab.mat
فااي ساااحة العماال
,
ّوسااتحم
ل فااوق المتغياارات ذات
األسااماء
المطابقااة لهااا فااي حااال
.وجودها
ولتحميااال متغيااارات معيناااة مااان ملاااك ذي الحقاااة
(MAT-file)
يجاااب ان ناااذكر اسااام الملاااك وقائماااة
المتغيرات ك
:ما يلي
>> load filename var1, var2, var3
لقد تم هنا فت الملك
filename.mat
وحملت المتغيرات
var1, var2, var3
إلى
ساح
ة
.العمل

البرمجة بلغة
MATLAB
88
ايعازات
المجموعات والبتات وااليعازات القاعدية
ايعازات المجموعات
نستطيع تقييم المصفوفات على
إنها
مج
موعات
ألنها
, من هذا الفهمًاقلاطناو ميقلا نم ددعل م تنم عيمجت
ّيقد
م لاك برناامج
MATLAB
عادة
تواباع
,الختباار ومقارناة المجموعاات
ويقادم لاك المثاال التاالي ابساط
:اختبار للمساواة
>> a = rand (2, 5);
>> b = rand (2, 5);
>> isequal (a, b)
ans =
0
>> isequal (a, a)
ans =
1
ويقدم لك المثال التالي االيعاز
unique
بحذك العناصر المتكررة من وسط
اإلدخال
:
>> a = [2: 2: 8; 4: 2: 10]
a =
2 4 6 8
4 6 8 10
>> unique (a)
ans =
2
4
6
8
10

البرمجة بلغة
MATLAB
89
ويمكن تحد
يد مجموعة العناصر المشتركة بين وسيطين عبر استخدام االيعاز
ismember
:كما يلي
>> a = 1: 9
a =
1 2 3 4 5 6 7 8 9
>> b = 2: 2: 9
b =
2 4 6 8
>> ismember (a, b)
ans =
0 1 0 1 0 1 0 1 0
>> ismember (b, a)
ans =
1 1 1 1
كذلك االيعاز
union
التحاد مجموعتين
.
>> union (a, b)
ans =
1 2 3 4 5 6 7 8 9
كذلك
إيعاز
intersect
لتقاطع مجموعتين
.
>> intersect (a, b)
ans =
2 4 6 8
كذلك
إيعاز
setdiff
.للفضلة بين مجموعتين
>> setdiff (a, b)
ans =
1 3 5 7 9
:مالح ة
يمكن
إجراء
العمليات السابقة على مصفوفات رمزية
أو
.مصفوفات خاليا

البرمجة بلغة
MATLAB
90
إيعاز
البت
إضااافة
إلااى
تساامًاااعباوت جماراابلا نمنااي ,ًاقباااس اااهانركذ يااتلا ةاايقطنملا تلاماااعملا
باااجراء
العمليااات
المنطقية على بتات منفصلة من
األعداد
.الصحيحة
>> bitand (3, 4)
ans =
0
>> bitor (3, 4)
ans =
7
>> bitxor (13, 27)
ans =
22
>> bitcmp (20, 5)
متمم العدد
21
لخمس بتات
ans =
11
>> bitset (30, 1)
جعل البت األول
ى
من
31
يكون
1
ans =
31
>> bitget (30, 1)
جلب البت األول
ى
من
31
ans =
0
>> bitshift (3, 2) ) إزاحة لليسار (موقعين
ans =
12
>> bitshift (12, -2) ) إزاحة لليمين (موقعين
ans =
3
الموقع
الموقع
العدد

البرمجة بلغة
MATLAB
91
>> z = [7 5 4 ; 3 8 9];
>> circshift (z, 1)
ans =
3 8 9
7 5 4
االيعازات القاعدية
ينمن برنامج
MATLAB
العديد مان
األوامار
التاي تحاول
األعاداد
ال
عشارية
إلاى
قواعاد
أخارى
وفاق
صااايغ سالسااال رمزياااة ونساااتطيع التحويااال باااين
األعاااداد
العشااارية
واألعاااداد
الثنائياااة عبااار
االيعاااازي
ن
bin2dec
,
dec2bin
:كما يلي
>> 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)
عدد الخانات

البرمجة بلغة
MATLAB
92
a =
7FF
>> dec2hex (2047, 4)
ans =
07FF
>> class (a)
ans =
char
>> hex2dec (a)
ans =
2047
>> class (ans)
ans =
double
الدوال والبرامج الفرعية
تستخدم الدوال بشكل واسع في
لغة
MATLAB
. والصيغة العامة
للدوال
:هي
عدد الخانات
رمزي
المخرجات
الم
دخال
ت

البرمجة بلغة
MATLAB
93
اإلدخال اإلخراج
[out1, out2,…, outn] = function_name (input1, input2,...,inputn);
كما في
األمثلة
:التالية
مثال
(
1
:)
>> x = [1, 2, 3, 4, 5, 6, 7, 8];
>> y = [11, 12, 13, 2, 9, 70];
>> avgx = average1 (x);
>> avgy = average1 (y);
function result = average1 (z);
L = length (z);
sum1 = sum (z);
result = sum1 / L;
>> avgx
avgx =
4.5000
>> avgy
avgy =
19.5000
مثال
(
2
:)
>> res1 = mult2 (x);
>> res2 = mult2 (y);
اسم الدالة
البرنام
ج الرئيسي
)البرنامج الفرعي (الدالة
البرنامج الرئيسي

البرمجة بلغة
MATLAB
94
function result = mult2 (x);
result = 2 * x;
>> 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);
function [x1, x2, x3] = multf (x);
x1 = sin (x);
x2 = cos (x);
x3 = 2 * x;
>> plot (sin_x) لرسم النقاط
)البرنامج الفرعي (الدالة
البرنامج الرئيسي
)البرنامج الفرعي (الدالة

البرمجة بلغة
MATLAB
95
مالح
ات
:
1
-
الدالة التي تكاون علاى شاكل ملاك مفصاول اليمكان تن
فياذها مباشارة
إال
بعاد اساتدعائها بالبرناامج
.الرئيسي
2
-
تكون اسم الدالة المخزون في القرص الصالب واسام الدالاة بعاد عالماة
) الموجاود فاي الساطر=(
األول
يجب ان يكونا
.متطابقين
:مثال
function y = myfunction (a, b);
-------
-------
-------
فيكون الخزن
myfunction.m
3
-
ال
تحتوي نهاية الدالة على
(end)
.
4
-
.تخزن البرامج بعد كل تعديل وخاصة الدوال
5
-
اسم الدالة ال
مخزون يجب
أن
تبدأ
.بحرك
6
-
يمكن
أن
تستدعي دالة من قبل دالة
أخرى
.
الرسوم البيانية
ياازودك برنااامج
MATLAB
بالعديااد ماان االيعااازات التااي ت
هاار البيانااات ثنائيااة
األبعاااد
وثالثيااة
األبعاااد
حيااث يرساام بعضااها منحنيااات ثنائيااة,
األ
بعاااد
وثالثيااة
األبعاااد
ًبينمااا يرساام بعضااها سااطوحا
وإطا
رات
. كما يمكن استخدام اللون كبعد رابع,

البرمجة بلغة
MATLAB
96
االيعاز
plot
يقوم هذا االيعاز
با
هار
البيانات على شكل ثنائي
األبعاد
.
مثال
(
1
:)
x = [1: 0.5: 10];
ـالحتساب مجموعة قيم لل
y
)(مصفوفة
y = exp (x);
plot (x, y) x, y لرسم قيم بيانية للمحورين
مثال
(
2
:)
x = 1: 10;
plot (x)
مالح ة
:
في حالة وجود
إحداثي
واحد (قائمة واحدة) يقوم االيعاز
plot
برسم قيم بيانية متنا
رة باالمحورين أي
(
x, x
.) لكل عناصر القائمة
مثال
(
3
:)
y = [ ];
for i
= 1: 10
y (i) = exp (i);
end;
plot (y);
مثال
(
4
:)
y = [ ];
for i = 1: 10
y = [y exp (i)];
end;
plot (y);
مثال
(
5
:)
ارسم مخطط بياني
.(graph)
clc;

البرمجة بلغة
MATLAB
97
clear;
x = 0: pi / 100: 2 * pi;
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)); لرسم منحنيين

البرمجة بلغة
MATLAB
98
مثال
(
7
:)
plot (x, sin (x), 'r: +', x, cos (x), 'b: *');
:مالح ة
:يمكن كتابة أي نص على المخطط باستخدام االيعاز
text (x, y, 'string');
إيعاز
plot3
لقد تم تمديد االيعاز
plot
إلى
ثالثي
األبعاد
وأصب
plot3
وصيغت,
ه
لها نفس صيغة
plot
ثنائي البعد
: من مسقطين. والصيغة العامة لهاًلادب طقاسم ثلاث اهل تانايبلا نوك ادع
plot3 (x1, y1, z1, s1, x2, y2, z2, s2,…);
النص المطلوب االحدا
ثي
االحداثي
كتابته الصادي السيني
اللون
االحداثي االحداثي االحداثي
(خيط رمزي) الثالث الصادي السيني
عالمة المخطط
cos (x)
لون ازرق عالمة المخطط
sin (x)
لون
احمر

البرمجة بلغة
MATLAB
99
:مثال
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 لرسم الشبكة
الرسوم البيانية الجزئية
تستطيع نافذة
figure
واحدة ان تمسك باكثر من مجموعة محاور
أو
حيث يقسم,روص
subplot (m,
n, p)
نافذة الشكل الحالية الى مصفوفة
m*n
لرسم المناطق ويختار المساحة
p
لتصب
فعالة. لقد رسمت
ثم على طول الصك السفلي,يولعلا كصلا لوط ىلعو نيميلا ىلا راسيلا نم ةيئزجلا ةينايبلا تاموسرلا
,وهكذا
:وذلك كما يلي
:مثال
x = linspace (0, 2 * pi, 30);
y = sin (x);
z = cos (x);
a = 2 * sin (x) .* cos (x);
b = sin (x) ./ (cos (x) + eps);
subplot (2, 2, 1);

البرمجة بلغة
MATLAB
100
plot (x, y); axis ([0 2 * pi -1 1]); title ('Figure1');
subplot (2, 2, 2);
plot (x, z); axis ([0 2 * pi -1 1]); title ('Figure2');
subplot (2, 2, 3);
plot (x, a); axis ([0 2 * pi -1 1]); title ('Figure3');
subplot (2, 2, 4);
plot (x, b); axis ([0 2 * pi -20 20]); title ('Figure4');
الرسوم البيانية السطحية
تشبه
عبر اساتخدام,ةعقاولا تاحاسملا نع ربعت اهنا ادع ةينايبلا موسرلا كلت ةيحطسلا ةينايبلا موسرلا
االيعاز
surf
:كما يلي
مثال
(
1
:)
[x y z] = peaks (30);
surf (x, y, z);
xlabel ('x-axis');
ylabel ('y-axis');
zlabel ('z-axis');

البرمجة بلغة
MATLAB
101
مثال
(
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));
االيعاز
hist

البرمجة بلغة
MATLAB
102
يستخدم لرسم
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);
:مثال
.لرسم مخطط بياني
clear;

البرمجة بلغة
MATLAB
103
clc;
corr = [0.0012, 0.0208, 0.0633, 0.1391];
amount = [1, 2, 3, 4];
subplot (211);
plot (amount, corr, '--rs');
title ('Cipher-image VS Amount of Encrypted Data');
xlabel ('Amount of Encrypted Data');
ylabel ('Cipher-image Correlation');