هذه هى مجموعة دروس تعليم البرنامج الهندسى الشهير متلاب عن طريق مجموعة دروس بسيطة ومتتابعة مع التمنبات لجميع المسلمين بالاستفادة منها مع العلم انها مترجمة من موقع اجنبى مع وضع بعض الاضافات اليها ليسهل فهمها فتابع الدروس وقوم بتطبيقها خطوة بخطوة



الدرس الاول
مقدمه عامة

المتلاب من برامج الكمبيوتر المهمة جدا في حل جميع انواع المشاكل الرياضية التى تواجهك في الهندسة
تستطيع ان تستخدم الخصائص الموجودة في المتلاب لتقلل من الجهد المبذول في حل جميع انواع المشاكل الرياضية من العمليات الحسابية الاساسية مثل معدالتين تحتوى على مجهولين
X + 2Y = 24
12X - 5Y = 10
الى اكثر تعقيدا مثل معاملات الدوال وانشاء الحسابات عن طريق المصفوفات وانشاء متسلسلة فورير غيرها الكثير
ومن الادوات القوية والمفيدة جدا في البرنامج انه يستخدم في رسم جميع انواع المنحنيات ويمكنك من تخيل الدوال الرياضية المعقدة والبيانات المعملية كمثال : الثلاث صور التالتيين انشؤا عن طريق دوال الرسم في البرنامج

تعلم المتلاب
تعلم المتلاب يشبه الى حد كبير تعلم قيادة السيارة . ففى قيادة السيارة تستطيع تعلم كل القواعد ولكن لتكون سائق جيد يجب ان تخرج الى الطريق وتقود بنفسك ولذلك من افضل واسهل الطرق لتعلم المتلاب هو ان تستعمل المتلاب نفسه
لو كنت تمتلك خلفية جيدة عن الرياضة وبرمجة الكمبيوتر حين اذن تستطيع تعلم المتلاب بسهولة عن طريق مجموعة الدروس القادمة وعن طريق مساعدة البرنامج


الدرس الثاني
شاشة البرنامج


[align=center]تستطيع ان تشغل البرنامج عن طريق الضغط بذر الماوس الايسر ضغطتين عن ايقونة البرنامج الموجودة على سطح المكتب او تشغل البرنامج من قائمة start .
الشاشة الرئيسية للبرنامج تسمى سطح المكتب للبرنامج وهى كما ترى في الاسفل حيث تظهر بعد تحميل البرنامج مباشرة









وعندما تريد الكتابة في البرنامج فقط اكتب الامر بعد محث البرنامج كما ترى في المثال التالى
<<date
ans =
11-Jun-1998

ومن الملاحظ ان رد البرنامج هو تاريخ اليوم
والامر التالى هو الامر clc وهذا الامر يقوم بمسح جميع محتويات شاشة الاوامر اكتب الامر ونفذ ولاحظ ماذا يحدث
>>clc
وفى النهاية تريد ان تخرج من برنامج المتلاب فقط اضغط على قائمة file الموجودة بالبرنامج واختار من القائمة exit matlab ليخرجك هذا الامر من البرنامج

الدرس الثالث


Demo


في هذا الدرس سوف نتعرف على جزئية جديدة ويطلق عليها demo وهى عبارة عن دروس او مساعدة حركية من البرنامج لتعليمك جزئية معينة به هذه الدرس عبارة عن خطوات تقوم بتعلمها خطوة بخطوة
لتظهر لك تلك الدروس اكتب الامر demo في شاشة الاوامر ثم ادخل على زر الادخال


لا تتوقع من هذه الدروس انك تعلمك البرنامج ولكن الغرض الرئيسى منها هو جعلك تتوائم مع البرنامج وتوضح لك امكانيات البرنامج وايضا هناك بعض الالعاب التى يمكن ان تلعبها من خلالها وايضا تحتوى على بعض المهارات في كيفية رسم المعادلات وايضا حلها


عند كتابة الامر demo فى محث الاوامر يظهر لك صندوق حوار يوجد في يسارة مجموعة من الدروس التى من المنتظر منك ان تختار واحدة منها لكى تتعلمة هذه شاشة الحوار تشبة الشاشة التالى







هذه demo مصنفة الى مجموعة كلها مجموعة لها اسم فمثلا مجموعة العمليات الحسابية ومجموعة الرسم وغيرها لكى ترى ما بداخل التصنيف اضغط على الرمز + الموجود بجوار المجموعة لترى ما بداخلة ومن ثم اختار الجزئية المراد معرفتها وعن اختيار الجزئية المراد تعلماه يظهر صندوق النص الموجود في اعلى اليمين وصف عن هذا الدرس فمثلا عندما تختار المصنف gallery ثم تختار الاختيار slosh الموجود بداخلة يظهر لك على الفور الديمو الخاص به
هذا الديمو يظهر لك مثال جيد عن امكانيات الرسم في البرنامج ويحتوى هذا الديمو على ازرار موجودة على اليمين لترى الخطوات المرتبة لمعرفة امكانيات وانجزات اكثر عن هذا







خذ وقت الان وافتح باقى الديمو ولاحظ ما بها


الدرس الرابع

المساعدة فى البرنامج



المتلاب يحتوى على مساعدة غاية في الروعة حيث تستطيع الوصول الى المعلومة بكل سهولة ويسر سواء كنت مبتدأ او محترف
هناك ثلاث طرق للوصول الى المساعدة في البرنامج هم help - winhelp - doc الطريقة الاولى والثانية يعطك المساعدة في نفس شاشة البرنامج اما الطريقة الثالثة فتفتح صفحة انترنت لتقرأ ما تريد المساعدة به و المثال التالى يوضح كيفية المساعدة في الامر date بالطريقة الاولى


<<help date
DATE Current date as date string.S = DATE returns a string containing the date in dd-mmm-yyyy format.
See also NOW, CLOCK, DATENUM




ملاحظة : المساعدة ليست تعرض لها معلومات عن الامر فقط ولك تعرض لك مجموعة من الاوامر التى لها علاقة بهذا الامر فكما ترى في المثال السابق انها عرضت له الامر now - clock - datenumوهى اوامر لها علاقة بالامر date
اما الطريقة الثانية winhelp فكما ترى في المثال التالى :


<<helpwin date





ومن الملاحظ انها اكثر تفصيلا عن الامر السابق وتستطيع الضغط على الاوامر التى لها علاقة بالامر المراد مباشرة بدون كتابة الامر ليعرض لك ملفات المساعدة له
<<doc date
اما الامر الاخير وهو الامر doc الذى يفتح لك صفحة انترنت ويعرض لك الامر بها وهو اكثر تفصيلا من سابقيه حيث يعرض جميع المعلومات مع اعطاء امثلة توضيحية ايضا كما ترى في المثال و الشكل التالى








ومن المصادر الاخرى المهمة جدا في المساعدة او اختيار الامر start >matlab > help ليعرض لك شاشة جديدة كما في الشكل التالى





من الملاحظ ان هذه الشاشة منقسمة الى جزئين جزء على اليسار ويحتوى على العنوانين وجزء على اليمين لقراءة المساعدة للعنوان الذى اخترته والجزء الايسشر يحتوى على مجموعة من الخانات كما ترى في الشكل التالى وهى





product filter : والغرض الرئيسى منه هو تصفية المساعدة للامر الذى اخترته فقط
content : يعرض لك كل العنوانين للدروس والاوامر المراد تلعمها على هيئة جدول
index : ايضا لك يعرض لك الدروس ولكن مرتبة ابجديا
demos : وقد شرحناها في الدرس السابق فاذا لم تعرفها راجع الدرس السابق
search : والغرض منه هو البحث عن امر معين داخل المساعدة
favorites : عرض اخر اوامر انت قمت بفتحها


الدرس الخامس

انشاء المتغيراتالمقدمة

الان قد وصلنا الى مرحلة البرمجة او الى المرحلة الحقيقة لتعليم البرنامج والبداية تكون مع المتغيرات
فالمتغير هو مكان في ذاكرة الكمبيوتر يوضع به رقم معين وهذا المتغير له اسم
اذا لم تفهم معنى الكلام السابق تابع معنا المثال التالى


4 + 10
ans =

14
5 *10 + 6
ans =

56
(6 + 6) / 3
ans =

4
9^2
ans =

81
كما ترى في المثال السابق ان المتلاب يحتوى على عناصر العمليات الحسابية الاساسية مثل + و - و * و / و ^




المتغير answer
وايضا بعد كل عملية يلاحظ كتابة كلمة ans في نهاية العملية حيث ان ans هو المتغير الفتراضى للبرنامج او المتغير الذى يوضع به نتائج العمليات وهى اختصار لكلمة answer ومعناها الاجابة بالعربية كما تعرفون وعندما تريد معرفة الاجابة فقط اكتب كلمة ans في مربع الاوارم لتظهر لك اخر اجابة وضعت في المتغير
4 + 5
ans =
9
ans
ans =
9


وتستطيع ايضا اضافة او طرح او اى عمليات حسابية تقوم بها على هذا المتغير
ans + 10
ans =

19






تعريفات متغيراتك الخاصة بك



يمكنك من عمل متغيران خاصة بك مثال
a = 10
a =

10
b = 20
b =

20
c = 30
c =

30
a
a =

10
the_average = (a + b + c) / 3
the_average =

20




عرض كافة المتغيرات وكيفية مسحها من ذاكرة البرنامج



لنفرض انك قمت بعمل الكثير والكثير من المتغيرات ولا تستطيع تذكرها فالامر whose يقوم بعرض كافة المتغيرات التى ادخلتها على البرنامج وايضا يعرض لك نوعها وحجم استغلالها من الذاكرة واسمها طبعا كما في المثال التالى
حسنا فماذا اذن نفعل اذا اردنا مسح جميع المتغيرات الموجودة بالقيم المخزنة بها الامر clear يقوم بذلك حيث عند كتابة الامر يقوم بمسح جميع المتغيرات المخزنة بالبرنامج بقيمها ايضا كما ترى في المثال التالى :
clear % clear variables from memory - see notes below
a = 5
a = 5
b = 6
b = 6
whos

Name Size Bytes Class a 1x1 8 double array b 1x1 8 double array Grand total is 2 elements using 16 bytes




عدم عرض الاجابة مباشرا

من الملاحظ من جميع الامثلة السابقة ان البرنامج يعطى الاجابة مباشرا بعد العملية وهذ لا يفضل في الكثير من الاوقات ولاغاء هذه العملية يوضع في نهاية الجملة البرمجية ; وهى تعنى للبرنامج بان لا يقوم بعرض الاجابة فاذا لم يرى هذه العلامى يعرض الاجابة كم في المثال التالى
a = 10;
b = 20;
c = 30;
d = 40;
the_average = (a + b + c + d) / 4
the_average =

25

the_average;
b
b =

20
e = 50
e =
50

the_blank_average = (a + b + c + d + e) / 5;
the_blank_average

the_blank_average =
30





شروط تسمية المتغيرات

لوضع اسم للمتغير يجب ان تتوافر فى هذا الاسم مجموعة من الشروط وهى كالتالى
1- يحتوى الاسم على ارقام او حروف او "_" فقط
2- لا يحتوى الاسم على مسافات
3- المتلاب حساس لحالة الاحرف اى ان يفرق بين الحروف الكبيرة والصغير فالمتغير see غير المتغير sEe
4- يمكننا وضع متغيرات نصية ولكن يجب توضيح لذلك للبرنامج عن طريق وضع قيمة المتغير بين علامتين ' '
some_text = 'This is some text assigned to a variable!';
some_text
some_text =
This is some text assigned to a variable!
ملاحظة لا يجب وضع المتغيرات النصية في اى عمليات حسابية كاجميع وغيرها والا فسوف تظهر نتاشج غريبة كما في المثال التالى
a = 5;
b = '5';
a/b
ans =
0.0943
a*b
ans = 265


الدرس السادس(1)
عمل المعادلات


مقدمة في هذا الدرس سوف نعطى بعض الاساسيات فى الرياضيات وايضا سوف ترى كيف تنسف البيانات في البرنامج من حيث طريقة انشائها وترتيبها وترقيمها واستخدمها ايضا متلاب معمل المصفوفات ثلاثة من الاساسيات في المتلاب وفى الجبر الخطى هما القيم العددية والقيم المتجهه والمصفوفاتالقيم العددية او ما تسمى scalars هى تمثل قيمة واحدة لرقم
ام القيم المتجهه هى مجموعة من الارقام في اتجاه واحد وتمثل في امتلاب على انها متحهه ذو صف واحد او عمود واحد
اما المصفوفة فهى مجموعة من الارقام مرتبين على شكل مستطيل اى انها مجموعة من الارقام في صفوف وفى اعمدة ايضا
في بعض الاحيان يعتبرون القيم العددية والمتجهه هى حالات من المصفوفات اى ان scalar هو عبارة عن مصفوفة لها عمود واحد وصف واحد والمتجهه او vector عبارة عن مصفوفة بعمود واحد او بصف واحد لذلك كل العمليات على المتلاب عبارة عن مصفوفات لذلك يطلق عليه معمل المصفوفات
انشاء المصفوفة في البرنامج يتم وضع قيم المفوفة بين زوجين من الاقواس [] ويتم الفصل بي الصفوف عن طريق العلامة ,اما العمدة عن طريق العلامة ; من الممكن ايضا الفصل بين الصفوف عن طريق المسافة والفصل بين الاعمدة عن طريق زر الادخال والمثال التالى يوضح كيفية انشاء scalar و vector او قيمة عددية وقيمة متجهه
my_scalar = 3.1415

my_scalar =
3.1415
my_vector1 = [1, 5, 7]

my_vector1 =
1
5
7

my_vector2 = [1; 5; 7]

my_vector2 =
1
5
7
لاحظ انه myvector1 عبارة عن صف واحد وثلاث اعمدة و myvector2 عبارة عن عمود واحد و 3 صفوف
الان تعلمنا كيفية عمل scalar و vector اما المصفوفة
فماذا لو اردنا انشاء مصفوفة اسمها mymatrix يحتوى الصف الاول منها على الارقام 8 و18 و 19 والصف الثانى على 7 و 3 و 2 والصف الثالث على 14 و 4 و 23 والصف الرابع 8 و 1 و 1 ببساطة انظر الى المثال التالى
my_matrix = [8, 12, 19; 7, 3, 2; 12, 4, 23; 8, 1, 1]

my_matrix =
8
12
19
7
3
2
12
4
23
8
1
1
ويمكننا ايضا من دمج عدة مصفوفات او متجهات مع بعضهم البعض لمعمل مصفوفة جديدة مع الاخذ في الاعتبار ان المصفوفة عبارة عن شكل مستطيل كما ترى في المثال التالى
row_vector1 = [1 2 3]

row_vector1 =

1
2
3

row_vector2 = [3 2 1]

row_vector2 =

3
2
1

matrix_from_row_vec = [row_vector1 ; row_vector2]

matrix_from_row_vec =

1
2
3
3
2
1

column_vector1 = [1;3]

column_vector1 =

1
3
column_vector2 = [2;8]

column_vector1 =

2
8
matrix_from_col_vec = [column_vector1 column_vector2]

matrix_from_col_vec =

1
2
3
8
my_matrix = [8, 12, 19; 7, 3, 2; 12, 4, 23; 8, 1, 1]

my_matrix =

8
12
19
7
3
2
12
4
23
8
1
1
combined_matrix = [my_matrix, my_matrix]

combined_matrix =

8
12
19
8
12
19
7
3
2
7
3
2
12
4
23
12
4
23
8
1
1
8
1
1
من الامثلة السابقة علمنا انه يمكننا دمج عدة مصفوفات او متجهات مع بعضهما البعض لعمل مصفوفة جديدة وبهذه الطريقة يمكننا عمل بيانات غاية في التعقيد لا يمكننا تخيلها من نفسنا
واكثر من ذلك يمكننا عمله في البيانات فمثلا اذا اردنا رسم علاقة بين درجة الحرارة والوقت في يوم كامل اى في 24 ساعة فيتم وضع بيانات درجة الحرارة على هيئة متجه مكون من 24 عنصر والوقت عبارة عن الساعة ايضا متجهه مكون من 25 عنصر ولكن لعمل الوقت يوجد طرقتين الطريقة الاولى وهى كتابة البيانات مباشرة مثل 0 و 100 و 200 و .......... وهكذا والطريقة الثانية هى كما يلى
يتم وضع نقطة البداية ثم معدل الاضافة ثم نقطة النهاية كما ترى في المثال التالى



time = 0:100:2300




وكما ترى فى المثال ان نقطة البداية هى 0 ونقطة النهاية هى 2300 ومعدل الزيادة هو 100 اى انه يبدأ العد من صفر الى 2300 بمعدل 100 زياردة ووضع كل ذلك فى متجهه ويجد ايضا معدل نقط وله نفس معدل الزيادة ما عدا ان معدل النقص تكون به نقطة البداية اكبر من نقطة النهاية ومعدل الزيادة بالسالب كما ترى في المثال التالى
time_dec = 2300:-100:0




الدرس السادس(2)
عمل المعادلات
ترقيم المصفوفات




بعد عملية انشاء المصفوفات ربما تحتاج الى عنصر واحد موجود في المصفوفة لتطبق عليه بعض العمليات وهنا تظهر فائدة الترقيميبدأ الترقيم عن طريق رقم الصف ثم رقم العمود والصف رقم واحد هو اعلى صف والعمود رقم واحد هو العمود الموجود على الشمال دعنا نرى المثال التالى عن طريق المتجهين التاليين




my_vector1 = [1 5 7]
my_vector1 =
1
5
7

my_vector2 = [1; 5; 7]
my_vector2 =
1
5
7

my_vector1(1)
ans = 1
my_vector2(2)
ans = 5
my_vector1(3)
ans = 7
my_vector2(1)
ans = 1
my_vector2(2)
ans = 5
my_vector2(3)
ans = 7


رأينا في المثال السابق اننا نتعامل مع المتحهه اى اننا نحتاج الى رقم واحد فقط ليحدد لنا مكان العنصر ويتم وضع هذا الرقم بين قوسين ولكن فى حالة المصفوفات نحتاج الى رقم الصف ثم رقم العمود كما فى المثال التالى


my_matrix = [8, 12, 19; 7, 3, 2; 12, 4, 23; 8, 1, 1]

my_matrix =
8
12
19
7
3
2
12
4
23
8
1
1
لو كان نريد العنصر رقم 4 ثم نكتب الاتى


my_matrix(3,2)


ans = 4
ليس فقط يمكننا تحديد عنصر واحد فى المصفوفة ولكن يمكننا تحديد مجال في المصفوفة فاذا كان لدينا مصفوفة تحتوى على 5 صفوف و 7 اعمدة ونريد تحديد العناصر من 2 الى 4 في الصفوف و من 4 الى 7 في حالة الاعمدة فاتبع المثال التالى لتفهم اكثر







new_mat = mat(2:4,4:7)






ويمكننا ايضا تغيير قيمة عنصر فى مصفوفة بقيمة اخرى عن طريق تحديد مكان العنصر وكتابة القيمة الجديدة كما ترى في المثال التالى




new_mat



new_mat(2,3) = 1999






لاحظ ان المتجهه هو حالة خاصة من المصفوفة اى ما فعلناه على المصفوفة يطبق على المتجهه
هناك انواع اخرى من المصفوفات ولكننا شرحنا هنا فقط لتفهم مبادئ المتلاب لمعرفة اكثر انظر الى مساعدة البرنامج او انتظر الدروس القادمة ولكن للمحترفين




العمليات على عناصر المصفوفات




قبدا ان نبدأ بشرح هذه الجئية دعنا نعرف ما هو العنصر العنصر ببساطة هو واحد من الارقام المخزنة بالمصفوفة وتعنى انه عند ضرب مصفوفان عنصر عنصر فان ناتج الضرب يكون عنصريا كما فى المثال التالى المصفوفة الاولى (1 2 3 ) والمصفوفة الثانية (4 5 6) حاصل ضرب هاتين المصفوفتين هما (4 10 18 ) لاانا قمنا بضربهم عنصر في عنصر مباشرا ولعمل هذا بالمتلاب يجب وضع نقطة قبل العملية مثل
عملية الضرب :
".*"
عملية الجمع
".+"
عملية الطرح
"-"
عملية الاس
".^"
لاحظ الخطأ عندما تقوم بتطبيق عمليات عنصر لعنصر للموصفوفات لضرب متجه يحتوى على عمود مع متجهه يحتوى على صف مع بعضهم


a

a = 1 2 3
b

b = 4 5 6
c

c = 4
5
6
d

d = 1
2
3
a .* b

ans = 4 10 18
a .* c

??? Error using ==> .*
Matrix dimensions must agree.
c .* d

ans = 4
10
18
a .^ b

ans = 1 32 729
c .^ d

ans = 4
25
216




نفس هذه الخطوات تطبق مع الارقام مثلا لو كنا نريد ضرب مصفوفة في رقم 2 او نريد جمع رقم عليها او نرفها لاس رقم انظر المثال التالى




a = [1 2 3 4 5 6]

a = 1 2 3 4 5 6
b = a .* 2

b = 2 4 6 8 10 12

c = a .^ 2

c = 1 4 9 16 25 36
d = a + 2

d = 3 4 5 6 7 8
e = a - 2

e = -1 0 1 2 3 4





لعلك الان تتسائل لماذا نضع نقطة قبل وضع ادارة عمليات الضرب والقسمة والاس لان هناك نوعان من العمليات التى تتم على المصفوفات عمليات العناصر او عنصر بعنصر ويوضع بها نقطة وحسابات المصفوفات العادية ولا يوضع بها نقطة ويكون لها نتائج مختلفة وتستعمل استعمالات اخرى الاغلبية يعرفونها في الرياضيات كما ترى في المثال التالى




a = [1 2 3]

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

b = 4
5
6
a * b

ans = 32




لاحظنا ان الناتج النهائى لضرب المفوفتين هما 32 لانه قام بضرب 1*4 و 2*5 و 3*6 ثم جمع نتائج هذه العمليات اى 4+10+18=32 فهمت الان اعتقد ذلك
تطبيقات على كل ما تعلمناه
اعتقد الان انك فهمت كيفية انشاء مصفوفة وكيفية اجراء العمليات الاساسية عليها دعنا الان نقوم بعمل تطبيق الا وهو
نريد حساب قيمة y مع اعطاء قيمة x حدود من 100 الى-100 بزيادة 1 للمعادلة التالية


y=x^2
اانظر الى الحل جيدا


inc = 1; % هى القيمة المراد الزيادة من 100 الى -100
x = -100:inc:100; y = x.^2; % حساب مربع كل قيمة في المصفوفة





اعتقد الان ان الموضوع فى غاية البساطة
نحتاج الان الى تحديد عدد العناصر الموجودة في المصفوفة او طول المصفوفة كما يقولون حيث تقوم الدالة lengthبايجاد طول المصفوفة انظر المثال التالى ليوضح الموضوع اكثر




len_x = length(x)

len_x = 201
midpoint_index = round(len_x/2)

midpoint_index = 101
new_x_range = x(midpoint_index-2:midpoint_index+2)

new_x_range = -2 -1 0 1 2
new_y_range = y(midpoint_index-2:midpoint_index+2)

new_y_range = 4 1 0 1 4




ملحوظة : الدالة round تقوم بايجاد اقرب عدد صحيح للعدد العشرى
وهذا مثال اخر ليراجع لك على ما تعلمته في الدروس السابقة وارجو التأنى في القراءة وفهم اسطر البرنامج
input_points = [-pi : pi/8 : pi]

input_points =
Columns 1 through 7
-3.1416 -2.7489 -2.3562 -1.9635 -1.5708 -1.1781 -0.7854

Columns 8 through 14
-0.3927 0 0.3927 0.7854 1.1781 1.5708 1.9635

Columns 15 through 17
2.3562 2.7489 3.1416

sine_curve = 3*sin(5.*input_points)
sine_curve =

Columns 1 through 7
0.0000 -2.7716 2.1213 1.1481 -3.0000 1.1481 2.1213

Columns 8 through 14
-2.7716 0 2.7716 -2.1213 -1.1481 3.0000 -1.1481

Columns 15 through 17
-2.1213 2.7716 0.0000








مع العلم ان pi هو ثابت رياضى يساوى 3.14




الدرس السابع (1)
الرسم فى البرنامج

ارسم خط في الابعاد الثنائية

امر رسم خط في الابعاد الثنائية هو امر في غاية البساطة سوف تفاجأوا به وهو الامر Plot (x,y حيث ان x هو المحور الافقى و y هو المحور الراسى انظر المثال التالى simple_x_points = [1 2 3 4 5]
simple_x_points = 1 2 3 4 5
simple_y_points = [25 0 20 5 15]
simple_y_points = 25 0 20 5 15

عند تطبيق امر الرسم نكتب الامر Plot ثم عناصر المحور الافقى ثم عناصر المحور الرأسى:

plot(simple_x_points, simple_y_points);

سوف يظهر المتلاب الشاشة التالة فورا تنفيذ الامر ليظهر لك شكل المنحنى.



لاحظنا في عملية الرسم السابقة انه قام بتحديد النقط بين المحاور الافقى والرأسى ثم قام بتوصيل النقط بخطوط مستقيمة مثل النقط (1و25) - (2و0) - (3,.20) .......... وقام بتوصيل خطوط مستقيمة بين تلك النقط اذا ماذا يحدث لو عكسنا الرسم بمعنا جعلنا المحور الافقى رأسى والمحور الرأسى افقى فسوف ينتج الشكل التالى ويكون شكل الدالة كتالى
plot(simple_y_points, simple_x_points);





الان قد وصلنا الى كيفية وضع عنوان للرسم وايضا اسم للمحور الافقى واسم للمحور الراسى وكل ذلك فى غاية البساطة حيث الامر title الغرض منه هو وضع عنوان للرسم والامر xlabel الغرض منه هو وضع عنوان للمحور الافقى والامر ylabel الغرض منه هو وضع عنوان للمحور الراسى ولتطبيق كل ذلك دع شاشة الرسم مفتوحة كما هى وارجع الى شاشة الامور كل التالى بها xlabel('this is text describing the x-axis');
ylabel('this is text describing the y-axis');
title('this is text giving a title for the graph');
grid on;

الامر الاخير الغرض منه هو وضع الخطوط الارشادية الافقية والرأسية ويكون الشكل النهائة للرسم كما يلى


سوف نطبق الان بعض ما تعلمناه سابقا في هذا المثال الغرض من هذا المثال هو رسم العلاقة بين قيم x و y حيث ان y=x^2 حيث من المتوقع ان الشكل الذى سوف يظهر هو شكل قطع ناقص دعنا نبدأ
اولا نعطى قيم لمحور x وسوف نعطيها قيم من -5 الى 5 بمعدل زيادة 0.1 ونجعل البرنامج يحسب لنا قيم y على حسب المعادلة السابقة انظر الى ىاسطر البرنامج




x_points = [-5 : .1 : 5];
y_points = x_points .^ 2;





بعد ذلك نعطى الامر للبرنامج برسم العلاقة بين قيم x_point و y_point المعبرة فى المعادلة بالقيم x و y وايضا نسمى المحاور بالاسماء المناسبة ونضع عنوان للرسم ونرسم الخطوط الارشادية plot(x_points,y_points);
xlabel('x-axis'); ylabel('y-axis'); title('A Parabola');



grid on
ونتج من الامر الشكل التالى






لاحظ في الرسم ان الخطوط على شكل منحنى لا تظهر الخطوط المستقيمة التى يرسمها البرنامج بين النقط وذلك لان المسافة بين النقط صغيرة جدا لا نستطيع من خلالها رؤية الخطوط المستقيمو المرسومة


تجميع عدة منحنيات في شاشة واحدة
ا

لان نريد ان نجميع عدة منحنيات فى منحنى واحد حتى نستطيع المقارنة بين تلك المنحنيات فالامر hold on يقوم بتلك العملية فعند كتابة تلك الامر يقوم بتثبيت مرحلة الرسم الحالية وعندما ظهور اى امر رسم اخر يقوم بالرسم فوق الرسم الحالى حيث اننا لو لم نكتب ذلك الامر فان البرنامج سوف يمسح الرسم الحالى ويرسم الرسم الجديد ولاغاء ذلك الامر نكتب hold off انظر المثال التالى لينتج لنا الرسم الذى يليه


x_points = [-10 : .05 : 10];
plot(x_points, exp(x_points));
grid on
hold on
plot(x_points, exp(.95 .* x_points));
plot(x_points, exp(.85 .* x_points));
plot(x_points, exp(.75 .* x_points));
xlabel('x-axis'); ylabel('y-axis');
title('Comparing Exponential Functions');









هناك شئ اخر ربما نحتاجه عند عملية الرسم وهو رسم عدة منحنيات في شاشة واحدة ولكن كل منحنى له المحاور الخاص به حيث ان الامر subplot يقوم بذلك فنحن نكتب الامر ثم نكتب عدد المنحنيات في المحور الافقة وعدد المنحنيات فى المحور الراسى ثم رقم المنحنى الذى نعمل عنده الان انظر الى المثال التالى للتوضيح
x_points = [-10 : .05 : 10];
line = 5 .* x_points;
parabola = x_points .^ 2;
exponential = exp(x_points);
absolute_value = abs(x_points);
subplot(2,2,1);plot(x_points,line);هنا كتبنا عدد المنحنيات الموجودة في الافقى 2 والرأسى 2 ونحن نعمل على المنحنى رقم 1 اى الاعلى في الشمال اى ان الشكل المرسوم سوف يظهر اعلى الشمال
title('Here is the line');
subplot(2,2,2);plot(x_points,parabola);

الشكل المرسوم سوف يظهر اعلى اليمين
title('Here is the parabola');
subplot(2,2,3);plot(x_points,exponential);

الشكل المرسوم سوف يظهر اصفل الشمال
title('Here is the exponential');
subplot(2,2,4);plot(x_points,absolute_value);

الشكل المرسوم سوف يظهر اسفل اليمين
title('Here is the absolute value');





لينتج لنا في النهاية الشكل التالى

الدرس السابع (2)
الرسم فى البرنامج



رسم خط في الأبعاد الثلاثية الان قد انتهينا من شرح الرسم في المحاور الثنائية وبندأ في المحاور اللاثية واعتقد انه لا يوجد اختلاف كبير بين الاثنينتنقسم المحاور اللاثية الى قسمين قسم يختص برسم الخطوط في المحاور الثلاثية وقسم اخر يختص برسم شبكة او تحويل الشكل من خطى الى شبكى دعنا نبدأ لترى الفرق والاختلاف
نبدأ اولا بالرسم الخط في الابعاد الثلاثية حيث ان الامر المختص بذلك هو الامر plot3 نعم كما ترى نفس الامر الابعاد الثانية ولكن مضاف اليه الرقم 3 وايضا يحتاج الى تعريف محور جديد الا وهو المحاور الثالث او Z كما يطلقون عليه انظر الى المثال وراقب معى X = [10 20 30 40];
Y = [10 20 30 40];
Z = [0 210 70 500];
plot3(X,Y,Z); grid on;
xlabel('x-axis'); ylabel('y-axis'); zlabel('z-axis');
title('Pretty simple');





لاحظت في المثال ان الاوامر السابقة المختصة بالرسم بالابعاد الثنائية هى نفسها في الابعاد الثلاثية مثل اسماء المحاور وغيرهاوايضا لاحظت ان المتلاب قام بتحديد النقط (10,10,0), (20,20,210), (30,30,70), و (40,40,500) ثم قام بتوصيل خطوط بين تلك النقط
وهذا مثال اخر ولكن اكثر تعقيدا من السابق Z = [0 : pi/50 : 10*pi];
X = exp(-.2.*Z).*cos(Z);
Y = exp(-.2.*Z).*sin(Z);
plot3(X,Y,Z); grid on;
xlabel('x-axis'); ylabel('y-axis'); zlabel('z-axis');...
title('A little more interesting!');

لاحظ ان كتابة الثلاث نقط بعد الامر معناه ان الامر مستمر ولكن سوف يكمل في السطر التالى


رسم الشبكة ثلاثية الابعاد الرسم الشبكى بسيط جدا سوى انه يحتاج الى المتابعى انظر المثال التالى لتفهم قصدىنريد رسم العلاقة التالية Z=X^2+Y^2
اولا :نعطى قيم x و Y كمصفوفة ثم نعطة امر تكوين الشكل الشبكة لهما كما ترى x_points = [-10 : 1 : 10];
y_points = [-10 : 4 : 10];
[X, Y] = meshgrid(x_points,y_points);

بعد ذلك نكتب العلاقة بين Z , X , Y كما يلى Z = X.^2 + Y.^2;

واخر شئ هو اعطاء الامر النهائى برسم الشكل كما يلى واعطاء عنوان واسماء المحاور ايضا mesh(X,Y,Z); xlabel('x-axis'); ...
ylabel('y-axis');zlabel('z-axis');

ليظهر لنا الشكل النهائى التالى






الدرس الثامن

script بسيط

هذا script يقوم بحساب المتوسط لخمسة ارقام مخزنة في مجموعة من المتغيرات ثم يقوم بطباعة الناتج حيث ان ملف script اسمه average_script.m المنشأ عن طريق منشأ script في المتلاب % a simple Matlab m-file to calculate the
% average of 5 numbers.

% first define variables for the 5 numbers:
a = 5;
b = 10;
c = 15;
d = 20;
e = 25;

% now calculate the average of these and print it out:
five_number_average = (a + b + c + d + e) / 5;
five_number_average

لاحظ ان اى امر يكتب بعض علامة في المائة يحسب على انه ملاحظة ولا بنظر اليه البرنامج فهو لتذكير المبرمج فقطاعتقد الان انك فهمت ماذا يفعل البرنامج فهو قد اعطة لكل متغير قيمة ثم قام بايجاد المتوسك الحسابة لتك القيم
من الاشياء التى تأخذها في اعتبارك عندما تكتب الملاحظات هو ان تكتب فى او البرنامج ملاحظة تذكرر بها البرنامج والغرض منه وكيفية استعمالة وهكذا


تشغيل script


لتشغيل الscript السابق والذى هو عبارة عن ملف average_script.m فقط قم بكتابة اسم الملف في شاشة اوامر المتلاب كما ترى average_script

five_number_average = 15

وايضا توجد مجموعة من الاوامر الاخرى لعرض الخصائص انظر المثال التالى واستنتج هذه الاوامر حيث انا قمنا بشرحها في الدروس السابقة clear
whos
pwd

ans =
D:\Applications\MATLAB6p5\work
dir

. .. average_script.m
average_script

five_number_average = 15
whos

Name Size Bytes Class a 1x1 8 array ans 1x30 60 char array b 1x1 8 double array c 1x1 8 double array d 1x1 8 double array e 1x1 8 double array five_number_average 1x1 8 double array Grand total is 36 elements using 108 bytes




محرر script تعملنا في العنوانين السابقة كيفية حفظ script وتشغيلة وهنا جاء الدور اكيفية انشاءة حيث يوجد في المتلاب برنامج يقوم بانشاء تللك script حيث ان برنامج المتلاب افضل من اى محرر نصوص اخر في ببعض الخصائص وهى 1- يقوم بتلوين عناصر السطور فيعطة للملحوظات نثلا اللون الاخضر وهكذا 2- تستطيع قراءته بسهولة 3- عند حفظ الملف يعطة الامتداد الصحيح لاسم الملف 4- يعالج اخطاء الملف لو به خطأ لتشغيل ذلك المحرر بسهولة اختاره الامر new من القائمة file ثم اختار m file ليقوم بفتح نافذة المحرر وعند الفتح نختار الامر open وهكذا حيث تظهر لنا شاشة بيضاء مستعدة لكتابة اى اوامر بها مثل الشاشة التالية وهذا مثال اخر ل script % This is my practice script:
% First define 2 variables:
a = 3;
b = 4;
% Then let's assume a and b are the lengths of 2 sides % of a right %triangle and let's calculate the
% length of the other side (the hypotenuse) using the
% Pythagorean formula:
c = sqrt(a*a + b*b);

%and, let's see the result:
c

بعد ذلك احفظ script ثم قم بكتابة اسمه في سطر الاوامر كالتالى practice_script
c = 5

وهنا نكون قد انتهينا من هذا الدرس مع العلم انه يحتاج الى المزيد من التدريب عليه باستعمال الدوال الاخرى ك sin , cos وهكذا
الدرس التاسع
حفظ المتغيرات

مقدمة تعلمت في الدروس السابقة كيفية كتابة مجموعة من الاوامر على هيئة نص ومن ثم استدعاء تلك الاوامر من داخل المتلاب وسوف تتعلم معنا في هذا الدارس كيفية الاحتفاظ بالمتغيرات الموجود في تللك الملفات وكيفية حفظ متغيرات في ملف ومن ثم استعدائها حفظ المتغيرات لنفرض انك لديك مجموعة كبيرة من المتغبرات ومن المتوقع استعمال تلك المتغيرات بعد ذلك او فى مشاريع اخرى فانت فى هذه الحالة تحتاج الى طريقة ما لحفظ تلك المتغيرات حيث يقوم الامر save بفعل ذلكحيث يقوم هذا الامر بحفظ كل المتغيرات الموجودة بالبرنامج او بعض منها فى ملف له الامتداد mat وباى اسم تريدة مع الملاحظة انه يجب تحديد مسار البرنامج او الملفات اولا فى البرنامج وهذه بعض الامثلة لتعرف عن الموضوع اكثر
clear
who
cd c:\my_variables
pwd % present working directory

ans =
c:\my_variables

a = 10;
b = 20;
c = 30;
d = sqrt((a + b + c)/pi);
d

d = 4.3702

who
Your variables are:
a ans b c d

save my_chosen_filename
dir

. .. my_chosen_filename.mat

clear
who

فى المثال السابق قمنا بحفظ جميع المتغيرات الموجودة في البرنامج فماذا لو كنا نريد حفظ متغيرات محددة في المتغيرات انظر المثال التالى حيث قام بحفظ المتغيرات a c فى ملف اسمه some_of_myvariable.mat clear
who
a = 10;
b = 20;
c = 30;
who

Your variables are:
a b c

pwd
ans =
c:\my_variables

save some_of_my_variables a c
dir

. .. some_of_my_variables.mat my_chosen_filename.mat
clear
who


تحميل المتغيرات الى البرنامج الان بعد ان قمنا بحفظ المتغيرات في ملف جاء دور استدعاء تلك المتغيرات للعمل بعا حيث يقوم الامر load بتحميل الملف فقط اكتب الامر ثم اسم الملف بدون كتابة الامتداد كما ترى في المثال التالى clear
who

cd c:\my_variables
dir

. .. some_of_my_variables.mat my_chosen_filename.mat
load my_chosen_filename
who

Your variables are:
a ans b c d

a
a = 10
clear
who
load some_of_my_variables
who

Your variables are:
a c

c
c = 30

وايضا يمكنك من استدعاء مجموعة من المتغيرات من الملف عن طريق كتابة اسم الملف ثم اسم المتغيرات التى تريدها كما ترى في المثال التالى who
dir

. .. some_of_my_variables.mat my_chosen_filename.mat
whos -file my_chosen_filename
Name
Size
Bytes
Class




a
1x1
8
double array
b
1x1
8
double array
c
1x1
8
double array
d
1x1
8
double array
Grand total is 4 elements using 32 bytes
load my_chosen_filename a c
who

Your variables are:
a c

a
a = 10

حفظ النصوص هنا قد وصلنا الى كيفية الاضافة الى ملف نصى موجود بالفعل حيث يقوم الامر diary on , diary off بالاضافة الى الملف او بوقف الاضافة الى الملف فعندما نريد الاضافة الى ملف فقط اكتب الامر diary on وعندما نريد وقف عملية الاضافة نكتب duiry off انظر المثال التالى ولاحظ cd c:\my_diaries
dir
. ..
diary test_diary
dir

. .. test_diary
pwd
ans =
c:\my_diaries
who
Your variables are:
ans
help sqrt
SQRT Square root.
SQRT(X) is the square root of the elements of X. Complex
results are produced if X is not positive.

See also SQRTM.
Overloaded methods
help sym/sqrt.m

diary off
This will not be in the diary file!!!
??? This will
|
Missing operator, comma, or semi-colon.

clear
help ans

ANS Most recent answer.
ANS is the variable created automatically when expressions
are not assigned to anything else. ANSwer.

diary on
who
help abs

ABS Absolute value.
ABS(X) is the absolute value of the elements of X. When X is complex, ABS(X) is the complex modulus (magnitude) of the elements of X.

See also SIGN, ANGLE, UNWRAP.
Overloaded methods
help sym/abs.m

diary off
dir

. .. test_diary
type test_diary
dir
. .. test_diary
pwd
ans =
c:\my_diaries
who
Your variables are:
ans
help sqrt
SQRT Square root.
SQRT(X) is the square root of the elements of X. Complex
results are produced if X is not positive.

See also SQRTM.
Overloaded methods
help sym/sqrt.m

diary off
who
help abs

ABS Absolute value.
ABS(X) is the absolute value of the elements of X. When X is complex, ABS(X) is the complex modulus (magnitude) of the elements of X.

See also SIGN, ANGLE, UNWRAP.
Overloaded methods
help sym/abs.m

diary off


الدرس العاشر

التعامل مع الملفات والمجلدات
مقدمة
لاحظنا فى الدروس السابقة انه هناك العديد من الملفات التى تتعامل مع المتلاب مثل Scrit و mat و dairy وغيرها لذلك يجب التنظيم بين تلك الملفات
يستعمل المتلاب نفس اسلوب الويندوز فى تنظيم الملفات اى انه يقسم الى مجلدات اساسية يليها الفرعية واخيرا ترى الملفات
كيف يستطيع المتلاب ايجاد الملفات يبحث المتلاب عن الملفات فى مسار العمل الحالى حيث يمكن معرفة مسار العمل الحالى عن طريق العمر pwd الذى يكتب في شاشة الاكواد فاذا لم يجد الملف فانه يبحث عنه فى مسارات البرنامج نفسه اى برنامج المتلاب حيث انك لو كتب الامر matlabpath يوجد لك مسار البرنامج نفسه انظر الى المثال التالى


matlabpath
MATLABPATH
k:\matlab51\toolbox\matlab\general
k:\matlab51\toolbox\matlab\ops
k:\matlab51\toolbox\matlab\lang
k:\matlab51\toolbox\matlab\elmat
k:\matlab51\toolbox\matlab\elfun
.....
.....etc.
.....
k:\matlab51\toolbox\simulink\blocks
k:\matlab51\toolbox\simulink\simdemos
k:\matlab51\toolbox\simulink\dee
k:\matlab51\toolbox\local





واذا لم يجد المتلاب الملف فانه يظهر الرسالة التالية


nonexistent_file
??? Undefined function or variable nonexisitent_file'.


اذا فما اذن الطريقة التى اتبعها لكى اخزن ملفاتها بها حتى يسهل على البرنامج ايجادها بسهولة وتسهل عملى وهنا طريقيتين لذلك
اولا : اكتب الامر addpath ثم المسار الذى تريد العمل عليه
ثانيا : استعمل ادوات المسار عن طريق كتابة الامر pathtool فى شاشة الاكواد او اختيار الامر setpath من القائمة file
فمثلا لو انك تريد من المتلاب العمل على المسار التالى a:\my_stuff\letters فانظر الى الطريقة التالية فى المثال التالى


type letter_to_mom.txt
??? Error using ==> type
letter_to_mom.txt: File not found.

addpath a:\my_stuff\letters
matlabpath

MATLABPATH
a:\my_stuff\letters
k:\matlab51\toolbox\matlab\general
k:\matlab51\toolbox\matlab\ops
k:\matlab51\toolbox\matlab\lang
k:\matlab51\toolbox\matlab\elmat
k:\matlab51\toolbox\matlab\elfun
k:\matlab51\toolbox\matlab\specfun
.....
.....etc.
.....
k:\matlab51\toolbox\simulink\simdemos
k:\matlab51\toolbox\simulink\dee
k:\matlab51\toolbox\local
type letter_to_mom.txt

Hi mom!


دوال مفيدة عند التعامل مع الملفات
pwd - مسار العمل الحالى
dir
, or ls - عرض المسارات
what
- List MATLAB-عرض الملفات في المسارات
cd
- تغيير مسار العمل الحالىpath, or matlabpath - عرض مسارات البحث
addpath
- اضافة مسار بحث جديد
pathtool
- عرض شاشة حوار تعديل المسارات
help general - عرض اوامر المتلاب
انظر الى المثال التالى ليتوضح لك الموضوع اكثر


pwd
ans =
c:\my_scripts

dir
. .. script1.m
cd a:\my_stuff\letters
pwd

ans =
a:\my_stuff\letters

dir
. information_request.txt
.. letter_to_mom.txt

type letter_to_mom.txt
Hi mom!





]v,s jugdl fvkhl[ Matlab jugdl