Download as pdf or txt
Download as pdf or txt
You are on page 1of 56

Mathworks Matlab

‫إعداد‬
‫يوسف دعبول‬.‫م‬

1
‫ما هو ‪Matlab‬؟‬
‫االسم مشتق من ‪Matrix‬‬ ‫‪‬‬
‫‪Laboratory‬‬
‫برنامج ولغة لتطبيق العمليات‬ ‫‪‬‬
‫الرياضية للحسابات العلمية والهندسية‬
‫مصمم لعمليات المصفوفات‬ ‫‪‬‬
‫صمم في بداية السبيعنات‬ ‫‪‬‬
‫مشهور بقدراته الخاصة بالرسومات‬ ‫‪‬‬
‫واألدوات المختلفة التطبيقات‬

‫‪2‬‬
‫استخدام ‪Matlab‬‬

‫‪ ‬بكتابة األوامر عن طريق‬


‫نافذة األوامر )>>(‬
‫‪ ‬بتنفيذ ‪M-files‬‬
‫‪ ‬باستخدام ‪Simulink‬‬

‫‪3‬‬
Matlab ‫نافذة‬
Matlab ‫ذاكرة‬

‫اكتب األوامر هنا‬


Workspace
Variables/Current
Directory
(‫ الجديدة‬Matlab ‫)اصدارات‬

‫األوامر المدخلة سابقا‬

Command History
(‫ الجديدة‬Matlab ‫)اصدارات‬

4
Command Window‫نافذة األوامر‬
(all Matlab versions)
Matlab ‫أجزاء‬
 Operators ‫العمليات‬ 
 Matrices ‫المصفوفات‬ 
 Plotting ‫الرسومات‬ 
 M-files ‫الملفات‬ 
 Flow control ‫التحكم بالتنفيذ‬ 

5
‫العمليات الحسابية البسيطة‬
‫‪a+b‬‬ ‫‪+‬‬ ‫الجمع‬ ‫‪‬‬
‫‪a-b‬‬ ‫‪-‬‬ ‫الطرح‬ ‫‪‬‬
‫‪a*b‬‬ ‫*‬ ‫الضرب‬ ‫‪‬‬
‫العمليات ‪Operators‬‬

‫‪a/b‬‬ ‫‪/‬‬ ‫القسمة (من اليسار)‬ ‫‪‬‬


‫)‪a\b (ba‬‬ ‫\‬ ‫القسمة (من اليمين)‬ ‫‪‬‬
‫‪a^b‬‬ ‫^‬ ‫األس‬ ‫‪‬‬

‫‪6‬‬
‫أولوية العمليات‬
‫)(‬ ‫األقواس‬ ‫‪‬‬
‫‪LR‬‬ ‫^‬ ‫األس‬ ‫‪‬‬
‫‪LR‬‬ ‫‪*/‬‬ ‫الضرب‪/‬القسمة‬ ‫‪‬‬
‫‪LR‬‬ ‫‪+-‬‬ ‫الجمع‪/‬الطرح‬ ‫‪‬‬
‫العمليات ‪Operators‬‬

‫‪ ‬مثال‬
‫‪>> 5/2*3+4‬‬
‫=‪ans‬‬
‫‪11.5‬‬

‫‪7‬‬
‫نتائج العمليات‬
‫‪>> 6*5‬‬
‫‪ ‬إذا لم يسند ناتج العملية الحسابية‬
‫= ‪ans‬‬
‫إلى متغير‪ ،‬يقوم ‪Matlab‬‬
‫‪30‬‬ ‫باسنادها الى المتغير ‪ans‬‬
‫‪>> 17/5‬‬
‫العمليات ‪Operators‬‬

‫= ‪ans‬‬
‫‪ ‬لمعرفة ناتج ‪ ،ans‬اكتب‬
‫‪3.4000‬‬ ‫‪>>ans‬‬
‫‪>> ans‬‬
‫= ‪ans‬‬
‫‪3.4000‬‬

‫‪8‬‬
‫اسناد النتائج‬
‫‪>> x=6*5‬‬
‫=‪x‬‬ ‫‪ ‬إذا اسند ناتج العملية إلى متغير‪،‬‬
‫‪30‬‬ ‫سيحتفظ المتغير بالقيمة األخيرة إلى‬
‫أن يتم تعديلها‬
‫;‪>> y=17/5‬‬
‫‪>> y‬‬ ‫‪ ‬استخدام الفاصلة المنقوطة (;) يمنع‬
‫من إظهار ناتج العملية‪ ،‬بينما عدم‬
‫العمليات ‪Operators‬‬

‫=‪y‬‬
‫استخدامها يظهر الناتج‬
‫‪3.4000‬‬
‫‪ ‬يفضل اسناد النواتج الى متغيرات‬
‫‪>> z=x+y‬‬
‫=‪z‬‬ ‫‪ ‬من الممكن كتابة عدة أوامر بسطر‬
‫واحد‪:‬‬
‫‪33.4000‬‬
‫‪>> who‬‬ ‫‪>> x=6*5;y=17/5;z=x+y‬‬
‫‪Your variables are:‬‬ ‫‪ ‬لعرض قائمة المتغيرات بالذاكرة‬
‫‪x‬‬ ‫‪y‬‬ ‫‪z‬‬ ‫اكتب ‪>>who‬‬
‫‪9‬‬
Matlab ‫بعض دوال‬
 exp(x) ex  pi p
 sin(x) sin x  i,j imaginary unit
 asin(x) sin-1x  NaN Not-a-Number

Operators ‫العمليات‬

log(x) ln x  Inf 
 log10(x) log x
 sqrt(x) x
 abs(x) |x|

10
‫عمليات ‪Matlab‬‬

‫‪ ‬مثال‪ :‬يمكن حساب الجذر التربيعي لرقم بعدة طرق‪:‬‬


‫العمليات ‪Operators‬‬

‫;‪>>y=x^0.5‬‬
‫;)‪>>y=x^(1/2‬‬
‫‪y x‬‬ ‫;)‪>>y=sqrt(x‬‬

‫‪11‬‬
‫أسماء المتغيرات‬
‫‪ ‬يمكن استخدام الحروف‪ ،‬واألرقام‪ ،‬و _ لتسمية المتغيرات‪:‬‬
‫;‪>>case_34=6.45‬‬
‫;‪>>case34=6.45‬‬
‫العمليات ‪Operators‬‬

‫‪ ‬ال بد من بدء اسم المتغير بحرف‪ ،‬وال يمكن وضع مسافات‬


‫أو عالمات أخرى ضمن اسم المتغير ‪:‬‬
‫‪34case, ge204!, Name Here ‬‬
‫‪case34, ge204, Name_Here ‬‬

‫‪12‬‬
‫متغيرات ‪Matlab‬‬
‫‪ ‬تخزن جميع متغيرات كأرقام حقيقية وبحجم ‪ 8‬بايت لكل قيمة‬
‫‪ ‬ال فرق بين األرقام الصحيحة والحقيقية‪:‬‬
‫;‪>> p = 3‬‬
‫;‪>> p = 3.0‬‬ ‫نفس األمر!‬
‫‪ ‬يمكن تخزين أرقام أو حروف كقيم‪:‬‬
‫العمليات ‪Operators‬‬

‫;‪>>number_123=7‬‬
‫;'‪>>text04='This is GE204‬‬
‫‪ ‬يوجد فرق بين الحروف الكبيرة والصغيرة‪:‬‬
‫;‪>> a = 4‬‬
‫;‪>> A = 10‬‬ ‫‪Aa‬‬
‫‪ ‬يمكن مسح المتغير من الذاكرة‪:‬‬
‫‪>> clear a‬‬

‫‪13‬‬
‫‪Matlab Help‬‬

‫• اكتب‬
‫‪>>help‬‬
‫لمعرفة المزيد‬
‫العمليات ‪Operators‬‬

‫عن أوامر ودوال‬


‫‪Matlab‬‬

‫‪14‬‬
Matlab Help

>> help sqrt


Operators ‫العمليات‬

square root
function help

15
‫‪Matlab Help‬‬

‫يمكن أيضا‬
‫استخدام أيقونة‬
‫العمليات ‪Operators‬‬

‫‪ help‬لمعرفة‬
‫المزيد عن أوامر‬
‫‪Matlab‬‬

‫‪16‬‬ ‫نافذة مستقلة‬


‫المصفوفات‬
‫‪>> A=[6‬‬ ‫]‪5; 3 4‬‬
‫=‪A‬‬
‫‪6‬‬ ‫‪5‬‬ ‫‪ ‬تبرز قوة ‪ Matlab‬عند‬
‫‪3‬‬ ‫‪4‬‬ ‫استخدام المصفوفات‬
‫المصفوفات ‪Arrays‬‬

‫‪>> B=[1‬‬ ‫]‪2 3 4‬‬ ‫‪ ‬الدخال مصفوفة‪ ،‬استخدم‬


‫األقواس المربعة [ ]‬
‫=‪B‬‬
‫‪ ‬الدخال صف آخر‪ ،‬اضغط ; أو‬
‫‪1 2‬‬ ‫‪3 4‬‬
‫‪Enter‬‬
‫‪>> C=[4‬‬ ‫‪8‬‬
‫;]‪7 5‬‬
‫‪17‬‬
‫المصفوفات (تابع)‬
‫]‪>> A=[6 5; 3 4‬‬
‫=‪A‬‬ ‫‪ ‬كل مصفوفة تتكون من عناصر‬
‫‪6‬‬ ‫‪5‬‬
‫‪ ‬عناصر المصفوفة تكون الصفوف‬
‫‪3‬‬ ‫‪4‬‬
‫واألعمدة‬
‫‪>> A(1,1)=10‬‬
‫=‪A‬‬ ‫‪ ‬يمكن التعامل مع عناصر المصفوفة‬
‫باستخدام رقم الصف والعمود‬
‫المصفوفات ‪Arrays‬‬

‫‪10‬‬ ‫‪5‬‬
‫‪3‬‬ ‫‪4‬‬ ‫‪ ‬يمكن توليد متجه (مصفوفة ذات بعد‬
‫‪>> 1:2:7‬‬ ‫واحد) باستخدام األمر التالي‪:‬‬
‫=‪ans‬‬ ‫‪initial:step:final‬‬
‫‪1 3 5 7‬‬ ‫النهاية‪:‬الخطوة‪:‬البداية‬
‫‪>> 1:4‬‬
‫(اذا لم يتم تحديد الخطوة‪ ،‬سيفرض أنها‬
‫=‪ans‬‬
‫‪)1‬‬
‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬
‫‪18‬‬
Scalars, Vectors, Matrices
MATLAB treat variables as “matrices”
 Matrix (m  n) - a set of numbers
arranged in rows (m) and columns (n)
 Scalar: 1  1 matrix
 Row Vector: 1  n matrix
Arrays ‫المصفوفات‬

 Column Vector: m  1 matrix


A  5.27 B  5.02  2.3 7.21
 1 3 2 5

D    2 4 3.2 9.5 
19  0.5  1 7.2  2
‫عمليات المصفوفات‬
‫*‬ ‫الضرب‬ ‫‪‬‬
‫*‪.‬‬ ‫ضرب العناصر‬ ‫‪‬‬
‫‪/‬‬ ‫القسمة‬ ‫‪‬‬
‫‪./‬‬ ‫قسمة العناصر‬ ‫‪‬‬
‫^‬ ‫األس‬ ‫‪‬‬
‫المصفوفات ‪Arrays‬‬

‫^‪.‬‬ ‫األس للعناصر‬ ‫‪‬‬

‫‪20‬‬
‫أمثلة لعمليات المصفوفات‬
‫‪1 2 3‬‬ ‫‪2 3 4‬‬ ‫‪4 5‬‬
‫‪A‬‬ ‫‪‬‬ ‫‪B‬‬ ‫‪‬‬ ‫‪6 7 ‬‬
‫‪4 5 6‬‬ ‫‪5 6 7 ‬‬ ‫‪C‬‬ ‫‪‬‬
‫‪‬‬ ‫‪‬‬
‫‪8 9 ‬‬ ‫‪ ‬لجمع وطرح‬
‫صحيحة‬
‫المصفوفات ‪ ،‬يجب‬
‫;‪>>D=A+B‬‬
‫أن تكون المصفوفات‬
‫المصفوفات ‪Arrays‬‬

‫;‪>>D=A-B‬‬
‫ضرب المصفوفات غير ;‪>>D=A*C‬‬ ‫من نفس الحجم‬
‫;‪>>D=C*A‬‬ ‫تبديلي‬
‫;‪>>D=A.*B‬‬ ‫‪ ‬لضرب المصفوفات‬
‫خطأ‬ ‫ال بد من تساوي‬
‫;‪>>D=A+C‬‬ ‫األبعاد الداخلية‬
‫;‪>>D=A*B‬‬
‫‪21‬‬
‫;‪>>D=B*A‬‬
‫;‪>>D=A.*C‬‬
‫عمليات المصفوفات (تابع)‬
‫أمر ‪Matlab‬‬ ‫العملية الرياضية‬

‫‪1‬‬
‫;‪>> C=A\B‬‬ ‫‪CA B‬‬
‫المصفوفات ‪Arrays‬‬

‫;‪>> C=B/A‬‬ ‫‪1‬‬


‫‪C  BA‬‬

‫‪22‬‬
‫منقول مصفوفة‬
Matlab ‫أمر‬ ‫ العملية الرياضية‬

>>C=A’; C=AT
1 2 3
A 
Arrays ‫المصفوفات‬

 4 5 6 
>>B=A’;

1 4 
B  2 5
 
 3 6 
23
‫تضمين المصفوفات‬
1 2 3 2 3 4
A  B 
 4 5 6   5 6 7 
Arrays ‫المصفوفات‬

>> D=[A B];


A B

1 2 3 2 3 4
D 
4 5 6 5 6 7
24
‫بعض دوال الماتالب األساسية‬
Linspace() 
Size() 
Length() 

Arrays ‫المصفوفات‬

Magic()
Zeros() 
Ones() 
Inv()&det() 
Eig() 
25
‫)(‪Linspace‬‬
‫)‪ Linspace(a,b‬يولد نسق سطري من ‪ 100‬قيمة بدءا‬ ‫‪‬‬
‫من ‪ a‬وانتهاء بـ ‪.b‬‬
‫)‪ Linspace(a,b,n‬يولد نسق سطري من ‪ n‬قيمة بدءا من‬ ‫‪‬‬
‫‪ a‬وانتهاء بـ ‪.b‬‬
‫المصفوفات ‪Arrays‬‬

‫القيم المولدة تشكل متوالية حسابية اساسها )‪r=(b-a)/(n-1‬‬ ‫‪‬‬


‫مثال‪:‬‬ ‫‪‬‬
‫)‪ >>x=linspace(1,10,5‬‬
‫=‪x‬‬
‫‪26‬‬
‫‪1 3.25 5.5 7.57 10‬‬
‫)(‪Size‬‬
‫‪ ‬يعيد حجم المصفوفة أو النسق الممر اليه وله األشكال التالية‪:‬‬
‫‪ d=size(a) ‬يعيد في ‪ d‬عدد اعمدة وعدد اسطر ‪a‬‬
‫‪ [m n]=size(a) ‬يعيد في ‪ m‬عدد اسطر ‪ a‬وفي ‪ n‬عدد‬
‫أعمدة ‪a‬‬
‫المصفوفات ‪Arrays‬‬

‫‪ ‬مثال‪:‬‬
‫;]‪ >>a=[1 2 3‬‬ ‫;]‪>>a=[2 3;4 5‬‬
‫)‪ >>d=size(a‬‬ ‫)‪>> [m n]=size(a‬‬
‫=‪d‬‬ ‫‪m=2‬‬
‫‪27‬‬
‫‪1 3‬‬ ‫‪n=2‬‬
‫)(‪Length‬‬
‫‪ Length(x) ‬يعيد طول الشعاع ‪ ، x‬وهو يعيد القيمة‬
‫العظمى من القيمتين التي يعيدها التابع ‪ size‬من أجل‬
‫المصفوفات غير الفارغة و صفر من أجل المصفوفات‬
‫الفارغة‪.‬‬
‫المصفوفات ‪Arrays‬‬

‫‪ ‬مثال ‪:‬‬
‫;]‪ >>a=[1;2;3;4‬‬ ‫;][=‪>>a‬‬
‫)‪ >>b=length(a‬‬ ‫)‪>>b=length(a‬‬
‫‪b=4‬‬ ‫‪b=0‬‬
‫‪28‬‬
‫)(‪Magic‬‬
‫‪ Magic(n) ‬يولد مصفوفة ‪ n*n‬تتألف من أعداد صحيحة‬
‫تنتمي قيمها إلى المجال ]‪ [1..n2‬وتكون اسطرها و أعمدتها‬
‫و اقطارها متساوية المجموع‪.‬‬
‫‪ ‬ستكون المصفوفة السحرية الناتجة صحيحة في حال ‪.n>2‬‬
‫المصفوفات ‪Arrays‬‬

‫‪ ‬مثال ‪:‬‬

‫‪29‬‬
‫)(‪Zeros‬‬
‫‪ : Zeros(n) ‬يولد مصفوفة ‪ n*n‬من األصفار‬
‫‪ Zeros(m,n) ‬أو )]‪ zeros([m n‬يولد مصفوفة ‪m*n‬‬
‫من األصفار‪.‬‬
‫المصفوفات ‪Arrays‬‬

‫‪30‬‬
‫)(‪Ones‬‬
‫‪ Ones(n) ‬يولد مصفوفة ‪ n*n‬من الواحدات‪.‬‬
‫‪ Ones(m,n) ‬أو )]‪ones([m n‬يولد مصفوفة ‪ m*n‬من‬
‫الواحدات‬
‫‪ ‬أمثلة‪:‬‬
‫المصفوفات ‪Arrays‬‬

‫‪31‬‬
‫)(‪Inv() & det‬‬
‫‪ Inv(x) ‬يعيد مقلوب المصفوفة المربعة ‪.x‬‬
‫‪ Det(x) ‬يعيد محدد المصفوفة المربعة ‪.x‬‬
‫‪ ‬أمثلة ‪:‬‬
‫المصفوفات ‪Arrays‬‬

‫‪32‬‬
‫رسومات ‪Matlab‬‬
‫>>‬ ‫;‪x=0:.1:20‬‬
‫>>‬ ‫;)‪y=exp(0.1*x).*sin(x‬‬ ‫‪ ‬من مزايا برنامج ‪Matlab‬‬
‫>>‬ ‫)‪plot(x,y‬‬
‫الرسومات‬
‫>>‬ ‫)'‪xlabel('Time (t) in Seconds‬‬
‫>>‬ ‫)'‪ylabel('Response in mm‬‬ ‫‪ ‬توجد العديد من الخيارات‪،‬‬
‫>>‬ ‫)'‪title('A Simple 2-D Plot‬‬ ‫حيث يمكن التحكم بـ‪:‬‬
‫الرسومات ‪Plotting‬‬

‫نوع الرسم‬ ‫–‬


‫نوع النقاط والخطوط‬ ‫–‬
‫العناوين‬ ‫–‬
‫التحكم بالمحاور‬ ‫–‬
‫عدد الرسومات‬ ‫–‬

‫‪33‬‬
‫أمر ‪plot‬‬
‫;‪>> n=0:11‬‬
‫;)‪>> y=sin((pi/6)*n‬‬ ‫ال بد من تساوي أبعاد ‪!… , y1, x1‬‬
‫الرسومات ‪Plotting‬‬

‫)‪>> plot(n,y‬‬

‫رسم بدون أية خيارات‬

‫‪34‬‬
‫يمكن معرفة المزيد‬
‫عن األمر بكتابة‪:‬‬
‫‪>> help plot‬‬
‫)]‪plot(x1,y1[,x2,y2,x3,y3.....‬‬
‫الرسومات ‪Plotting‬‬

‫)'‪>> plot(n,y,'--‬‬

‫رسم باستخدام‬
‫خط متقطع‬

‫‪35‬‬
Color, Symbols, and Line Types
Use “help plot” to find available 
Colors Symbols
Specifiers
Line Types
b blue . point - solid
g green o circle : dotted
r red x x-mark -. dashdot
c cyan + plus -- dashed
Plotting ‫الرسومات‬

m magenta * star
y yellow s square
k black d diamond
v triangle (down)
^ triangle (up)
< triangle (left)
> triangle (right)
p pentagram
h hexagram
36
‫إضافة شكل إلى شكل موجود‬
‫‪ ‬باالمكان إضافة رسم إلى رسم آخر موجود من خالل‬
‫استخدام األمر ‪ hold‬فعند استخدام األمر ‪ hold on‬فإن‬
‫ماتالب ال يزيل الرسم الموجود و إنما يضيف الرسم الجديد‬
‫إلى الرسم الحالي ‪.‬‬
‫الرسومات ‪Plotting‬‬

‫‪ ‬يستخدم ‪ hold off‬لتحرير الرسم السابق ‪.‬‬

‫‪37‬‬
‫الرسومات ‪Plotting‬‬

‫‪38‬‬
‫مثال‬
‫دوال الرسومات‬
‫‪‬‬ ‫‪title‬‬ ‫لكتابة اسم (عنوان) الرسمة‬ ‫‪‬‬
‫‪‬‬ ‫‪xlabel‬‬ ‫لكتابة اسم محور ‪x‬‬ ‫‪‬‬
‫‪‬‬ ‫‪ylabel‬‬ ‫لكتابة اسم محور ‪y‬‬ ‫‪‬‬
‫‪‬‬ ‫‪grid‬‬ ‫لعرض شبكة بالرسم‬ ‫‪‬‬
‫الرسومات ‪Plotting‬‬

‫‪‬‬ ‫‪axis‬‬ ‫لتحديد القيم الصغرى والكبرى‬ ‫‪‬‬


‫للمحاور‬
‫‪ legend‬‬ ‫لتوضيح أسماء الخطوط المرسومة‬ ‫‪‬‬
‫‪ figure‬‬ ‫لالنتقال الى رسمة أخرى‬ ‫‪‬‬

‫‪39‬‬
‫الرسومات ‪Plotting‬‬

‫‪40‬‬
‫مثال‬
‫الرسومات ‪Plotting‬‬

‫‪41‬‬
‫مثال‬
‫أمر ‪subplot‬‬
‫رقم الرسمة‬
‫)‪subplot(m,n,p‬‬
‫عدد الصفوف‬ ‫عدد األعمدة‬
‫الرسومات ‪Plotting‬‬

‫‪42‬‬
‫األمر ‪figure‬‬
‫‪ ‬يستخدم لفتح نافذه لصورة جديدة‬
‫‪ ‬مثال‪:‬‬
‫الرسومات ‪Plotting‬‬

‫‪43‬‬
‫ملفات ‪Matlab‬‬
‫كتابة أوامر ‪ Matlab‬كثيرة عدة مرات غير عملية‬ ‫‪‬‬
‫يتيح ‪ Matlab‬إمكانية تجميع األوامر بشكل ملف‬ ‫‪‬‬
‫يكفي كتابة إسم الملف لتنفيذ جميع األوامر المضمنة‬ ‫‪‬‬
‫يوجد نوعان من الملفات‪:‬‬ ‫‪‬‬
‫الملفات ‪M-Files‬‬

‫)ملفات تحتوي على مجموعة أوامر( ‪– Script files‬‬


‫)ملفات بشكل دوال( ‪– Function files‬‬
‫‪ ‬جميع الملفات تحتوي على االمتداد ‪.m‬‬

‫‪44‬‬
‫انشاء الملفات ‪)M-files( M‬‬
‫‪ ‬لكتابة أي ملف ‪:M-file‬‬
‫– بكتابة ‪ >>edit filename‬في نافذة األوامر‬
‫– باختيار ‪New > M-file‬‬
‫– بالنقر على‬
‫الملفات ‪M-Files‬‬

‫‪ ‬لتنفيذ الملفات‪ ،‬فقط اكتب اسم الملف‪ ،‬وستنفذ جميع األوامر‬


‫المتضمنة بالملف‬

‫‪45‬‬
‫‪Script Files‬‬
‫ملف ‪:script‬‬ ‫الكتابة بنافذة األوامر‬
‫‪ ‬تخزين األوامر بملف (على سبيل‬
‫المثال باسم ‪)test‬‬
‫;‪>> x=3.0‬‬
‫;‪>> y=x^2‬‬
‫الملفات ‪M-Files‬‬

‫‪>> y‬‬
‫= ‪y‬‬
‫‪9.0‬‬
‫>>‬
‫‪ ‬ثم كتابة االسم بنافذة األوامر‪:‬‬
‫‪>> test‬‬ ‫يمكنها التعامل مع المتغيرات‬
‫بذاكرة ‪!Matlab‬‬
‫= ‪y‬‬
‫‪46‬‬
‫‪9.0‬‬
‫تعريف الدالة‬ ‫ملفات الدوال‬
‫‪ ‬شبيهة بملفات ‪ ،script‬مع الفروقات التالية‪:‬‬
‫)‪function [list of outputs] = ge204(list of inputs‬‬
‫‪% function help‬‬
‫‪.‬‬
‫الملفات ‪M-Files‬‬

‫‪.‬‬
‫المخرجات‬ ‫قائمة‬ ‫اسم الدالة‬
‫‪.‬‬ ‫قائمة المدخالت‬
‫‪program‬‬
‫‪.‬‬
‫‪.‬‬
‫توضيح الدالة للمستخدم‬
‫‪.‬‬
‫‪return‬‬ ‫للرجوع‬ ‫ال تتعامل مع المتغيرات‬
‫بذاكرة ‪( Matlab‬متغيرات‬
‫مستقلة)!‬
‫‪47‬‬
‫مثال‬
cmb ‫الدالة‬
function [x,y]=cmb(a,b)
%Test function
x=a+b; Command ‫نافذة األوامر‬
Window
y=a/b;
M-Files ‫الملفات‬

return
>> [j,k]=cmb(5,2)
j=7
k=2.5
>>help cmb
Test function
48
‫التحكم بالتنفيذ‬
‫;‪a=2‬‬
‫;‪b=3‬‬
‫‪ ‬عادة‪ ،‬يكون تنفيذ األوامر بالتسلسل‬
‫;‪c=a+b‬‬
‫;)‪d=sqrt(b‬‬
‫التحكم بالتنفيذ ‪Flow control‬‬

‫‪ ‬باستخدام أوامر التحكم بالتنفيذ‪ ،‬يمكن تغيير هذا التسلسل‬


‫‪ ‬األوامر المهمة‪:‬‬
‫‪if‬‬ ‫إذا‬ ‫–‬
‫أوامر شرطية (تنفذ مرة واحدة)‬ ‫‪if-else‬‬ ‫إذا‪-‬غير ذلك‬ ‫–‬
‫‪while‬‬ ‫طالما‬ ‫–‬
‫أوامر تكرار‬ ‫‪for‬‬ ‫لــ‪...‬‬ ‫–‬

‫‪49‬‬
while ‫ و‬if ‫أوامر‬
while expression if expression if expression
statements statements statements1
end end else
Flow control ‫التحكم بالتنفيذ‬

statements2
end

‫) فقط إذا تحقق الشرط‬statements( ‫ بتنفيذ األوامر‬Matlab ‫ يقوم‬


)expression(
‫ إما‬Matlab ‫ يخرج‬،)expression( ‫ عند التحقق من الشرط‬
)false( ‫) أو غير صحيح‬true( ‫بنتيجة صحيح‬
Matlab ‫) هي أي أوامر بالـ‬statements( ‫ األوامر‬
50
‫تقييم الشرط‬
‫أية معادلة حسابية‬ ‫المعامالت الشرطية‬
‫;‪a=4‬‬ ‫==‬ ‫يساوي‬
‫;‪b=5‬‬ ‫<‬ ‫أقل من‬
‫;‪c=5‬‬ ‫>‬ ‫أكبر من‬
‫أقل من أو يساوي =<‬
‫التحكم بالتنفيذ ‪Flow control‬‬

‫ألن الناتج ≠ ‪if a+b “true” 0‬‬


‫ألن الناتج = ‪if b-c “false”  0‬‬ ‫أكبر من أو يساوي =>‬
‫ال يساوي =~‬

‫انتبه من أخطاء التقريب!‬ ‫المعامالت المنطقية‬


‫”‪if sin(0) “false‬‬ ‫و ‪& and‬‬
‫”‪if sin(pi)“true‬‬ ‫‪| or‬‬ ‫أو‬
‫‪sin(pi) = 1.22e-16‬‬
‫)‪while(3<=a)&(a<=5‬‬
‫‪51‬‬
)if/if-else( ‫أمثلة‬
>> a=6; >> a=50;
>> if a<10 >> if a<10
b=a/2; b=a/2;
end
Flow control ‫التحكم بالتنفيذ‬

end
>> b >> b
b = 3 ??? Undefined function or variable 'b'.

>> a=6; >> a=50;


>> if a<10 >> if a<10
b=a/2; b=a/2;
else else
b=a/5; b=a/5;
end end
>> b >> b
52 b = 3 b = 10
)while( ‫أمثلة‬
>> a=1;
>> a=1;
>> while a<5
>> while a<5
a=a+1
b=a+1
end ‫أمر‬ end
a = 2
Flow control ‫التحكم بالتنفيذ‬

a = 3 !‫تكرار‬ b = 2
b = 3
a = 4
b = 4
a = 5
b = 5
>> a=10; b = 6
>> while a<5 b = 7
a=a+1 .
end .
.
>> a
a = 10 .  loop!
53
‫أمر ‪for‬‬
‫أمر‬ ‫‪for index = start : [increment :] end‬‬
‫‪statements‬‬
‫تكرار!‬ ‫‪end‬‬
‫التحكم بالتنفيذ ‪Flow control‬‬

‫قيمة الزيادة (‪ )increment‬اختيارية‪ ،‬وستفرض قيمتها ‪1‬‬ ‫‪‬‬


‫إذا لم توضع‬
‫يمكن لقيم البداية والزيادة والنهاية أن تكون كسور‬ ‫‪‬‬
‫يمكن للزيادة أن تكون موجبة أو سالبة‬ ‫‪‬‬
‫ينتهي التكرار إذا كان المتغير > النهاية (أو المتغير <‬ ‫‪‬‬
‫النهاية )‬
‫‪54‬‬
‫أمثلة‬
>> for a=1:5
a
end
a = 1
a = 2
Flow control ‫التحكم بالتنفيذ‬

a = 3
a = 4
a = 5

55
‫وظيفة‬
‫ما هو عمل التوابع التالية ؟‬
‫‪Min ‬‬
‫‪Max ‬‬
‫‪Round ‬‬
‫وظيفة‬

‫‪Ceil ‬‬
‫‪Sort ‬‬

‫‪56‬‬

You might also like