background image

 

 البرمجة بلغة

MATLAB 

 

    

 

 

 

 

 

البرمجة بلغة

 

 

 

 

 

 

 

 

 

 

   

إع

ـ

داد

 

 

 

 
 

 

 

 

Dr. Hammed

 

Computer Science

 

 مجموعة من التدريسيين

لمادة علوم الحاسب

ات

 

وزارة التعليم العالي والبحث العلمي

 

قسم علوم الحاسبات

 

نيسان

  

8002

 


background image

 

 البرمجة بلغة

MATLAB 

 

    

 

 

 

ةـــــــــــجمربلا ةغل

 

: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

-

  

www.mathworks.com

    

 

 

 


background image

 

 البرمجة بلغة

MATLAB 

 

    

 

 

 

 

 لغة البرمجة

MATLAB 

 

 :

The MATLAB Programming Language

 

مقدمة

 

   

 يعتبر برنامج

MATLAB 

 

  إذ يستخدم هذا البرناامج فاي مع ام،ةيملعلا طاسولأا يف رهشلأا جمانربلا

  وبعد،ةيسدنهلاو ةيملعلا لئاسملا

ن

مذج

ة

 

 أي مسألة أو  اهرة يأتي بعدها دور هذا البرنامج ليتعامل مع تلك

الب

  ومن الجدير ذكره بان هذا البرنامج،ةجمرب اهرسيأو اهثدحأو قرطلا طسبأب اهللحيو جمار

مــّـــلعي

 

 أكثر

 من

211

 

  ويكفي،ملاعلا ةيقبو ابروأ يف دهاعملا كلت ادع ،طقف ةيكيرملأا ةدحتملا تايلاولا يف ةيلكو دهعم

 أن تدخل إلى أحد محركات البحث على شبكة االنترنت وتكتب فقط

MATLAB

 ذهل من عددــُــتـــــسف ،

.المواقع التي تتحدث عن هذا البرنامج

 

    

 وتعتبر لغة

MATLAB

 

 لغة برمجية عالية

األداء

 

 تستخدم

إلجاراء

 

الحساابات التقنياة

,

 

 وتقاوم بعملياات

 الحساب

واإل هار

 

 ضمن بيئة سهلة البرمجة كما

أنها

 

ال تحتاج

 

إلاى احتاراك كبيار

 . تمكناك هاذه اللغاة مان

حل العدي

  خاصاة التاي يعبار عنهاا بمصافوفات والتاي تحتااج إلاى جهاد كبيار،ايبااسح ةاينقتلا لئاسملا نم د

 لبرمجتها بلغات البرمجة األخرى مثل لغة

 

 و

FORTAN

.

 

   

 أتت تسمية هذه اللغة من اختصار التعبير

MATrix LABoratory 

 

  حياث إن،)ةفوفصملا ربتخم(

البرنامج مصمم أساسا للتعامل مع العملي

.ات على المصفوفات بشكل بسايط

 

 كماا أرفقات بهاذه اللغاة أدوات

 لمعالجااة وحاال تطبيقااات علميااة خاصااة سااميت

toolboxes

 

  وتعتباار هااذه،)ةادأ نيرااشع ناام رااثكأ يااهو(

  حيث تسام  لهام باتعلم وتطبياق تقنياات حال متخصصاة لمعالجاة،ةغللا هذه يمدختسمل ًادج ةماه تاودلأا

 مثاال معالجاا،ةااصاخ لئاااسمو تلاكااشم

ة اإلشااارة

,

 

 ون اام الااتحكم والمحاكاااة والشاابكات العصاابية والتحلياال

.الكمي والمالي واإلحصاء ومسائل الجبر الخطي واالمثلية ... الخ

 

   

 ياانمن برنااامج

MATLAB

 

 أدوات واجهااة التخاطااب الرسااومية

Graphical  User  Interface 

(GUI)

 

التي تجعلك تتعامل مع البرنامج على انه أداة تطبيقية متط

.ورة

 

 

 

 

 


background image

 

 البرمجة بلغة

MATLAB 

 

    

 

 

 

 تشغيل برنامج

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

 


background image

 

 البرمجة بلغة

MATLAB 

 

    

 

 

 سطح مكتب برنامج

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

 

:ولكل نافذة منها عملها الخاص وكما يلي

-

 


background image

 

 البرمجة بلغة

MATLAB 

 

    

 

 

 

 

 

 

 

 

 

أ-

 

نافااذة

 

 األماار

:Command  Window

 

 وهااي نافااذة ال يمكاان االسااتغناء عنهااا ألن بواسااطتها يااتم تنفيااذ

األوامر وعر  النتائج التي نحصل عليها من تنفيذ تلك األوامر

 

( وتكتب بعد عالمة الحث

>>

)

.

 

ب

-

 

 نافذة ساحة العمل

Workspace

:

 

 وهاي عان واجهاة

تخاطبيا

ة

 

  تسام  لاك باساتعرا  وتحميال وحفا

متغيارات لغاة

 

MATLAB

 

 حياث ت هار قائمااة تضام أسام المتغيار وحجمااه وعادد بياناتاه وصانفه (جميااع

 متغيرات لغة

MATLAB

 

)هي من صنك مصفوفة

(  كما في الشكل,

4

)

.

 

 

 

 

 

 

 

 

 

 

 

 

 

ج

-

 

 نافذة الدليل الحالي

:Current  Directory

 

 وهاي أيضاا واجهاة رساومية تحادد الادليل الحااوي للملاك

 الذي يتعامل معه برنامج

MATLAB

.

 

( شكل

3

  النوافذ الداخلية في قائمة:)

View

 

( شكل

4

  نافذة األمر:)

Command Window

 

 ونافذة ساحة العمل

.Workspace 

 

 


background image

 

 البرمجة بلغة

MATLAB 

 

    

 

 

د

-

 

 نافذة المساعدة

:Help

 

 وهاي نافاذة تخاطبياة (رساومية) تسام  لاك بالبحاث واساتعرا  الوثاائق بشاكل

.مباشر

 

و

-

 

لوحاا

ة

 

 الباارامج التنفيذيااة

:Launch  Pad

 

 وهااي عبااارة عاان نافااذة تسااتعر  بنيااة شااجرية لاا دوات

والبرامج

 

التنفيذية

 .

 

ـها

-

 

 نافاذة األواماار الساابقة

:Command  History

 

تمكناك هااذه ا

 لنافاذة ماان إعاادة تنفيااذ األوامار السااابقة

. من كتابتها مرة أخرىًلادب رملأا ةذفان يف ةذفنملا

 

( والشكل

5

 ) يبين النوافذ الداخلية لنافذة البرنامج

MATLAB

 

.... بعد تفعيلها

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

مالحظات

:

 

1

-

 

 كال متغياار فااي

MATLAB

 

  لغااة،ةفوفااصم ناع ةرااابع

MATLAB

 

 موجهااة بالمصاافوفات

 حتى

(  مفردةًادادعأ تاريغتملا تناك ناو

scalar

.)

 

 

( شكل

5

 :)

 النوافذ الداخلية لنافذة البرنامج

MATLAB

 

بعد تفعيلها

 

 شريط القوائم

(lists bar)

 

 شريط األدوات

(tools bar)

 


background image

 

 البرمجة بلغة

MATLAB 

 

    

 

 

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 

 

للجزء المنشر

 

قص

 

نسخ

 

لصق

 

 


background image

 

 البرمجة بلغة

MATLAB 

 

    

 

 

 

 

 

 

 

 

 

             

 وبعد ذلك نختار

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)

 

 فباإلمكان إعطااء االسام الاذي يرغاب فياه

.المبرمج أو البقاء عليه

 

 

 

 

 

 

تنفيذ البرنامج

 

خزن  البرنامج

 


background image

 

 البرمجة بلغة

MATLAB 

 

    

 

 

10 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

16

-

 

 عندما نريد إغالق برناامج

MATLAB

 

 عبار

االختياار

 

Exit  MATLAB

 

 مان القائماة

File

 

  الموجااودة فااي نافااذة سااط  مكتااب

MATLAB

 

 أو عباار كتابااة األماار

Exit

 

 فااي

نافااذة

 

Command 

  أو عالمة،

 )×(

 في زاوية سط  مكتب

MATLAB

 

.العليا اليمنى

 

17

-

 

 اإليعاز

global

 

.لإلعالن عن متغير عالمي بين الدوال والبرنامج الرئيسي

 

18

-

 

( لحساب زمن تنفيذ البرنامج نضع تعليمتي

tic

( ) و

toc

.) بين االيعازات

 

:مثال

 

clc; 

clear; 

tic; 

(commands) 

t = toc; 

19

-

 

 

للبحث عن إيعاز في ا

لـ

 

Help

 

 

:من خالل

 

يفضل كتابتها في بداية

 

 

 

أي بر

نامج رئيسي

 


background image

 

 البرمجة بلغة

MATLAB 

 

    

 

 

11 

      Help                   MATLAB Help 

        

: منها،زاعيلإا نع ثحبلل قرط ةدع كانه

-

 

1-  Contents. 

2-  Index. 

3-  Search. 

4-  Demos. 

 

 

 

 

 

 

 

21

-

  

 اإليعاز

break

 

 يقوم بايقاك تنفيذ البرناامج أو جازء مان البرناامج أو الدالاة (التعليماات

 التي بعد

break

 

ــُــال ت

.)نفذ

 

 

 

 

 

 

ةــلـــــثمأ

:

 

 

function …….               if  …….                          ……. 

   …….                              …….                          …….  

             …….                          else                                ……. 

             …….                               break;                        break; 

             break;                                                                .……. 

                                                                                      ….…. 

}

توقك تنفيذ الدالة فقط

{

 

 
}

 توقك في حالة

{else 

 

ال

 

تنفذ

 


background image

 

 البرمجة بلغة

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

 

:أنواع متعددة من الثوابت أهمها

-

 

     

 

               

خروج من الدالة

 

 

                       

ال

 

تنفذ

 


background image

 

 البرمجة بلغة

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)

 


background image

 

 البرمجة بلغة

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) 

 

ال تدخل في العمليات الحساب

 ية

(

تستخدم لتقليل حجم الخزن

)

 

 

ال تدخل في العمليات الحسا

 بية

 

  تدخل في العمليات الحسابية


background image

 

 البرمجة بلغة

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 

و

.)

 

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

 

 . وتكاونًازامر

 عقدي،يقيقح ، يحص ( ةيددع ريغتملا ةميق

 

 أو

أسي

.)

 

  

مثال

:

 


background image

 

 البرمجة بلغة

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

 

.على نتيجة القوس

 


background image

 

 البرمجة بلغة

MATLAB 

 

    

 

 

17 

مثال

:

 

التعبير

 

 

                     

M)

   

^

 

A  -  B  /  (K  *  F  -  X

 

                 

 

 

 

 

 

:تنفيذ العمليات حسب الخطوات التالية

 

  وتنفذ العمليات داخلها،ىلولأا ةيولولأا ساوقلأا ذخأت

.حسب األولوية أيضا

 

العملية األولى

   رفع:

X

 

 إلى األس

M

 

.لتصب  كمية واحدة

 

العم

:لية الثانية

 

 ضرب

K  

 

في

 

.لتصب  كمية واحدة

 

العملية الثالثة

. طر  نتيجة العملية األولى من نتيجة العملية الثانية وتصب  النتيجة كمية واحدة:

 

العملية الرابعة

  تقسم:

B

 

.على نتيجة العملية الثالثة وتصب  النتيجة كمية واحدة

 

العملية الخامسة

 تطر  نتيجة العملية الرابعة:

 

 من

A

 

.وتصب  النتيجة كمية واحدة

 

 

  الجملة الحسابية

Arithmetic Statement

 

   

 الجملة الحسابية في

MATLAB

 

 تكافئ المعادلاة الحساابية فاي الجبار إال أن

MATLAB

 

 تشاترط أن

يكون اسم المتغير المراد حساب قيمته في الطرك األيسر وحد

ه

 

 بدون أشارة بينما يكاون التعبيار الحساابي

(بقي

 ة

 : كما في األمثلة التالية،نميلأا كرطلا يف )ةلداعملا

 

1(  y = A * X + B 

2)  A = 3.14 * R ^ 2 

مثال

:

 

:أولوية العمليات الحسابية في الجمل الحسابية

 

Z = A – B / C 

 

 

 


background image

 

 البرمجة بلغة

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

 

جيب تمام الزاوية

 


background image

 

 البرمجة بلغة

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                                                        ؟    س/ مالفرق بين الدوال األربعة أعاله

:مالح ة

 

 

.تأخذ االقترانات المكتبية أولوية بعد األقواس عند تنفيذ العمليات الحسابية

 


background image

 

 البرمجة بلغة

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

 

 

5

2

x

e

r

            

                    

 

  

 

 

)

)

 

(

 

sqrt (exp

 

*

 

r = 2

 

                              

                        

 

                                             

t = abs (x – sqrt (y)) / (a + m)

  

 

 

           

              

         

        

g = p ^ (3 / 2) + (a * b / c) ^ (1 / 5)

 


background image

 

 البرمجة بلغة

MATLAB 

 

    

 

 

21 

 

 

 

 

 

 

 

 

 

 

 

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

 

   

 .لقد كانت جميع الحسابات التي أجريتها حتى اآلن منلفة من أعداد وحيدة البعاد سنساميها أعاداد مفاردة

 وتعتبر العمليات المجراة على األعداد المفردة

  وعندما يريد،تقولا سفنبو .تايضايرلا ملع تايساسأ يه

 ، فسيحتاج إلى أكثر إعادة إجراء العملية عادة مارات،رثكأ وأ درفم ددع ىلع ةيلمعلا سفن ءارجإ صخشلا

  عماد برناامج،ةلكاشملا هذاه لاحلو .داهجلاو تاقولا يف رده ينعي امم

MATLAB

 

 إلاى إجاراء العملياات

الرياضية على مصفوفة من البي

.انات

 

المصفوفة البسيطة

 

   

 يتعامل برنامج

MATLAB

 

مع المصفوفات بشكل مباشار وبطريقاة سلسا

ل

  إذ أن إنشااء المصافوفات،ة

.ًيتم بطريقة سهلة جدا

 

                                                  x = [1, 3, 7, 9, 20]                            :)1(  مثال

 مثال

(

2

)

:

      

= sin (x)

  

  

 حيث

x

0

  

 

          

 

 

0.1

  0.2

  0.3

  0.4

  0.5

  0.6

  0.7

  0.8

  0.9

 

 

0.31  0.59  0.81  0.95 

0.95  0.81  0.59  0.31 

 


background image

 

 البرمجة بلغة

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 


background image

 

 البرمجة بلغة

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

 

 ال

  يقبل الدليل كرقم غير صحي

حيث

 

يعطي

 

 رسالة

خطأ

.

 


background image

 

 البرمجة بلغة

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 

القيمة االبتدائية

 

عدد القيم

 

القيمة النهائية

 


background image

 

 البرمجة بلغة

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 


background image

 

 البرمجة بلغة

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

.

 

تنزيل سطر يخر

 


background image

 

 البرمجة بلغة

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    

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

 

   

تجري العدي

 د من العمليات الحسابية كعملية اإلضافة والطر  والضرب والقسمة بين العدد المفرد وباين

.جميع عناصر المصفوفة

 


background image

 

 البرمجة بلغة

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     %  

إعادة

 

استخدام المصفوفة السابقة

 

 

 أما هنا فضرب كل عنصر من عناصر المصفوفة

 

 بالعدد

 ُ ثم ط,

ر  من ك

 ل عنصر من العناصر

 الناتجة الرقم

.1

 


background image

 

 البرمجة بلغة

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 


background image

 

 البرمجة بلغة

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 

 ولقد قمنا هنا بضرب المصفوفة

 

 بالمصفوفة

 

 عنصر بعنصر عبر استخدام إشارة الضارب المسابوقة

.بنقطة

 

:مالح ة

 

 يجعل

وجود النقطاة

 

 أماام إشاارة الضارب القياساية برناامج

MATLAB 

 

 يضارب المصافوفتين

 ,عنصرا بعنصر

.بينما تخبر إشارة الضرب لوحدها البرنامج بان يقوم بضرب مصفوفات عادية

 

 >> g * h 

       Error 

                     

 الن عدد األسطر للمصفوفة

   

  

عدد األع

 مدة للمصفوفة

 

 كما

إن

 

  بعنصر ممكناة عان طرياق كتاباةًارصنع نيتفوفصم ةمسق

إشاارة

 

 القسامة مسابوقة بنقطاة كماا فاي

:المثال التالي

 

>> 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 

 

 بتقسيم المصافوفتين

. فاننا ستحدد قسمة مصفوفات عادية,ةطقن نودب ةمسقلا تناك اذإ امأ .رصنعب ارصنع

 


background image

 

 البرمجة بلغة

MATLAB 

 

    

 

 

31 

>> g .^ 2 

ans = 

        1     4     9      16 

        25  36    49     64 

        81  100  121  144   

 ولقد وجدنا هنا مربع كل عنصر من عناصر المصفوفة

.

 

المصفوفات القياسية

 

   

 نااك برنااامجّكمي

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 

األعمدة     األسطر

 


background image

 

 البرمجة بلغة

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 


background image

 

 البرمجة بلغة

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 

  

مالح ة

:

 

 يمكن ان تكون

 

مصفوفة فتكون حينئذ تكرر مصفوفا

.ت وليس قيم

 

التعامل مع المصفوفة

 

   

لقد امتلك

 

 برنامج

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

 

 ال

  لذلك سيقوم البرنامج بتوسيعها حسب الضرورة,ةدمعأ ةتس كلتمت

. وتكون مستطيلةًارفص رصانعلا يقب عضيو

 


background image

 

 البرمجة بلغة

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

 


background image

 

 البرمجة بلغة

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

.

 


background image

 

 البرمجة بلغة

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

 وعندما تضع أي عنص,ةيلصلأا

   للمصفوفة الفارغةًايواسم ر

[ ]

 ,

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

.بعد الحذك

 


background image

 

 البرمجة بلغة

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) 

 هنا تم إنشاء المصفوفة

 

 من تلك العناصر من المصفوفة

x

 

.التي قيمتها اكبر من الواحد

 

y =  

      -3    -2    2    3 

: كما في المثال التالي,ةيقطنملا ةيداحلأا عم انلمع امك ةيقطنملا ةيئانثلا تافوفصملا عم لمعلا نكميو

 

>> B = [5    -3; 2    -4] 

B = 

      5    -3 

      2    -4 

>> x = abs (B) > 2 


background image

 

 البرمجة بلغة

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)] 

 

 

المواقع القديمة   الترتيب الجديد

 


background image

 

 البرمجة بلغة

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 


background image

 

 البرمجة بلغة

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) 


background image

 

 البرمجة بلغة

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 =  


background image

 

 البرمجة بلغة

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 (:)) 


background image

 

 البرمجة بلغة

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 


background image

 

 البرمجة بلغة

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 


background image

 

 البرمجة بلغة

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) 


background image

 

 البرمجة بلغة

MATLAB 

 

    

 

 

46 

ans = 

        7 

>> min (size (A))                   مصفوفة ثنائيةA 

ans = 

         2 

:مالح ة

 

.طريقة توليد مصفوفة بالدمج

 

>> x = [1    2; 3    4]; 

>> y = [x    x .^ 2; x .^ 3    x .^ 4]; 

        

 

 

  

 

 

           

 

 

 

 

  

                         

 

 

 

 

 

المصفوفات متعددة اإلبعاد

 


background image

 

 البرمجة بلغة

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; 


background image

 

 البرمجة بلغة

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 

حجم المصفوفة

 


background image

 

 البرمجة بلغة

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

 


background image

 

 البرمجة بلغة

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) 

. وسينشئ التعابير التالية مصفوفة الخلية نفسها,

 

 

:مالح ة

 


background image

 

 البرمجة بلغة

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); 


background image

 

 البرمجة بلغة

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); 


background image

 

 البرمجة بلغة

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, :)  


background image

 

 البرمجة بلغة

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'    [ ]    [ ] 

       [ ]                            [ ]    [ ] 


background image

 

 البرمجة بلغة

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] 

   

 يمكن تحديد خاليا جزئية

إلن

شاء

 

 خاليا جديدة عبر استخدام تقنيات مناسابة لعنوناة مصافوفة الخلياة كماا

:في المثال التالي

 


background image

 

 البرمجة بلغة

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 = 


background image

 

 البرمجة بلغة

MATLAB 

 

    

 

 

57 

      [ ]    [ ] 

      [ ]    [ ] 

      [ ]    [ ] 

      [ ]    [ ] 

      [ ]    [ ] 

      [ ]    [ ] 

>> z = repmat (y, 1, 3) 

z = 

     [ ]    [ ]    [ ]    [ ]    [ ]    [ ]     

     [ ]    [ ]    [ ]    [ ]    [ ]    [ ] 

     [ ]    [ ]    [ ]    [ ]    [ ]    [ ] 

     [ ]    [ ]    [ ]    [ ]    [ ]    [ ] 

     [ ]    [ ]    [ ]    [ ]    [ ]    [ ] 

     [ ]    [ ]    [ ]    [ ]    [ ]    [ ] 

 

 

 

 

 

 

 

السالسل الرمزية

 

   

 تكمن قوة برنامج

MATLAB 

 

 الحقيقية في القدرة على التعامل مع

األرقاام

 ولكنا,

ه

 

 يحتااج

أ

 ًحياناا

إلاى

 

التعامل مع النصوص كما في حالة

 

 وضع العناوين

وأسماء

 

.المحاور على الرسومات

 

تركيب السلسة الرمزية

 


background image

 

 البرمجة بلغة

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) 


background image

 

 البرمجة بلغة

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 


background image

 

 البرمجة بلغة

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 


background image

 

 البرمجة بلغة

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 = 


background image

 

 البرمجة بلغة

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]                                 

                                             

 

فراغات

 

مصفوفة رمزية

 

مصفوفة عددية

 

مصفوفة رمزية

 


background image

 

 البرمجة بلغة

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' 

حرك صغ

ير

 


background image

 

 البرمجة بلغة

MATLAB 

 

    

 

 

64 

'cell array of strings?' 

>> size (C) 

ans = 

    4      1 

   

 تستخدم

أقواس

 

 المجموعة

{  } 

 

إلنشاء

 

  وذلك استخدمناها في حصر السلسلة الرمزية,ايلاخلا ةفوفصم

 وتملك المصفوفة,اهلمكأب

 

 في هذا المثال

أربعة

 

  ويحوي كل عنصر من مصفوفة,ًادحاو ًادومعو رطسا

 الخلية

.سلسلة رمزية مختلفة الطول

 

   

: وذلك كما يلي,تافوفصملا ةيقب نونعت امك ايلاخلا تافوفصم نونعتو

 

>> 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) 

 

 يعنون الخاليا

المعطاااة ولكناا

ه

 

ال

 

 يحاادد محتااوى

هااذه

 

 .الخاليااا

والسااترجاع

 

 ّمحتويااات خليااة جزئيااة محااد

 دة عليااك اسااتخدام

أقواس

 

:مجموعة كما في المثال التالي

 


background image

 

 البرمجة بلغة

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?' 


background image

 

 البرمجة بلغة

MATLAB 

 

    

 

 

66 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 جمل

اإلدخال

 

واإلخراج

 

 جمل

اإل

دخال

 

   

 هناك عدة صيغ

لإلدخال

 

باإلضافة

 

إلى

 

:عملية التنسيب منها

 

1

-

 

 تعليمة

input

:

 

( مثال

1

:)

 

>> x = input ('enter x: ') 

enter x: 

( مثال

2

:)

 

إدخال

 

األعداد

.

 

n = input ('enter n:'); 


background image

 

 البرمجة بلغة

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 

 

القيمة األولى من مصفوفة الخاليا

 


background image

 

 البرمجة بلغة

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') 

                                             

                       

 

 

عنوان الصندوق

 

الشيء المطلوب طباعت

ه

 

)( نوع بياني رمزي

 


background image

 

 البرمجة بلغة

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

:)

 


background image

 

 البرمجة بلغة

MATLAB 

 

    

 

 

70 

    

 يمكن طباعة

األعداد

 

واألسماء

 

والنتائج

 

من خالل

 

 كتابة

االيعازات بدون فارزة منقوطة

 

 وست هر النتائج

في نافذة

 

األمر

 

 

Command Window

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 الجمل الشرطية

   

 ياادعم برنااامج

MATLAB 

 

  وتهاادك,ةيااضايرلا تااايلمعلا معدااي اااملثم ةاانراقملاو ةاايقطنملا تااايلمعلا

 العملياااات والمعاااامالت المنطقياااة الحصاااول علاااى

أجوباااة

 

ل سااائلة

 

 التاااي يجااااب عنهاااا

ب

 صااا

 أ

و خطاااأ

 

(True/False)

.

 

   

تعتبر لغاة

 

MATLAB

 

فاي تعاملهاا ماع جمياع التعاابير المنط

 قياة وعملياات المقارناة

إن

 

أي

 

 عادد غيار

 صفري هو

True

 

 ويعتبر الصفر

False

  كما ويكون,

إخراج

 

 جمياع التعاابير المنطقياة وعملياات المقارناة

 عبارة عن مصفوفات منطقية تحوي العدد واحد من اجل

True 

 

 والعدد صفر من اجل

False

.

 

   

  من المصفوفاتًاصاخً اعون ةيقطنملا تافوفصملا ربتعتو

  كما يمكن عنونة المصفوفة المنطقية,ةيددعلا

  ضمن التعابيرًاقباس اهمدختسا يتلا تافوفصملا يقاب ةنونع ةقيرط سفنب

العددية

.

 

معامالت المقارنة

 

: )(العوامل العالئقية

 Relational Operators 

 

   

 تتضمن معامالت المقارنة كل

اإلشارات

 

المقارنة الشائعة والمدرجة في الجدول التا

:لي

 

معامل المقارنة

 

الوصف

 


background image

 

 البرمجة بلغة

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 

   

 لقد

أوجدنا

 

العناصر مان

 

 التاي هاي أكبار مان

4

وت,

 

 هار االصافار فاي

المصافوفة

 

 الناتجاة فاي مواقاع

 العناصر عندما

A ≤ 4

 بينما ي,

 

 هر الرقم

1

  

 عندما

A > 4

.

 

>> tf  = (A == B) 

tf =  


background image

 

 البرمجة بلغة

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    

 

)(نفي

 

   

  وسنقدم لك فيما يلي بع

األمثلة

 

:على استخدام المعامالت المنطقية

 


background image

 

 البرمجة بلغة

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 

 حيث قام

بايجاد

 

عناصر

 

 التي قيمها اكبر من

4

 

>> tf = ~ (A > 4) 

tf = 

     1    1    1    1     0    0    0    0    0 

 وتعني استبدال موا,ةقباسلا ةجيتنلا بلقب جمانربلا ماق دقل

 قع االصفار

والواحدا

ت

.

 

>> tf = (A > 2) & (A < 6) 

tf =  


background image

 

 البرمجة بلغة

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

 

األدنى

 


background image

 

 البرمجة بلغة

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) 


background image

 

 البرمجة بلغة

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; 

اإلخراج

               

        

   

 


background image

 

 البرمجة بلغة

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} 


background image

 

 البرمجة بلغة

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

 


background image

 

 البرمجة بلغة

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 

 

 

 

 

 

 

 

 

 

 

 


background image

 

 البرمجة بلغة

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 


background image

 

 البرمجة بلغة

MATLAB 

 

    

 

 

81 

 ويمكن تفسير الدوارة

أعال

ه

 

:كما يلي

 

من اجل كل قيمة ل

ـ

 

 من

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 


background image

 

 البرمجة بلغة

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 


background image

 

 البرمجة بلغة

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

 

)       (طبع جدول الضرب


background image

 

 البرمجة بلغة

MATLAB 

 

    

 

 

84 

   

 ُت

 جري حلقات

while

 

  غير محدد من المرات على عكس حلقاتًاددع باسحلا تايلمع

for

 

 التي تندي

, من التمريراتًانيعم ًاددع

 

 ويمكن كتابة الصيغة العامة لحلقة

while

 

:كما يلي

 

while expression 

           (commands) 

 end; 

   

 ستنفذ مجموعة

األوامر

(commands)

 

 الواقعاة باين العباارتين

while

 

 و

end

 

 طالماا

أن

 

 كال العناصار

 ضمن

expression

 

  صحيحةًاميق كلتمت

(true)

 ً وعادة,

 

 ما تكون نتيجة

expression 

 

.ً مفرداًاددع

 

مثال

 

(

1

:)

 

>> x = 1; 

>> while x < 25 

 

 

       disp (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 =  


background image

 

 البرمجة بلغة

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

 

 ضمن حلقة داخلية واقعة ضمن حلقات اكبر فان البرنامج يخرج مان الحلقاة

التي صادك ف

 يها التعليمة وال يخرج من الحلقات

األكبر

.

 

 

 

 

 

 

 


background image

 

 البرمجة بلغة

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

.

 

 وياتم تخازين

أساماء

 

 المتغيارات المخزوناة فاي


background image

 

 البرمجة بلغة

MATLAB 

 

    

 

 

87 

 الملااك

matlab.mat

 

فااي ساااحة العماال

,

 

 ّوسااتحم

 ل فااوق المتغياارات ذات

األسااماء

 

 المطابقااة لهااا فااي حااال

.وجودها

 

   

 ولتحميااال متغيااارات معيناااة مااان ملاااك ذي الحقاااة

(MAT-file)

 

 يجاااب ان ناااذكر اسااام الملاااك وقائماااة

المتغيرات ك

:ما يلي

 

>> load   filename   var1, var2, var3 

   

 لقد تم هنا فت  الملك

filename.mat

 

 وحملت المتغيرات

var1, var2, var3

  

إلى

 

ساح

ة

 

.العمل

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


background image

 

 البرمجة بلغة

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 


background image

 

 البرمجة بلغة

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 

:مالح ة

 

   

 يمكن

إجراء

 

 العمليات السابقة على مصفوفات رمزية

أو

 

.مصفوفات خاليا

 


background image

 

 البرمجة بلغة

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 

الموقع

 

الموقع

   

العدد

 


background image

 

 البرمجة بلغة

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) 

عدد الخانات

 


background image

 

 البرمجة بلغة

MATLAB 

 

    

 

 

92 

a = 

     7FF                                              

>> dec2hex (2047, 4) 

ans = 

         07FF 

>> class (a) 

ans = 

        char 

>> hex2dec (a) 

ans = 

        2047 

>> class (ans) 

ans = 

        double 

 

 

 

 

 

 

 

 

 

الدوال والبرامج الفرعية

 

   

تستخدم الدوال بشكل واسع في

 

لغة

 

MATLAB

. والصيغة العامة

 

للدوال

 

:هي

 

 

عدد الخانات

 

رمزي

 

المخرجات

 

الم

دخال

ت

 


background image

 

 البرمجة بلغة

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); 

اسم الدالة

 

البرنام

ج الرئيسي

 

)البرنامج الفرعي (الدالة

 

البرنامج الرئيسي

 


background image

 

 البرمجة بلغة

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)            لرسم النقاط

 

 

 

 

 

 

 

)البرنامج الفرعي (الدالة

 

البرنامج الرئيسي

 

)البرنامج الفرعي (الدالة

 


background image

 

 البرمجة بلغة

MATLAB 

 

    

 

 

95 

 

 

 

 

 

 مالح

ات

:

 

1

-

 

الدالة التي تكاون علاى شاكل ملاك مفصاول اليمكان تن

 فياذها مباشارة

إال

 

 بعاد اساتدعائها بالبرناامج

.الرئيسي

 

2

-

 

تكون اسم الدالة المخزون في القرص الصالب واسام الدالاة بعاد عالماة

 

 ) الموجاود فاي الساطر=(

األول

 

يجب ان يكونا

 

.متطابقين

 

:مثال

 

                                    function  y = myfunction (a, b); 

                                               ------- 

                                               ------- 

                                               ------- 

 فيكون الخزن

myfunction.m

 

3

-

 

ال

 

 تحتوي نهاية الدالة على

(end)

.

 

4

-

 

.تخزن البرامج بعد كل تعديل وخاصة الدوال

 

5

-

 

اسم الدالة ال

 مخزون يجب

أن

 

تبدأ

 

.بحرك

 

6

-

 

 يمكن

أن

 

 تستدعي دالة من قبل دالة

أخرى

.

 

 

 

الرسوم البيانية

 

   

ياازودك برنااامج

MATLAB

 

بالعديااد ماان االيعااازات التااي ت

 

 هاار البيانااات ثنائيااة

األبعاااد

 

 وثالثيااة

األبعاااد

  حيااث يرساام بعضااها منحنيااات ثنائيااة,

األ

بعاااد

 

 وثالثيااة

األبعاااد

 

 ًبينمااا يرساام بعضااها سااطوحا

وإطا

رات

. كما يمكن استخدام اللون كبعد رابع,

 


background image

 

 البرمجة بلغة

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; 


background image

 

 البرمجة بلغة

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));          لرسم منحنيين

 

 

 

 

 

 

 

 


background image

 

 البرمجة بلغة

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)

  

        

  

 لون

احمر

 


background image

 

 البرمجة بلغة

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); 


background image

 

 البرمجة بلغة

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'); 

 

 

 

 


background image

 

 البرمجة بلغة

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

 


background image

 

 البرمجة بلغة

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; 


background image

 

 البرمجة بلغة

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'); 

 




رفعت المحاضرة من قبل: Bilal AL Qazzaz
المشاهدات: لقد قام 10 أعضاء و 417 زائراً بقراءة هذه المحاضرة








تسجيل دخول

أو
عبر الحساب الاعتيادي
الرجاء كتابة البريد الالكتروني بشكل صحيح
الرجاء كتابة كلمة المرور
لست عضواً في موقع محاضراتي؟
اضغط هنا للتسجيل