الرسم ثنائي الأبعاد في برنامج الماتلاب


(المهندس سعود) #1

الرسم ثنائي الأبعاد 2D Graphs في برنامج MATLAB

يتمتع برنامج MATLAB بقدرة فنية متميزة في رسم الأشكال ثنائية الأبعاد 2-D graphs والأشكال ثلاثية الأبعاد 3-d graphs علي حد سواء بكل سهولة ويسر ( والتي يصعب رسمها بإستخدام بقية لغات البرمجة ) بالإضافة إلي القدرة الفائقة للتحكم في خصائص هذه الأشكال الرسومية من خلال تغيير نمط ولون خط الرسم وإضافة عناوين للرسومات ووضع مسميات حول محور السينات X-Axis ومحور الصادات Y-Axis ووضع شبكة من الخطوط الأفقية والرأسية للرسم الناتج وكذلك كيفية إنشاء أكثر من رسمة فوق بعضها وكيفية إنشاء كل رسمة في عدة نوافذ رسم منفصلة وكيفية إنشاء عدة رسومات منفصلة في نافذة رسم واحدة وما إلي ذلك من خصائص سنتناولها حيث سنقوم بإستعراض أكثر أدوات الرسم إستخداما في برنامج MATLAB ونقوم بتحليلها ودراستها للحصول علي رسومات في بعدين Two Dimensional Graphs أو ثلاثة أبعاد Three Dimensional Graphs .

كما أعدك بأن تكون جميع الأفكار مدعمة بأسئلة محلولة وأشكال رسومية موضحة لكي لا تشعر بملل في تلقي المعلومات العلمية .

الرسومات ثنائية الأبعاد 2D plotting :

الرسم الثنائي الأبعاد هو الرسم المرتبط بمحورين إحداثيين فقط أحدهما المحور الأفقي X-Axis والأخر المحور الرأسي Y-Axis .

وتعتبر الدالة plot من أشهر دوال البرنامج MATLAB إستخداما في رسم الأشكال ثنائية الأبعاد 2-2-D Plotting وتوجد لها العديد من الصور التي تختلف بإختلاف عدد ونوع المدخلات inpues ( مع العلم أن برنامج MATLAB يجبر المستخدم علي التمييز الدقيق بين المدخلات ) وفيما يلي شرح تفصيلي مدعم بالأمثلة المحلولة عن أشهر صور الدالة plot :

الصورة الأولي :

plot (indep_ver,dep_var)

plot (x,y)

في هذه الصورة قمنا بتمرير متغيرين (بشرط أن يكون لهما نفس الأبعاد ) إلي الدالة plot أحدهما x ويسمي متغير مستقل independent Variable أي أن قيم عناصره لا تحكمها علاقة والأخر y ويسمي متغير معتمد dependent Variable حيث تعتمد قيم عناصره علي قيم عناصر المتغير المستقل x .

وفي هذه الحالة ستقوم الدالة plot برسم قيم عناصر المتجه x وعلي المحور الأفقي مع قيم عناصر المتجه y المناظره لها علي المحور الرأسي ولتوضيح هذه الصورة نقوم بعمل مثال بسيط لكيفية رسم دالة Sine Wave الشهيرة كما يلي :

  • قم بفتح ملف جديد من نوع M-file وقم بتعريف المتجهان x,y وتطبيق الصورة الأولي للدالة plot علي هذين المتجهين كما بالشكل التالي:
1- clc;clear;close all;

2- x=0:0.1:10; %Independent Variable

3- y=sin (x) ; %dependent Variable

4- plot (x,y) ;

5- title (‘plot of sine wave’) ;

شرح الكود البرمجي :

  • في السطر الأولي قمنا بمسح محتويات نافذتي محرر الأوامر Command Window ومنطقة العمل Workspace وإغلاق جميع نوافذ الرسم المفتوحة سابقا .

  • في السطر الثاني قمنا بإنشاء عدد من النقاط المتتالية بداية من 0 إلي 10 وبخطوة (+0.1 )وقمنا بتخزينها في المتجه x والذي يمثل المحور الأفقي للرسم البياني .

  • في السطر الثالث قمنا بإنشاء متجه أخر y يتضمن القيم الناتجة عن حساب دالة الجيب sine لقيم النقاط المخزنة في المتجه x .

  • في السطر الرابع قمنا برسم قيم عناصر المتجه y الناتجة عن حساب المعادلة الرياضية للدالة المثلثية sin(x) علي المحور الرأسي مع قيم عناصر المتجه x المناظرة لها علي المحور الأفقي بإستخدام الصورة الأولي من الدالة plot .

  • في السطر الخامس قمنا بإضافة عنوان أعلي منطقة الرسم بإستخدام الأمر title .

تشغيل الكود البرمجي :

  • قم بحذف الملف بإسم ‘sine_wave’ في الدليل الإفتراضي السابق تحديده لملفات برنامج MATLAB ثم أختر أمر run من قائمة Debug أو للتشغيل السريع أضغط علي مفتاح f5 من لوحة المفاتيح .

  • ليقوم برنامج MATLAB بفتح نافذة الرسم ( إلا إذا كانت مفتوحة بالأصل نتيجة لأوامر سابقة فيقوم البرنامج بإزالة محتوياتها ورسم الشكل الجديد ) وفيها يتم رسم دالة Sine Wave الشهيرة بحيث يتم أولا رسم قيم عناصر المتجه y علي المحور الرأسي الناتجة عن حساب الصيغة الرياضية sin(x) ثم يتم توصيل هذه النقاط بشكل متسلسل لقيم عناصر المتجه y علي المحور الرأسي مع قيم عناصر المتجه x المناظرة لها علي المحور الأفقي كما في الشكل التالي

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

وهذا ما سوف نتعلمه في الصور القادمة للدالة plot …

الصورة الثانية :

plot (x,y,x,w,x, ..)

تستخدم هذه الصورة لرسم أكثر من متغيرين في نفس نافذة الرسم وعلي نفس المحاور الإحداثية بحيث يتم رسم المتغير x علي المحور الأفقي مع المتغيرات الأخري y,z,w,… علي نفس المحور الرأسي حيث يتم رسم كل زوج من المتغيرات علي حدة ويقوم برنامج MATLAB بالتمييز بين هذه المنحنيات في نافذة الرسم من خلال إعطاء كل منحني لون مميز يختلف عن لون غيره من المنحنيات ولمزيد من الإيضاح تابع معي المثال التالي :

  • قم بفتح ملف جديد من نوع M-file وقم بتعريف المتجهات x,y,z وتطبيق الصورة الثانية للدالة plot علي هذه المتجهات كما بالشكل التالي .

    1 clc;clear;close all;

    2 x=0:0.1:10; %Independent Variable

    3 y=sin (x) ; %dependent Variable

    4 z=cos (x) ; %dependent Variable

    5 plot (x,y,x,z) ; %plot y & z vs. x

    6 title (‘plot of sine & cosine waves’) ;

- قم بحفظ الملف بإسم ‘sine_cosine_waves1′ في الدليل الإفتراضي السابق تحديده لملفات برنامج MATLAB .

- اضغط علي المفتاح f5 من لوحة المفاتيح ليقوم برنامج MATLAB بفتح نافذة رسم جديدة وفيها يتم رسم منحنيين أحدهما خاص بدالة sine والأخر خاص بدالة cosine ويقوم البرنامج إفتراضيا بإعطاء كل منحني لون ونمط مميز يختلف عن لون ونمط المنحني الأخر ( ما لم يقوم المستخدم بتحديد مواصفات خطوط المنحنيين كلون ونوع وعلامات خطوط الرسومات ) كما في الشكل التالي :

<img src="/uploads/default/original/2X/5/569dc3d276fb2de24507dc996af97945563353cd.png" width="513" height="418">

## الصورة الرابعة :

عند تعدد الرسومات داخل نفس نافذة الرسم يتجه المبرمج إلي تغيير ألوان وأشكال خطوط كل رسمة للتمييز بين الرسومات المرسومة داخل نفس نافذة الرسم ففي الأمثلة السابقة قام برنامج MATLAB افتراضيا بإختيار نمط خط الرسم ليكون متصلا كما اختار اللونين الأزرق والأحمر والأخضر علي الترتيب للرسومات التي تحتوي علي أكثر من منحني لذا فسنتناول في الصورة الرابعة لدالة plot كيفية تحديد ألوان وعلامات وأنماط خطوط الرسم .

    plot (x,y, ‘string’)

في هذه الصورة قمنا بتمرير ثلاث متغيرات إلي الدالة plot وفي هذه الحالة ستقوم الدالة plot برسم عناصر المتجه x علي المحور الأفقي معغ عناصر المتجه y علي المحور الرأسي .

أما عن المتغير (الحرفي ) الثالث ‘string’ فنستطيع إستبداله من عنصر من ثلاث عناصر تتحكم بلون خط الرسمة (أزرق أو أحمر أو أخضر الخ..) ونوع خط الرسمة (خط متصل solid او خط منقط Dotted أو شرط صغيرة Dashed الخ …) ونوع علامة الرسمة ( علامة نقاط أو علامة دوائر أو علامة مربعات الخ … ) فمثلا عند تنفيذ البرنامج السابق ماعدا أمر الرسم ليصبح كما بالشكل التالي :

    plot (x,y, ‘r-o’)

متجه أخر y يتضمن القيم الناتجة عن حساب دالة الجيب sine لقيم النقاط المخزنة في المتجه x .

* في السطر الرابع قمنا برسم قيم عناصر المتجه y الناتجة عن حساب المعادلة الرياضية للدالة المثلثية sin(x) علي المحور الرأسي مع قيم عناصر المتجه x المناظرة لها علي المحور الأفقي بإستخدام الصورة الأولي من الدالة plot .

* في السطر الخامس قمنا بإضافة عنوان أعلي منطقة الرسم بإستخدام الأمر title .

## تشغيل الكود البرمجي :

* قم بحذف الملف بإسم ‘sine_wave’ في الدليل الإفتراضي السابق تحديده لملفات برنامج MATLAB ثم أختر أمر run من قائمة Debug أو للتشغيل السريع أضغط علي مفتاح f5 من لوحة المفاتيح .

* ليقوم برنامج MATLAB بفتح نافذة الرسم ( إلا إذا كانت مفتوحة بالأصل نتيجة لأوامر سابقة فيقوم البرنامج بإزالة محتوياتها ورسم الشكل الجديد ) وفيها يتم رسم دالة Sine Wave الشهيرة بحيث يتم أولا رسم قيم عناصر المتجه y علي المحور الرأسي الناتجة عن حساب الصيغة الرياضية sin(x) ثم يتم توصيل هذه النقاط بشكل متسلسل لقيم عناصر المتجه y علي المحور الرأسي مع قيم عناصر المتجه x المناظرة لها علي المحور الأفقي كما في الشكل التالي :

<img src="/uploads/default/original/2X/a/a835e23cde973aae8cede87c20466e901b08528e.png" width="506" height="415">

##  الشهيرة :

وهي عبارة عن رسمة بلون أحمر وخط متصل وعلامات علي شكل دوائر كما يمكن أيضا أن تظهر العناصر الثلاثة بأي ترتيب كما يلي :

    plot (x,y, ‘or-‘)

ليقوم البرنامج برسم نفس الرسمة السابقة بغض النظر عن ترتيب عناصر المتغير الحرفي الثالث .

كما يمكننا تحديد ألوان وعلامات وأنماط خطوط عدة منحنيات معا في نفس الوقت كما يلي :

    plot (x,y, ‘r-o’ ,x,z, ‘b:*’)

ليقوم البرنامج برسم منحنيين أحدهما يمثل دالة sine wave وهي عبارة عن رسمة بلون أحمر وخط متصل وعلامات علي شكل دوائر والأخر يمثل دالة cosine wave وهي عبارة عن رسمة بلون أزرق وخط منقط وعلامات علي شكل نجوم .

## ملحوظات :

* يجب وضع المتغير الثالث (الذي يمثل مواصفات الرسم ) بين علامتي تنصيص Single Quotations Marks حيث أنه يمثل متغير حرفي .

* إذا قمنا بتحديد علامة معينة لرسمها ولم نحدد نوع خط الرسم سيقوم MATLAB برسم العلامات فقط حيث ان البرنامج لا يشترط دمج الثلاث خواص ( لون ونوع خط الرسومات وشكل علامات الرسومات ) معا في نفس نافذة الرسم .

* يمكنك الحصول علي العديد من القيم التي يمكن وضعها كعناصر تتحكم في لون وشكل الرسومات من خلال كتابة الأمر help polt داخل نافذة محرر الأوامر command window .


<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="261">
<p>الرمز&nbsp;</p>
</td>
<td width="261">
<p>Color</p>
</td>
<td width="261">
<p>اللون (باللغة العربية)</p>
</td>
</tr>
<tr>
<td width="261">
<p>b</p>
</td>
<td width="261">
<p>blue</p>
</td>
<td width="261">
<p>أزرق</p>
</td>
</tr>
<tr>
<td width="261">
<p>g</p>
</td>
<td width="261">
<p>Green</p>
</td>
<td width="261">
<p>أخضر</p>
</td>
</tr>
<tr>
<td width="261">
<p>r</p>
</td>
<td width="261">
<p>red</p>
</td>
<td width="261">
<p>أحمر</p>
</td>
</tr>
<tr>
<td width="261">
<p>c</p>
</td>
<td width="261">
<p>Cyan</p>
</td>
<td width="261">
<p>سماوي</p>
</td>
</tr>
<tr>
<td width="261">
<p>m</p>
</td>
<td width="261">
<p>Magenta</p>
</td>
<td width="261">
<p>بنفسجي</p>
</td>
</tr>
<tr>
<td width="261">
<p>y</p>
</td>
<td width="261">
<p>Yellow</p>
</td>
<td width="261">
<p>أصفر</p>
</td>
</tr>
<tr>
<td width="261">
<p>k</p>
</td>
<td width="261">
<p>Black</p>
</td>
<td width="261">
<p>أسود</p>
</td>
</tr>
<tr>
<td width="261">
<p>w</p>
</td>
<td width="261">
<p>White</p>
</td>
<td width="261">
<p>أبيض</p>
</td>
</tr>
</tbody>
</table>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="261">
<p>الرمز</p>
</td>
<td width="261">
<p>Line style</p>
</td>
<td width="261">
<p>نوع الخط (باللغة العربية)</p>
</td>
</tr>
<tr>
<td width="261">
<p>-</p>
</td>
<td width="261">
<p>solid</p>
</td>
<td width="261">
<p>خط متصل</p>
</td>
</tr>
<tr>
<td width="261">
<p>&ndash;</p>
</td>
<td width="261">
<p>dashed</p>
</td>
<td width="261">
<p>خط متقطع</p>
</td>
</tr>
<tr>
<td width="261">
<p>:</p>
</td>
<td width="261">
<p>dotted</p>
</td>
<td width="261">
<p>خط منقط</p>
</td>
</tr>
<tr>
<td width="261">
<p>.-</p>
</td>
<td width="261">
<p>Dash-dot</p>
</td>
<td width="261">
<p>خط &ndash; نقطة</p>
</td>
</tr>
</tbody>
</table>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="261">
<p>الرمز</p>
</td>
<td width="261">
<p>Marker</p>
</td>
<td width="261">
<p>العلامة (باللغة العربية)</p>
</td>
</tr>
<tr>
<td width="261">
<p>o</p>
</td>
<td width="261">
<p>circle</p>
</td>
<td width="261">
<p>دائرة</p>
</td>
</tr>
<tr>
<td width="261">
<p>*</p>
</td>
<td width="261">
<p>star</p>
</td>
<td width="261">
<p>علامة *</p>
</td>
</tr>
<tr>
<td width="261">
<p>.</p>
</td>
<td width="261">
<p>Point</p>
</td>
<td width="261">
<p>نقطة</p>
</td>
</tr>
<tr>
<td width="261">
<p>+</p>
</td>
<td width="261">
<p>Plus</p>
</td>
<td width="261">
<p>علامة +</p>
</td>
</tr>
<tr>
<td width="261">
<p>X</p>
</td>
<td width="261">
<p>x-mark</p>
</td>
<td width="261">
<p>علامة x</p>
</td>
</tr>
<tr>
<td width="261">
<p>S</p>
</td>
<td width="261">
<p>square</p>
</td>
<td width="261">
<p>مربع</p>
</td>
</tr>
<tr>
<td width="261">
<p>D</p>
</td>
<td width="261">
<p>Diamond</p>
</td>
<td width="261">
<p>معين</p>
</td>
</tr>
<tr>
<td width="261">
<p>^</p>
</td>
<td width="261">
<p>Triangle (up)</p>
</td>
<td width="261">
<p>مثلث رأسه لأعلي</p>
</td>
</tr>
<tr>
<td width="261">
<p>V</p>
</td>
<td width="261">
<p>Triangle (down)</p>
</td>
<td width="261">
<p>مثلث رأسه لأسفل</p>
</td>
</tr>
<tr>
<td width="261">
<p>&gt;&nbsp;</p>
</td>
<td width="261">
<p>Triangle (right)</p>
</td>
<td width="261">
<p>مثلث رأسه لليمين</p>
</td>
</tr>
<tr>
<td width="261">
<p>&lt;&nbsp;</p>
</td>
<td width="261">
<p>Triangle (left)</p>
</td>
<td width="261">
<p>مثلث رأسه لليسار</p>
</td>
</tr>
<tr>
<td width="261">
<p>P</p>
</td>
<td width="261">
<p>Pentagram</p>
</td>
<td width="261">
<p>نجمة خماسية</p>
</td>
</tr>
<tr>
<td width="261">
<p>H</p>
</td>
<td width="261">
<p>hexagram</p>
</td>
<td width="261">
<p>نجمة سداسية</p>
</td>
</tr>
</tbody>
</table>





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

## الصورة الخامسة :

    plot (…,’propertyName’,propertyValue,…)

تستخدم هذه الصورة للتحكم في بعض خصائص خط وعلامات الشكل المرسوم مثل سمك خط الرسم Line Width بإستخدام الخاصية MarkSize ولون إطار هذه العلامات Marker Edge color بإستخدام الخاصية MarkerEdge color واللون الذي يملأ علامات Marker Face Color خط الرسم باستخدام الخاصية MarkerFace Color .

ولتوضيح كيفية استخدام الصورة الخامسة للدالة plot قم بتحرير الأوامر التالية في نافذة محرر الأوامر Command Window كما يلي :

    >> x = -pi : pi/10:pi;

    >> y = tan (sin (x) ) – sin (tan (tan (x) ;

    >> plot (x,y,’—rs’,’linewidth’,2, …

    ‘ MarkerEdgeColor’,’k’, …

    ‘ MarkerFaceColor’,’g’, …

    ‘ Markersize’,10)

ليقوم البرنامج برسم الشكل الناتج كما في الشكل التالي 

<img src="/uploads/default/original/2X/1/152ef98b3ba601ae2131058b7aad28040c351185.png" width="507" height="410">

## حفظ الشكل المرسوم :

عند الرغبة في حفظ الشكل المرسوم قم باختيار الامر save من قائمة file الموجود في شريط الأدوات menu bar الموجود في نافذة الشكل المراد حفظه كما يمكنك حفظ الشكل من خلال الضغط علي مفتاحي ctrl+s من لوحة المفاتيح ليفتح البرنامج مربع حواري لاختيار اسم الشكل المراد حفظه مع ملاحظة ان البرنامج يقوم بإضافة الإمتداد (.fig) الي الاسم الذي ستحدده لملف الشكل المحفوظ .

والأن سنستعرض بعض الأوامر والدوال المبنية Built in functions داخل البرنامج والتي ستساعدنا كثيرا في تنظيم نافذة الرسم .

دورة متكاملة لتعلم أساسيات برنامج الماتلاب من البداية
(system) #2

شبكات الرسم وتسميات المحاور وإضافة مفتاح الرسم البياني :

عملية وضع شبكة علي الرسم :

يقوم برنامج MATLAB بوضع شبكة من الخطوط الأفقية والرأسية المتقاطعة علي الرسم باستخدام الأمر grid on ( أو grid فقط ) بعد أمر الرسم plot بحيث يكون من السهل تحديد القيم علي الرسم لأن الوضع الإفتراضي لبرنامج MATLAB عند فتح نوافذ الرسومات ثنائية الأبعاد 2-D هو عدم إظهار هذه الشبكة لذا فيمكنك إظهار الشبكة علي الرسم من خلال تحرير الأمر grid on ( أو grid فقط ) بعد أمر الرسم plot كما يمكنك إلغاء تفعيل إظهارها بإستخدام الأمر grid off .

إضافة عنوان في أعلي منطقة الرسم :

يمكننا برنامج MATLAB من إضافة عنوان (تسمية) أعلي منطقة الرسم بإستخدام الأمر title بحيث يعبر هذا العنوان عن محتويات الشكل المرسوم حيث يكون هذا الأمر علي الصورة التالية : title (‘text’)

وتستخدم هذه الصورة لوضع المتغير الحرفي text أعلي منطقة الرسم وفي منتصف محاور الرسم الحالية .

title(‘text,’property1′,property1value,’property2′, property2value,..)

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

فعلي سبيل المثال لإضافة العنوان Figure أعلي منطقة الرسم مع كتابة هذا العنوان بخط حجمه 14 ولونه أحمر وخلفيتة لونية صفراء قم بتحرير الأمر التالي :

>> title (‘Figure’,’fontsize’,14, …

‘color’,’r’, …

‘BackgroundColor’,’y’)

مع ملاحظة أن الثلاثة نقاط المتتالية …)) تمكننا من متابعة تنفيذ هذه الأمر المحرر علي أكثر من سطر .

تسمية المحاور :

يمكننا برنامج MATLAB من تسمية المحاور الثلاثة x,y,z من خلال الأوامر xlabel , ylabel ,zlabel والتي تمكننا من وضع تعليق علي كل محور من المحاور الثلاثة x,y,z فمثلا إذا أردنا أن نقوم بتسمية محور السينات X-Axis نقوم بإستخدام الأمر xlabel وإذا أردنا أن نقوم بتسمية محور الصادات Y-Axis نقوم بإستخدام الأمر ylabel وإذا أردنا تسمية المحور الثالث Z-Axis ( في حالة الرسم ثلاثي الأبعاد ) نقوم بإستخدام الأمر zlabel حيث يأخذ الثلاث صورة واحدة وهي كالتالي :

axislabel (‘string’)

حيث أننا نضع مكان كلمة axis اسم المحور ( x او y أو z ) ونضع مكان المتغير الحرفي string التعليق أو عنوان المحور الذي نريده .

إضافة مفتاح الرسم البياني legend

يستخدم الأمر legend في وضع أدلة في صندوق مفتاح الرسم البياني legend لتبين اسم كل منحني علي الرسم واللون المخصص له مما يساعد علي التميز بين المنحنيات المختلفة في نافذة الرسم مع مراعاة استخدام الأمر legend بعد كل امر رسم plot وليس العكس ويأخذ هذه الأمر الصور التالية في كتابته :

legend (‘color_ref1′)

legend (‘color_ref1′,’color_ref2′)

وكما تلاحظ أن الأمر legend علي عدد العلاقات المرسومة داخل الرسم هذا ويمكنك البرنامج من تحريك مفتاح الرسم البياني بالضغط المستمر بزر الماوس الأيسر علي مفتاح الرسم البياني مع السحب إلي المكان الذي تريده في نافذه الرسم .

عملية وضع الرسوم البيانية في نوافذ منفصلة :

يمكننا برنامج MATLAB من وضع عدد من الرسومات في عدة نوافذ رسم منفصلة بدلا من وضع الرسومات في نفس النافذة فلإنشاء نوافذ رسم figures جديدة يمكنك استخدام إحدي الطرق التالية :

الطريقة الأولي :- قم بتحرير الأمر figure في نافذة محرر الأوامر Command window قبل كل امر رسم plot كما يلي :

 >> figure

الطريقة الثانية :- اختر New figure من قائمة file في نافذة محرر الأوامر command window او في نافذة الرسم figure .

لتلاحظ انه بإستخدام أي من الطرق السابقة ان البرنامج يقوم بفتح نافذة رسم جديدة رمادية اللون كما في الشكل التالي :

علما أنه بعد كل امر figure يمكننا وضع الخصائص التي تختص بهذه الرسمة مثل أمر title , ylabel , xlabel , grid وغيرها من الأوامر التي سبق شرحها .

ويمكننا توضيح مجموعة الخصائص السابقة من خلال تحرير الكود التالي في ملف جديد من نوع M_File :

1- clc;clear;close all;

2- x=0:0.1:10; %Independent Variable

3- y=sin (x) ; %dependent Variable

4- z=cos (x) ; %dependent Variable

5- plot (x,y,x,z, ‘r’, …

6 ‘Linewidth’,3) ; %plot y,z vs.

7- xlabel (‘X-axis’);%X-axis label

8- ylabel (‘Y-axis’);%Y-axis label

9- legend (‘sin(x) ‘,’cos(x) ‘ );

10 % titling the resultant plot

11- title (sine and cosine curves’, …

12 ‘fontsize ‘,12,…

13 ‘color’,’b’, …

14 ‘fontweight’,’bold’, …

15 ‘Backgroundcolor’,’y’);

شرح الكود البرمجي :

لا جديد في الكود البرمجي السابق بإستثناء استخدام بعض الخصائص التي تخص الرسم ثنائي الأبعاد مثل امر title , legend , ylabel , xlabel كما يلي :

  • في السطر السابع قمنا بتسمية محور السينات x-axis بإستخدام الأمر xlabel بالإسم x-Axis .

  • في السطر الثامن قمنا بتسمية محور الصادات Y-Axis بإستخدام الأمر ylabel بالإسم Y-axis .

  • في السطر التاسع قمنا بوضع أدلة في صندوق مفتاح الرسم البياني legend لتبين اسم كل منحني علي الرسم واللون المخصص له بإستخدام الأمر legend .

  • في السطر الحادي عشر نقوم بإضافة عنوان أعلي منطقة الرسم بإستخدام الأمر titke حيث يتم كتابته بخط سميك Bold وبحجم points12 وبلون أحمر ولون خلفية صفراء .

تشغيل الكود البرمجي :

احفظ البرنامج باسم ‘sine_cosine_waves2′ ثم اختر امر run من قائمة Debug أو للتشغيل السريع اضغط علي مفتاح f5 من لوحة المفاتيح .

ليقوم برنامج MATLAB بفتح نافذة رسم جديدة وفيها يتم رسم منحنين أحدهما خاص بدالة Sine ويتم رسمه باللون الأزرق والأخر خاص بدالة Cosine ويتم رسمه باللون الأحمر كما يتم إضافة كافة الخصائص التي شرحناها في الكود البرمجي السابق كما يلي :

عملية رسم رسوم بيانية متعددة في نافذة رسم واحدة :

يستخدم الأمر hold on قبل كل امر رسم plot لرسم عدة منحنيات في نافذة رسم واحدة كما يمكننا الأمر hold off من إيقاف تفعيل الأمر hold on ولنقوم الأن بإعادة تحرير الكود السابق بإستخدام الأمر hold on كما يلي :

1- clc;clear;close all;

2- x=0:0.1:10; %Independent Variable

3- y=sin (x) ; %dependent Variable

4- z=cos (x) ; %dependent Variable

5- plot (x,y,’b’,’linewidth’,2); %plot y vs. x

6 hold on;

7- plot (x,y,’r’,’linewidth’,2); %plot z vs. x

8- hold off;

9- grid on;

10 xlabel (‘X-axis’),ylabel (‘Y-axis;);

11- legend ( ‘sin (x) ‘,’cos(x) ‘)

12 title ( ‘plot of sine&cosine waves,no box’, …

13 ‘fontzize ‘,12, …

14 ‘Color’ , ‘b’, …

15 ‘fontweight’,’bold’);

لنلاحظ أن البرنامج قام في البداية برسم المنحني الناتج عن معادلة sin(x) عند قيمة كل عنصر من عناصر المتجه x باللون الأزرق ثم احتفظ بنفس محاور الرسم ولم يقوم بإزالتها ثم قام بإضافة رسم المنحني الناتج عن معاة دالة cos(x) (في نفس نافذة الرسم ) باللون الأحمر بإستخدام الأمر hold on .

إنشاء رسومات جزئية منفصلة في نافذة رسم واحدة :

عرفنا أننا يمكننا أن نقوم برسم أكثر من رسمة في نفس نافذة الرسم أو في نوافذ رسم منفصلة ولكن هل تتخيل أن تقوم بوضع عدة رسومات منفصلة في نافذة واحدة في الحقيقية يمكننا عمل ذلك بإستخدام الأمر subplot(m,n,p) قبل كل امر plot .

حيث يعمل الأمر subplot(m,n,p)علي تقسيم نافذة الرسم figure الحالية إلي عدة نوافذ فرعية Sub figures ( وتكون كل نافذة فرعية عبارة عن منطقة مستطيلة الشكل لها نظام محاور خاص بها ) مرتبة في مصفوفة أبعادها (m x n) ويختار المستخدم المنطقة p لتفعيلها ويجب عند استخدام الأمر subplot معرفة عدد الرسومات التي ستظهرها وكيفية وضعها ويستخدم الأمر subplot علي الصورة التالية :

subplot (m,n,p)

حيث ان :

m : يمثل عدد نوافذ الرسم الفرعية الموجودة في كل عمود .

n : يمثل عدد نوافذ الرسم الفرعية الموجودة في كل صف .

p: يمثل الدليل الذي يستخدم في تنشيط النافذة التي نريد رسم شكل معين بها , مع ضرورة ملاحظة أنه يتم ترقيم كلأ منطقة رسم فرعية من أقصي يسار نافذة الرسم figure إلي أدني اليمين .

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

وبالتالي سيتم تقسيم نافذة الرسم Figure الحالية إلي نافذتين فرعيتين subfigures لتبدو وكأنها متجه صفي عدد صفوفه 1 وعدد أعمدته 2 بحيث يتم رسم المعادلة الأولي في النافذة الفرعية الأولي ورسم المعادلة الثانية في النافذة الفرعية الثانية, وهذا ما يجب تحديده بالتفصيل عند إستخدام الأمر subplot.

حيث نستخدم الصورة العامة لأمر subplot علي الشكل التالي :

ولتحديد نافذة الرسم الفرعية الأولي (الموجودة في الصف الأول والعمود الأول) إستعدادا لرسم المعادلة الأولي , نقوم بتحرير الأمر التالي :

subplot (1,2,1)

ولتحديد نافذة الرسم الفرعية الثانية (الموجودة في الصف الأول والعمود الثاني ) إستعدادا لرسم المعادلة الثانية , نقوم بتحرير الأمر التالي :

 subplot(1,2,2)

وبالمثل إذا كان لدينا ثلاث معادلات نريد رسمها في ثلاث رسومات جزئية منفصلة في نافذة رسم واحدة, فيمكننا تقسيم نافذة الرسم figure الحالية إلي ثلاث نوافذ فرعية subfigure بحيث يتم تقسيم نافذة الرسم الحالية إلي متجه صفي ذي ثلاثة أعمدة لتصبح كما في الشكل التالي :

MATLAB47_03

ولتحديد نافذة الرسم الفرعية الأولي (الموجودة في الصف الأول والعمود الأول ) إستعدادا لرسم المعادلة الأولي , نقوم بتحرير الأمر التالي :

 subplot(1,3,1)

ولتحديد نافذة الرسم الفرعية الثانية (الموجودة في الصف الأول والعمود الثاني ) إستعدادا لرسم المعادلة الثانية , نقوم بتحرير الأمر التالي :

subplot (1,3,2)

ولتحديد نافذة الرسم الفرعية الثالثة (الموجودة في الصف الأول والعمود الثالث ) إستعدادا لرسم المعادلة الثالثة , نقوم بتحرير الأمر التالي :

  subplot(1,3,3)

وبالمثل يمكننا تقسيم نافذة الرسم figure الحالية إلي ثلاث نوافذ فرعية subfigure بحيث يتم تقسيم نافذة الرسم الحالية إلي متجه عمودي ذي ثلاثة صفوف لتصبح كما في الشكل التالي :

الآن تستطيع أن تقسم أي نافذة رسم إلي أي عدد من النوافذ الفرعية المنفصلة وبأي شكل ممكن ولمزيد من الإيضاح , تابع المثال التالي :

مثال :

نريد تصميم برنامج لرسم أربع معادلات في أربع نوافذ فرعية subfigures منفصلة بحيث يتم تقسيم نافذة الرسم figure الحالية وكأنها مصفوفة تتكون من صفين وعمودين.

خطوات تصميم البرنامج :

  • قم بفتح ملف M-file جديد من خلال فتح قائمة file ثم اختيار m-file من قائمة new , ثم قم بتحرير الكود , كما في الشكل التالي :

    1- clc;clear;close all;

    2- x=linspace (0,2*pi,100); %Indep variable

    3- a=sin (X) ; % dep variable

    4- b=2*sin (X) . *cos (X) ; % dep variable

    5- c=sin (X) .exp (-0.5x); % dep variable

    6- d=sin (X) . (cos (X)+eps); % dep variable

    7- subplot (2,2,1) ;

    8- plot (x,a, b);grid; % plot a vs. x

    9- title (plot of sin (X));

    10- hold on ;plot (x,b,k) ;

    11- subplot (2,2,2);

    12- plot (x,b,k) ;zoom on ; %plot b vs. x

    13- title (plot of 2sin (x) cos (x));

    14- subplot (2,2,3);

    15- plot (x,c,k);box off % plot c vs .x

    16- title (plot of sin (x)e {-0.5x });

    17- subplot (2,2,4);

    18- plot (x,d,k) ;grid %plot d vs. x

    19- title (plot of sin (x) cos (x) +epsilon);

شرح الكود البرمجي :

لا جديد في الكود البرمجي السابق بإستثناء استخدام أمر subplot قبل كل أمر رسم plot لتحديد نافذة الرسم الفرعية المراد رسم المعادلة المطلوبة بها.

تشغيل البرنامج :

  • احفظ البرنامج باسم sub-figures ثم اختر أمر run من قائمة debug أو للتشغيل السريع اضغط علي مفتاح f5 من لوحة المفاتيح.

ليقوم برنامج MATLAB بفتح نافذة رسم جديدة مقسمة إلي أربعة نوافذ فرعية subfigures بحيث يتم رسم كل معادلة من الأربع معادلات السابقة في نافذة فرعية منفصلة عن باقي النوافذ الفرعية الأخري مع ملاحظة أنه يتم ترقيم كل منطقة رسم فرعية من أقصي يسار نافذة الرسم figure إلي أدني اليمين , كما في الشكل التالي :

ملحوظة : لا حظ أنه عند تفعيل منطقة رسم جزئية معينة من نافذة الرسم figure فإنها وحدها هي التي تستجيب للأوامر ylabel,xlabel,axis,box,grid,hold on, title دون أن تتأثر الرسومات الجزئية الأخري إلي أن يتم استخدام أحد الأمرين figure أو subplot.

وفي النهاية نكون قد عرضنا وقدمنا عرضا للبرامج التطبيقية الأكثر إستخداما ومبيعا حول العالم فكما رأينا أن البرنامج يقدم حلولا رياضية متكاملة في كافة التطبيقات الهندسية , فقد سيطر في الأونة الأخيرة علي ساحة البرامج التطبيقية علي مستوي العالم كله, نظرا لما يتمتع به من سهولة وقدرة عالية علي إجراء العمليات الرياضية البسيطة والمعقدة علي حد سواء بسرعة فائقة بالإضافة إلي الإمكانيات الهائلة التي يقدمها هذا البرنامج والتي تدخل في العديد من الفروع العلمية في مختلف التطبيقات وبخاصة التطبيقات الهندسية كمعالجة الإشارة الرقمية digital signal processing (dsp) (المتعلقة بمجالا الإتصالات) ومعالجة الصور image processing ونمذجة البيانلت data acquisition modeling ومحاكاتها simulation وتحليلها وعرضها data analysis and visualization وبرمجة التطبيقات (كأي لغة برمجة أخري) والتمثيل البياني للأشكال ثنائية وثلاثية الأبعاد وإنشاء بيئة تفاعلية بين البرنامج والمستخدم من خلال بناء واجهة المستخدم الرسومية graphical user interface (GUI) لعرض وإظهار النتائج بشكل شيق وجذاب وغيرها من التطبيقات الأخري التي يتضمنها برنامج MATLAB والتي جعلته يحتل قمة برامج التطبيقات الهندسية , لذا فتستخدمه العديد من الشركات في الأغراض الصناعية (كشركات الطيران المدني والعسكري وشركات صناعة السيارات حيث تستخدم الشركات المصنعة نظامي المحاكاة simulation والنمذجة modeling لبرنامج MATLAB لخلق أو تطوير النماذج الهندسية قبل تطبيقها علي أرض الواقع وبعد إختبارهذه النماذج بواسطة MATLAB يتم إنتاجها صناعيا مما يساهم في رفع جودة المنتجات الصناعية)كما يستخدم برنامج MATLAB في الغالبية العظمي من جامعات العالم في الأغراض الأكاديمية وخصوصا أغراض البحث العلمي).


(ppsspp) #3

شكراااااااااااااااااااااااااااااااااااااااااااااااااااااااااا


#4

تم تحديث الموضوع