الماتلاب خطوة بخطوة (تعلم كل شئ عن الماتلاب)

الحالة
مغلق و غير مفتوح للمزيد من الردود.
إنضم
6 أكتوبر 2005
المشاركات
1,295
مجموع الإعجابات
29
النقاط
0
إيجاد حاصل ضرب العناصر في المتجه

إيجاد حاصل ضرب العناصر في المتجه
يوفر الماتلاب خاصية ضرب عناصر المتجه, وذلك بإستخدام الأمر prod وهو إختصار product
ويجب أن يأخذ هذا الأمر الصورة التالية في كتابته
14503_1155654972.gif

والآن لنأخذ مثالاً تطبيقياً في الماتلاب
14503_1155655061.gif
 
إنضم
6 أكتوبر 2005
المشاركات
1,295
مجموع الإعجابات
29
النقاط
0
الدرس القادم بإذن الله

الآن نكون قد إنتهينا من شرح العمليات على المتجهات
والدرس القادم هو
العمليات على المصفوفات
 
إنضم
6 أكتوبر 2005
المشاركات
1,295
مجموع الإعجابات
29
النقاط
0
العمليات على المصفوفات

العمليات على المصفوفات
أولاً يجب تعريف أنواع المصفوفات, فهنالك نوعان من المصفوفات
1- مصفوفة غير منتظمة
2- مصفوفة منتظمة أو مربعة
أما العمليات التي سوف تتم على المصفوفات فهي
1- طول المتجه
2- إضافة عنصر
3- إستبدال عنصر
4- عملية حذف صف أو عمود بأكمله
5- نداء عنصر
6- نداء عدد عناصر
7- إيجاد العنصر الأكبر
8- إيجاد العنصر الأصغر
9- إيجاد مجموع عناصر المصفوفة
10- إيجاد حاصل ضرب العناصر
11- إيجاد قطر المصفوفة Diagonal
12- المصفوفة السحرية
وهذه هي العمليات الشائع إستخدامها في الماتلاب
وسيتم شرحها بالتفصيل بإذن الله​
 
التعديل الأخير:
إنضم
6 أكتوبر 2005
المشاركات
1,295
مجموع الإعجابات
29
النقاط
0
إيجاد حجم المصفوفة

إيجاد حجم المصفوفة
لإيجاد حجم المصفوفة أو دعونا نقول لإيجاد عدد الصفوف والأعمدة لمصفوفة, يجب إستخدام الأمر size, حيث لا يصلح إستخدام الأمر length, فأمر length يستخدم في المتجهات وليس في المصفوفات, ولتوضيح الأمر دعونا نقوم بعمل مثال مبسط لشرح هذا الأمر, أولاً لنقوم بعمل مصفوفة غير منتظمة ( أي أن عدد الصفوف لا يساوي عدد الأعمدة) كما في الشكل التالي
14503_1155679985.gif

والآ لنقوم بكتابة الأمر size لمعرفة حجم المصفوفة
14503_1155680182.gif

أما إذا أردنا أن نعرف عدد الصفوف فقط
نقوم بعمل الآتي
14503_1155680266.gif

أما إذا أردنا أن نعرف عدد الأعمدة فقط
نقوم بكتابة التالي
14503_1155680324.gif

 
إنضم
6 أكتوبر 2005
المشاركات
1,295
مجموع الإعجابات
29
النقاط
0
إضافة عنصر إلى المصفوفة

إضافة عنصر إلى المصفوفة
عملية إضافة عنصر أو عدة عناصر هي من العمليات الهامة جداً داخل الماتلاب, ودائماً نقوم بإستخدامها في الكثير من البرامج المتقدمة كما سيتضح فيما بعد, ولتوضيح ذلك الأمر يجب أن نقوم بإعطاء مثال حتى تصل مرحلة الفهم التام لها
لنقوم أولاً بتعريف مصفوفة في الماتلاب
14503_1155681073.gif

لنفترض أننا نريد أن نقوم بوضع رقم 42 في الصف الثاني والعمود الخامس, نقوم بكتابة التالي في الماتلاب
14503_1155681165.gif

كما تلاحظ فإن الصف الأول والصف الثالث للعمود الخامس, لم يتم وضع قيم بهما, لذلك قام الماتلاب بإفتراضهما صفراً.
فماذا إذا أردنا إضافة عدة عناصر في المصفوفة؟ يمكن إيضاح ذلك بإستخدام المثال التالي
لنقوم أننا نريد إضافة الأعداد31 و 54 و 13 و 11 في الصف الرابع والعمود الأول الثاني والثالث و الرابع على التوالي, يمكن ذلك من خلال الماتلاب بالشكل التالي
14503_1155681640.gif
 
إنضم
6 أكتوبر 2005
المشاركات
1,295
مجموع الإعجابات
29
النقاط
0
إستبدال عنصر

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

ولنقوم بإستبدال العنصر في الصف الثالث والعمود الأول إلى الرقم صفر
14503_1155683217.gif

وإذا أردنا إستبدال عدة عناصر, يمكن ذلك بعمل مثال بسيط, لنقل أننا نريد أن نستبدل الصف الأول والثاني والعمودين من الأول إلى الثالث بقيمة صفر
14503_1155683350.gif

 
إنضم
6 أكتوبر 2005
المشاركات
1,295
مجموع الإعجابات
29
النقاط
0
حذف أكثر من عنصر

حذف أكثر من عنصر
لايقوم الماتلاب بعملية حذف لعنصر واحد فقط في مصفوفة, حيث أنه من غير المعقول حذف عنصر من داخل المصفوفة, وبقية الصف والعمود بهم قيم, ولكن إذا أردت أن تقوم بحذف صف كامل أو عمود كامل فيمكن ذلك بعمل التالي
نقوم أولاً بعمل مصفوفة للعمل عليها
[LINE]hr[/LINE]
14503_1155685314.gif

[LINE]hr[/LINE]
لنقل اننا نريد حذف الصف الثالث كله
[LINE]hr[/LINE]
14503_1155685644.gif

[LINE]hr[/LINE]
ولحذف العمود الرابع كله, قم بعمل التالي
[LINE]hr[/LINE]
14503_1155685813.gif

[LINE]hr[/LINE]​
 
إنضم
6 أكتوبر 2005
المشاركات
1,295
مجموع الإعجابات
29
النقاط
0
نداء عنصر

نداء عنصر
عملية نداء عنصر من أكثر العمليات هامة جداً داخل الماتلاب, أي أنه نود الحصول على عنصر وحيد من المصفوفة, وذلك بذكر رقم الصف ورقم العمود الذي به هذا العنصر, ولتوضيح هذا الأمر, نقوم بعمل مثال بسيط, معتمدين على نفس المصفوفة التي تم ذكرها في المثال السابق
[LINE]hr[/LINE]
14503_1155685314.gif

[LINE]hr[/LINE]
لنقل اننا نريد العنصر في الصف الأول والعمود الثالث
[LINE]hr[/LINE]
14503_1155724165.gif

[LINE]hr[/LINE]
ولنداء أكثر من عنصر, نقوم مثلاً بنداء الصف الثاني ومن العمود الثاني إلى الرابع
[LINE]hr[/LINE]
14503_1155724309.gif

[LINE]hr[/LINE]
هذا في حالة أننا نعرف حجم المصفوفة, ولكن ماذا إذا لم نكن نعرف حجمها, ونريد أن نحصل على العنصر الأخير مثلاً من الصف الثاني
[LINE]hr[/LINE]
14503_1155724483.gif

[LINE]hr[/LINE]
وسنقوم بعد عملية الشرح تماماً بالعديد والعديد من الأمثلة التي تزيد من سرعتك ومهارتك في الماتلاب
 
إنضم
6 أكتوبر 2005
المشاركات
1,295
مجموع الإعجابات
29
النقاط
0
إيجاد العنصر الأكبر

إيجاد العنصر الأكبر
يقوم الماتلاب بإيجاد العنصر الأكبر عن طريق العمل على المصفوفة بشكل مختلف, فكيف يبحث عن العنصر الأكبر في المصفوفة, يقوم الماتلاب بالبحث عن العنصر الأكبر في كل عمود في المصفوفة, وبعدما يقوم بعمل ذلك, يقوم بعمل متجه به الرقم الأكبر من كل عمود, أنظر المثال التالي للتوضيح
لدينا الآن مصفوفة تم إنشائها على الماتلاب
[LINE]hr[/LINE]
14503_1155724951.gif

[LINE]hr[/LINE]
ولنقم بكتابة الأمر max كما ذكرنا مسبقاً
[LINE]hr[/LINE]
14503_1155726846.gif

[LINE]hr[/LINE]
كما تلاحظ فلقد قام الماتلاب بإختيار العنصر الأكبر من كل عمود, ولإختيار الرقم الأكبر بينهم يجب كتابة نفس الأمر للناتج الخارج, وبالتالي نحصل على الرقم الأكبر في المصفوفة ككل
[LINE]hr[/LINE]
14503_1155726865.gif

[LINE]hr[/LINE]​
 
إنضم
6 أكتوبر 2005
المشاركات
1,295
مجموع الإعجابات
29
النقاط
0
إيجاد العنصر الأصغر

إيجاد العنصر الأصغر
هذه العملية أيضاً كثيرة الإستخدام في التطبيقات المختلفة, وهي نفس الخطوات السابق ذكرها في إيجاد العنصر الأكبر ولكن يتم إستخدام الأمر min
وإليكم المثال التالي
[LINE]hr[/LINE]
14503_1155749570.gif

[LINE]hr[/LINE]​
 
إنضم
6 أكتوبر 2005
المشاركات
1,295
مجموع الإعجابات
29
النقاط
0
إيجاد مجموع العناصر

إيجاد مجموع العناصر
لإيجاد المجموع كما تعلمنا نقوم بإستخدام الأمر sum ولكن عملية الجمع يقوم الماتلاب بإيجاد جمع كل عمود على حدى وتوضع في صورة متجه, كما في المثال التالي
14503_1155749826.gif

 
إنضم
6 أكتوبر 2005
المشاركات
1,295
مجموع الإعجابات
29
النقاط
0
إيجاد حاصل ضرب العناصر

إيجاد حاصل ضرب العناصر
يمكن ضرب عناصر المصفوفة, ولكن في الماتلاب عملية الضرب تكون لكل عمود على حدى ويتم وضع الناتج في متجه, وإذا تم إستخدام الأمر مرة أخرى يتم ضرب عناصر المتجه جميعها, لينتج حاصل الضرب المصفوفة جميعها, أنظر المثال التالي
[LINE]hr[/LINE]
14503_1155750173.gif

[LINE]hr[/LINE]​
 
إنضم
6 أكتوبر 2005
المشاركات
1,295
مجموع الإعجابات
29
النقاط
0
إيجاد قطر المصفوفة

إيجاد قطر المصفوفة
هذه العملية قد تكون ذات إستخدام أكاديمي, ولكنها هامة جداً, وخصوصاً أن تلك الخاصية تخدم المصفوفة المربعة ( عدد الصفوف يساوي عدد الأعمدة), ويتم إستخدام الأمر diag, وهذا مثال لذلك
[LINE]hr[/LINE]
14503_1155750595.gif

[LINE]hr[/LINE]
يمكننا الآن عمل العديد من العمليات على قطر المصفوفة, فمثلاً نريد الحصول على عملية الجمع لعناصر المصفوفة
[LINE]hr[/LINE]
14503_1155750685.gif

[LINE]hr[/LINE]
أو أننا نريد الحصول على حاصل ضرب تلك العناصر
[LINE]hr[/LINE]
14503_1155750746.gif

[LINE]hr[/LINE]​
 
إنضم
6 أكتوبر 2005
المشاركات
1,295
مجموع الإعجابات
29
النقاط
0
المصفوفة السحرية

المصفوفة السحرية
حقاً كلمة قد يستغربها البعض, ولكنها حقيقة فحقاً إنها سحرية, حيث أن الماتلاب لديه القدرة على إنتاج مصفوفة مربعة يقوم الماتلاب بإختيار أرقامها بشكل عشوائي, كل ما عليك إلا إستخدام الأمر magic وتحديد N حيث انها تمثل عدد الصفوف المساوي لعدد الأعمدة, هذه المصفوفة مهمة جداً وخصوصاً في عمليات إختبار الأنظمة, كما سنتحدث لاحقاً بإذن الله في الشبكات العصبية.
ولنأخذ مثالاً مبسطاً
[LINE]hr[/LINE]
14503_1155751528.gif

[LINE]hr[/LINE]​
 
إنضم
6 أكتوبر 2005
المشاركات
1,295
مجموع الإعجابات
29
النقاط
0
M-File

M-File
هي وسيلة لإدخال الأوامر ولكن ليس من خلال نافذة الأوامر, ولكن ماذا قد يختلف في هذه الوسيلة الجديدة في إدخال الأوامر؟
1- في عملية إدخال الأوامر التي كنا نستخدمها, إذا أردنا تعديل عنصر أو أكثر كان يجب إعادة إدخال الأمر من جديد.
2- إذا وجد خطأ, فيجب كتابة الأمر من جديد
3- إذا كتبنا برنامج كبير, وأردنا إعادة العملية مرة أخرى يجب إدخال جميع الأوامر من جديد وبنفس الترتيب.
4- إذا حدث خطأ في ترتيب الأوامر لهذا البرنامج الكبير ستقوم بإعادة الإدخال الأوامر من البداية مرة إخرى.
5- يصعب عمل عملية تصحيح للأخطاء Debugging
وهذا بالطبع يستغرق وقتاً كبيراً هذا بالإضافة إلى الملل الذي يحدث للمستخدم
وطبعاً حلاً لهذه المشكلة, تم عمل بما يسمى M-File والتي تعطي القدرة على كتابة البرنامج كاملاً أولاً بدون تشغيل, وبعد الإنتهاء منه يتم تشغيله, هذه الخاصية تعطي القدرة على تعديل القيّم دون الحاجة إلى كتابتها مرة أخرى, أو إعادة إدخال الأوامر التي تعتمد على هذا الأمر.
فكيف يتم تشغيل تلك الخاصية؟ إتبع الصورة التالية
[LINE]hr[/LINE]
14503_1155755284.gif

[LINE]hr[/LINE]
وبالتالي ستظهر نافذه جديدة, تأخذ الشكل التالي
[LINE]hr[/LINE]
14503_1155755472.gif

[LINE]hr[/LINE]
وسنتعرف على نافذة M-File بالتفصيل الممل بإذن الله في الدرس القادم​
 
إنضم
6 أكتوبر 2005
المشاركات
1,295
مجموع الإعجابات
29
النقاط
0
نافذة M-File

نافذة M-File
سنقوم الآن بالتعرف على نافذة M-File, أنظر الصورة التالية
[LINE]hr[/LINE]
14503_1155756783.gif

[LINE]hr[/LINE]
ولكن عند الضغط على زر التشغيل, سيطالبك الماتلاب بحفظ البرنامج, ولكن يشترط الآتي عند حفظ البرنامج
1- أن لايبدأ بأرقام
2- أن لا يكون أمراً معرفاً في الماتلاب
3- أن لا يحتوي الإسم على مسافات فاصلة
4- أن لاتحتوي على رموز خاصة مثل + , - , & , *
يجب مراعاة تلك الشروط وإلا لن يقوم الماتلاب بتنفيذ البرنامج
فالنقم بتنفيذ المثال المكتوب الآن في النافذة السابقة
1- يتم الضغط على زر التشغيل كما هو واضح في الصورة التالية
[LINE]hr[/LINE]
14503_1155757171.gif

[LINE]hr[/LINE]
2- سيطالبنا الماتلاب بحفظ البرنامج أولاً, ولنسميه training1
[LINE]hr[/LINE]
14503_1155757389.gif

[LINE]hr[/LINE]
3- ستظهر القيم في كلاً من Command Window and Workspace
[LINE]hr[/LINE]
14503_1155757568.gif

[LINE]hr[/LINE]
4- لنعود إلى M-File ونقوم بتغيير بعض القيم للمصفوفة, كما في الشكل التالي
[LINE]hr[/LINE]
14503_1155757676.gif

[LINE]hr[/LINE]
5- سنقوم الآن بتشغيل البرنامج, وسيقوم الماتلاب الآن بالحفظ تلقائياً دون الحاجة لإعادة التسمية, ثم شاهد نافذة الأوامر Command Window
[LINE]hr[/LINE]
14503_1155757851.gif

[LINE]hr[/LINE]
وكما تلاحظ فإنه في كل عملية تحديث للبرنامج ستظل قيم البرنامج القديم موجودة, فحلاً لهذه المشكلة, يتم وضع الأمر CLC في أول كل برنامج, وهذا يكون مبدأ في جميع البرامج التي نقوم بعملها لابد من أن تبدأ بهذا الأمر.
ودعونا نقوم بمثال يوضح لنا ذلك​
 
التعديل الأخير:
إنضم
6 أكتوبر 2005
المشاركات
1,295
مجموع الإعجابات
29
النقاط
0
مثال على M-File

سنقوم الآن بكتابة الـــ M-File
[LINE]hr[/LINE]
14503_1155765248.gif

[LINE]hr[/LINE]
سنقوم الآن بتعديل المثال, وحتى نتأكد أن أمر CLC يعمل, ستختفي القيم من Command Window وتظهر القيم الجديدة
[LINE]hr[/LINE]
14503_1155765474.gif

[LINE]hr[/LINE]
وبهذا نتأكد من أن الأمر CLC يعمل بكفاءة
ولكن دعونا نشاهد نافذة Workspace والتي تحتوى على قيم A,B,C
[LINE]hr[/LINE]
14503_1155765706.gif

[LINE]hr[/LINE]
لنقم بتعديل بسيط في البرنامج عن طريق تغيير الرموز فقط من A,B,C إلى D,E,F ومشاهدة النافذة Workspace
[LINE]hr[/LINE]
14503_1155767152.gif

[LINE]hr[/LINE]
ولتلافي هذه المشكلة, يجب وضع أمر Clear بعد الأمر clc بحيث يقوم بمسح أي قيمة سابقة من أي برنامج آخر في Workspace , ويجب تثبيت هذا الأمر أيضاً في جميع البرامج والتي سيتم عملها لاحقاً بإذن الله.
وسنقوم الآن بتنفيذ نفس البرنامج ولكن بعد وضع الأمر clear, وستلاحظ الفرق الشاسع في الماتلاب الآن
[LINE]hr[/LINE]
14503_1155767371.gif

[LINE]hr[/LINE]​
 
إنضم
6 أكتوبر 2005
المشاركات
1,295
مجموع الإعجابات
29
النقاط
0
بعض الأوامر الهامة

بعض الأوامر الهامة
قبل الإنتقال إلى الرسم plotting لابد من أخذ بعض الأوامر الهامة, والتي سيتم تداولها بشكل مستمر بإذن الله
[LINE]hr[/LINE]
linspace
هذا الأمر كثير الإستخدام, والذي يستخدم في عملية إنتاج متجه, عن طريق تحديد الرقم الأصغر والرقم الأكبر, وعدد النقط المرغوبة بين هذين الرقمين
ويأخذ الصورة التالية
[LINE]hr[/LINE]
14503_1155831677.gif

[LINE]hr[/LINE]
فالمثال التالي يوضح كيفية إستخدام 10 نقاط من بين الرقمين 5 و 15
[LINE]hr[/LINE]
14503_1155832966.gif

[LINE]hr[/LINE]
وهذا ما يسمى النظام العشوائي للماتلاب Randomization System in Matlab
والميزة في هذا النظام هو أن المتجه نظام عشوائي متزايد
[LINE]hr[/LINE]
randint
هذا الأمر من ضمن الأوامر والتي تنشأ نظام عشوائي للأرقم, ولكن ليس نظام نظام عدد صحيح وليس على هيئة كسور مثل الأمر السابق, كما أن نظام الأرقام به ليس تزايدياً أو تناقصياً بل عشوائياً
ويأخذ الصورة التالية
[LINE]hr[/LINE]
14503_1155848555.gif

[LINE]hr[/LINE]
وهذا مثال بسيط بإستخدام هذا الأمر على الماتلاب
[LINE]hr[/LINE]
14503_1155848708.gif

[LINE]hr[/LINE]
Input
هذا الأمر هام جداً في الماتلاب, حيث يقوم المستخدم من خلال إستخدامه يجعل الماتلاب يسأله عن متجه أو مصفوفة, أو حتى حروف وأسماء وذلك تبعاً لما يقوم المستخدم بتعريفه
فمثلاً إذا أردنا الماتلاب يطالبك بإدخال سنك, سنقوم بعمل التالي
[LINE]hr[/LINE]
14503_1155849220.gif

[LINE]hr[/LINE]
وإذا أردنا أن نعرف للماتلاب بأن ما سيتم إدخاله هو إسم وليس رقم, يتم كتابة البرنامج بالشكل التالي
[LINE]hr[/LINE]
14503_1155849526.gif

[LINE]hr[/LINE]​
 
إنضم
6 أكتوبر 2005
المشاركات
1,295
مجموع الإعجابات
29
النقاط
0
بقية الأوامر الهامة

لنستكمل الأوامر الهامة
أولاً ما الفرق بين String and Character؟
string هو حرف أو كلمة في الماتلاب
character هو عبارة عن رقم أو مجموعة من الآرقام
وهنالك أمر يقوم بتحويل string to Character والعكس كذلك
وهما
num2str
str2num
ولكن فيما يفيدوا هذه الأوامر
سنقوم بمثال بسيط حتى تفهم المقصود من هذه الأمور, سنقوم بإستخدام الأمر input في وضعية string وسنقوم بإدخال أرقام, ستبدأ تستغرب الآن, فهل الماتلاب حتى بعد إدخالي الرقم سيتعرف عليها كأنها أرقام أم أي شئ غير ذلك, شاهد الصورة التالية



14503_1155856061.gif




سنقوم الآن بإستخدام str2num لتحويل string إلى character أو رقم, شاهد الصورة التالية



14503_1155856079.gif




ماذا بخصوص الأمر الثاني num2str
يستخدم هذا الأمر في تحويل الأرقام إلى string كتعريف لدى الماتلاب, ولكنه لا يغير من شكله, فالمثال التالي طلب منا إدخال الإسم والسن, ثم سنضع الإسم والسن في متجه, ولكن يجب أن نراعي كما ذكرنا مسبقاً أن المتجه إما يحتوي على أرقام أو string فقط وليس كلاهما



14503_1155855139.gif




والآن نحن على إتم إستعداد للبدء في الجزء المتعلق بالرسم الثنائي والثلاثي الأبعاد​
 
التعديل الأخير:
إنضم
6 أكتوبر 2005
المشاركات
1,295
مجموع الإعجابات
29
النقاط
0
Plotting

الرسم ثنائي الأبعاد 2D Plotting
المقصود بالرسم ثنائي الأبعاد هو ان تكون العلاقة التي تحكم عملية الرسم تكون بين متغيرين فقط أحدهما يسمى independent والآخر يسمى dependent
فما المقصود بـــ independent Variable أي المتغير المستقل أي أن قيمه لا تحكمها علاقة
بينما dependent Variable أي المتغير المُعتمد حيث يعتمد قيمه على قيم المتغير المستقل
الآن وبعد شرح هذين العنصرين الهامين, سنقوم بشرح الأمر plot حيث يأخذ الصورة التالية


14503_1155902052.gif



وهذا مثال بسيط لكيفية رسم sine Wave


14503_1155906224.gif



وتلاحظ أننا قد إخترنا 10 نقاط فقط لرسم Sine Wave , وهذا عدد قليل لرسم Sine Wave وتلاحظ ظهور الرسمة بالشكل التالي


14503_1155902614.gif



وحلاً لهذه المشكلة, لابد من زيادة عدد النقاط داخل المتجه, كما في الشكل التالي


14503_1155902889.gif



وستلاحظ أن الرسمة قد تحسنت كثيراً


14503_1155903020.gif



وسنأخذ في الدرس القادم كيفية وضع مسميات حول محور السينات X-Axis ومحور الصادات Y-Axis وعنوان للرسمة,ووضع شبكة على الرسمة ,وكيفية تغيير لون الرسمة, وكذلك وضع أكثر من رسمة فوق بعضهما, وكيفية عمل كل رسمة في نافذة منفصلة, وكيفية إنشاء عدة رسومات منفصلة في نافذة واحدة بإذن الله​
 
التعديل الأخير:
الحالة
مغلق و غير مفتوح للمزيد من الردود.
أعلى