الحسيني الطاهر
22-08-2007, 09:14 PM
ما هو MatLab?
هو أداة وبيئة تطوير برمجية مخصصة للمهام الحسابية، حيث تتوفر فيه الكثير من الوظائف والدوال الرياضية المبنية داخليا والتي تسهل حل مختلف أنواع المعادلات الرياضية. كما تساعد لغة برمجة ماتلاب على كتابة دوال وبرامج خاصة. بالإضافة للعديد من المميزات الأخرى به.
اللغة التي يعمل بها برنامج المتلاب هي لغة مفسرة Interpreted بمعنى أن مترجم اللغة سوف يقوم بعملية الترجمة سطرا بسطر بمجرد ضغط مفتاح الإدخال بعد كل سطر.
أستخدامات ماتلاب
تتضمن استعمالات الـ MatLab المجالات التالية:
الرياضيات و الحساب Math and computation
تطويرالخوارزميات Algorithm development
Data acquisition
النمذجة والمحاكاة Modeling, simulation, and prototyping
تحليل واستكشاف وتصوير البيانات Data analysis, exploration, and visualization
الرسوم الهندسية والبيانية Scientific and engineering graphics
بناء واجهات استخدام رسومية للتطبيقات المعدةApplication development, including graphical user interface building
واجهة التشغيل:
عند تشغيلك لـ MatLab سوف تظهر لك واجهة الاستعمال التالية:
تتكون الواجهة من مجموعة من الإطارات
1. إطار الأوامر Command Window
ومن خلاله يتم إدخال الأوامر للبرنامج، حيث يظهر المحث على الشكل (<<) ويتم كتابة الأمر بعده، وبما أن لغة MatLab هي لغة مفسرة Interpreted فإننا نحصل على الاستجابة فور الانتهاء من كتابة البرنامج،وغالبا ما تعطي نتيجة العملية التي يقوم بها المتلاب فور كل سطر بمجرد ضغط مفتاح الإدخال بعد السطر الأمر الذي يبدو أحيانا مزعج ولتفادي ظهور نتيجة كل سطر بسطر والاكتفاء بالنتيجة النهائية و ولكن يمكن تجنب إظهار النتيجة لكل أمر بإلحاق الأمر بفاصلة منقوطة ;
2. إطار منطقة العمل Workspace
حيث يظهر جميع المتغيرات المستعملة في جلسة العمل الحالية.
3. إطار الأوامر السابقة Command History
حيث يتم عرض جميع الأوامر التي سبق إدخالها في جلسات عمل سابقة.
4. إطار المجلد الحالي Current Directory
في هذا الإطار يتم عرض جميع الملفات الموجودة في مجلد العمل الحالي والذي يكون عادة C:MATLAB6p5work حيث يوجد به البرامج التي سنقوم بتشغيلها.
يمكن تعديل هذا المجلد لأي مجلد آخر من خلال المفتاح (...) المجاور لأسم المجلد في أعلى الإطار، أو من خلال نفس المفتاح الموجود على شريط الأدوات (منطقة رقم 5 في الصورة)
أما مفتاح Start الموجود أسفل الشاشة فهو شبيه لمفتاح start في نظام ويندوز، حيث يمكن من خلاله تشغيل بقية الأدوات المرافقة لبيئة MatLab.
ملاحظة: قد تظهر لديك واجهة الاستعمال مختلفة بعض الشيء عن المعروضة في الصورة، أو قد ترغب أنت في إخفاء بعض الأطر أو جعلها خارج الواجهة undock
لجعل أي أطار خارجيا استعمل مفتاح الموجود على الجانب الأيمن العلوي من الإطار، ولإعادة داخل الواجهة أختار من الإطار
View -> dock (window name)
ولإغلاقه استعمل مفتاح
توفر الوثائق المرافقة لـ MatLab الكثير من المعلومات المفيدة حول MatLab ويمكنك البدا باستعراضها من خلال اختيار MatLab Help من قائمة Help.
المتجهات في MatLab
يوفر Matlab مجموعة من الأوامر التي تجعل إدخال المتجهات والتعامل معها أكثر سهولة، حيث تشبه الأوامر المستعملة في MatLab أسلوب كتابة المتجهات في الجبر.
خلال هذا الدرس سوف نوضح هذه الأوامر، وكيفية استعمالها.
معلومة:
كلمة MatLab هي اختصار لعبارة matrix laboratory أو مختبر المصفوفات.
إنشاء المتجهات:
ابسط طريقة لتعريف المتجهة هي بكتابة عناصر المتجهة يفصل بين كلا منها مسافة ومحصورة بقوسين مربعين [ ]
لاحظ أن نتيجة الأمر الذي قمنا بكتابته قد ظهرت لنا مباشرة جرب نفس الأمر السابق ولكن أضف في نهايته فاصلة منقوطة ;
هذه المرة لا تظهر نتيجة الأمر بعده.
كما يمكن تعريف المتجهة من خلال تحديد القيمة الأولى : قيمة الزيادة: القيمة الأخيرة
في إطار منطقة العمل Workspace لاحظ المتغيرات المعرفة حاليا في جلسة العمل
كما بالشكل أعلاه يظهر حتى الآن متغيرين هما a و A
MatLab حساس لحالة الأحرف Case-sensitive لذا فإن المتغير a مختلف تماما عن المتغير A.
ملاحظة:يمكنك كتابة الأمر Whos لعرض المتغير المعرفة في جلسة العمل الحالية في إطار الأوامر Command Window
عرض المتجهات:لعرض محتويات أي متجه نقوم بكتابة اسم المتجه ثم نضغط على مفتاح الإدخال Enter
أو يمكن عرض القيمة الثانية في المتجه فقط من خلال الأمر:
لاحظ المتغير الجديد الذي تم أنشاؤه ans. في كل مرة يتم فيها كتابة امر تنتج عنه قيمة بدون تعيين هذه القيمة إلى متغير فأن تلك القيمة سوف تحمل في المتغير ans.
لعرض أول 4 قيم بالمتجه، أو لعرض القيمة الأولى والرابعة فقط: مع ملاحظة كتابة المتجه بدون علامة يساوي
الآن وبعد أن تعرفنا على كيفية التعامل مع المتجهات في بيئة MatLab ، نختتم الدرس بحفظ جلسة العمل الحالية للرجوع لها في أي وقت آخر
حفظ واسترجاع جلسة العمل:
لحفظ جلسة العمل WorkSpace أختار من قائمة File -> Save workspace As
ومن خلال مربع حوار Save As أختار اسم مناسب لملف جلسة العمل مثلا: MyFirstMat
الملف سوف يحفظ في مجلد العمل والذي يكون عادة مجلد C:MATLAB6p5work ويعطى الامتداد MAT
وعند تشغيل MatLab مرة ثانية يمكن استعادة ملف جلسة العمل من خلال File -> Open ثم اختار الملف ذو الامتداد Mat الذي حفظت به جلسة العمل.
المصفوفات في
MatLab
خلال هذا الدرس سوف نستكمل دراسة المزيد من أوامر Matlab والمتعلقة بإنشاء المصفوفات والتعامل معها.
إنشاء المصفوفات:طريقة تعريف المصفوفات في MatLab قريبا جداً إلى طريقة تعريف المتجهات، نبدأ مباشرة مع أول مثال:
>> D = [1 2 3; 4 5 6; 7 8 9]
D =
1 2 3
4 5 6
7 8 9
لاحظ الفرق بين فصل الأعداد بمسافة أو فاصلة منقوطة، جرب هذا الأسلوب كذلك:
>> D = [ 1 2 3;
4 5 6;
7 8 9]
D =
1 2 3
4 5 6
7 8 9
>>
كما يوجد عدد من الدوال لإنشاء مصفوفات خاصة:
1. دالة pascal لإنشاء مصفوفة متناظرة symmetric
2. دالة magic لإنشاء مصفوفات يتساوى فيها مجموع كل الصفوف والاعمدة.
3. دالة zeros لإنشاء مصفوفة صفرية.
4. دالة ones لإنشاء مصفوفة كل عناصرها تساوي 1
لاحظ الامثلة التالية
>> P = pascal(3)
P =
1 1 1
1 2 3
1 3 6
>> M= magic(3)
M =
8 1 6
3 5 7
4 9 2
>> z= zeros(2, 3)
z =
0 0 0
0 0 0
>> o = ones(2, 4)
o =
1 1 1 1
1 1 1 1
>>
العمليات الحسابية على المصفوفات:
كما ذكرنا سابقا فإن MatLab يجعل التعامل مع المتجهات والمصفوفات أكثر سهولة، جرب الأمثلة التالية:
>> Sum = D + P
>> Sub = P - D
>> D = D + 2
>> P2 = P * 2
>> Mult1 = P * D
>> Mult2 = P .* D
الأمر الأول: يجمع كلا من P و D وينتج عنه المصفوفة Sum
الأمر الثاني: ناتج طرح D من P في المصفوفة Sub
الأمر الثالث: يضيف 2 إلى كل عنصر من عناصر المصفوفة D
الأمر الرابع: ينتج عنه مصفوفة Mult1 والتي يحفظ بها ناتج ضرب P في D
الأمر الخامس: (لاحظ النقطة قبل علامة الضرب) هذا الأمر سينتج عنه مصفوفة Mult2 والتي هي عبارة عن حاصل ضرب كل عنصر في P في العنصر المقابل له في D
جرب أيضا الأمرين التالين ولاحظ الفرق في الناتج
>> M
M =
8 1 6
3 5 7
4 9 2
>> MM = M ^ 2
MM =
91 67 67
67 91 67
67 67 91
>> M2 = M .^ 2
M2 =
64 1 36
9 25 49
16 81 4
>>
M ^ 2 يعني ضرب المصفوفة في نفسها
M .^ 2 يعني ضرب كل عنصر في المصفوفة في نفسه.
لإيجاد محورة المصفوفة Transpose
>> M'
ans =
8 3 4
1 5 9
6 7 2
لإيجاد معكوس المصفوفة Inverse
>> inv(M)
ans =
0.1472 -0.1444 0.0639
-0.0611 0.0222 0.1056
-0.0194 0.1889 -0.1028
>>
للتعرف على حجم المصفوفة
>> size(z)
ans =
2 3
>> size(o)
ans =
2 4
>>
العدد الأول يمثل عدد الأسطر والثاني يمثل عدد الأعمدة
كثير الحدود في MatLab
التعرف على كيفية تمثيل كثير الحدود في MatLab ، وكيفية التعامل معها.
يوفر Matlab عدد من الدوال المبنية داخليا لتسهيل التعامل مع كثير الحدود Polynomials ، حيث يتم تمثيلها كمتجه، مثلا لتمثيل معادلة كثير الحدود التالية:
نعرف المتجه التالي:
>> x = [1 3 -15 -2 9]
x =
1 3 -15 -2 9
كذلك لتمثيل
>> Z = [1 0 0 0 -2]
Z =
1 0 0 0 -2
حساب قيمة كثير الحدود عند قيمة محددة:
لكي نحسب قيمة كثير الحدود الأول x عند قيمة s=3 مثلا، يمكن استعمال دالة polyval
احسبها وتأكد من الناتج :)
إيجاد جذور كثير الحدود :
يقصد بالجذور قيم المتغير s التي تجعل القيمة الكلية للمعادلة تساوي 0
والعكس:
يعني لاكتشاف معادلة كثير الحدود لجذور معلومة، الدالة هنا هي poly
ضرب وقسمة كثير الحدود:
لضرب معادلتين كثير حدود في بعضهما استعمال دالة conv وللقسمة الدالة deconv
عند استعمال deconv لقسمة كثيري حدود فأنه ينتج متجهين:
• الأول d ناتج القسمة.
• الثاني r باقي القسمة (وفي المثال السابق كان الباقي من القسمة متجه صفري).
كثير الحدود في MatLab
التعرف على كيفية تمثيل كثير الحدود في MatLab ، وكيفية التعامل معها.
يوفر Matlab عدد من الدوال المبنية داخليا لتسهيل التعامل مع كثير الحدود Polynomials ، حيث يتم تمثيلها كمتجه، مثلا لتمثيل معادلة كثير الحدود التالية:
نعرف المتجه التالي:
>> x = [1 3 -15 -2 9]
x =
1 3 -15 -2 9
كذلك لتمثيل
>> Z = [1 0 0 0 -2]
Z =
1 0 0 0 -2
حساب قيمة كثير الحدود عند قيمة محددة:
لكي نحسب قيمة كثير الحدود الأول x عند قيمة s=3 مثلا، يمكن استعمال دالة polyval
احسبها وتأكد من الناتج :)
إيجاد جذور كثير الحدود :
يقصد بالجذور قيم المتغير s التي تجعل القيمة الكلية للمعادلة تساوي 0
والعكس:
يعني لاكتشاف معادلة كثير الحدود لجذور معلومة، الدالة هنا هي poly
ضرب وقسمة كثير الحدود:
لضرب معادلتين كثير حدود في بعضهما استعمال دالة conv وللقسمة الدالة deconv
عند استعمال deconv لقسمة كثيري حدود فأنه ينتج متجهين:
• الأول d ناتج القسمة.
• الثاني r باقي القسمة (وفي المثال السابق كان الباقي من القسمة متجه صفري).
Standard function and graphics
الدوال القياسية
abs(x) absolute value or complex magnitude
sqrt(x) square root
sin(x) sine and cosine
cos(x)
ملحوظة:
الزاوية يجب ان تكون بالتقدير النصف قطرى
العلاقة بين الزاوية بالدرجات والزاوية بالتقدير النصف قطرى هى
rad=(Degree*2*pi)/360 degree
x=1:360;
>> q=(x*2*pi)/360;
>> y=sin(q);
>> plot(x,y)
>>
exp(x) exponentioal and natural logarithm
log(x)
inv(x) returns the inverse of the matrix x.
مثال أحسب الممانعة الكلية للدائرة المبينة فى الشكل ثم أحسب التيار الكلى وكذلك القدرة المعطاه للدائرة علما بان الرد الحثى والسعوى للمقاومات مكتوبة بالاوم
رسم المنحنيات الرسم البياني GRAPHICS باستخدام MATLAB
Creating a Plot
اذا كانت y كمية متجهة فان الأمر plot(y) ينتج عنه رسم بياني لي y كدالة في الزمن اما الامر plot(x,y) فينتج عنه الرسم البياني y و x مثلا لايجاد الرسم البياني للدالة
y = sin(t) بحيث ان t تتغير من من 0 الي 2 نجري العملية التالية:
t = 0:pi/100:2*pi;
y = sin(t);
plot(t,y)
y2 = sin(t–.25);
y3 = sin(t–.5);
plot(t,y,t,y2,t,y3)
يمكن رسم كل منحني بلون وخط مميز وذلك باستخدام
plot(x,y,'color_style_marker')
لاختيار اللون نختار الاحرف التالية:
( اصفر, احمر, اخضر-ازرق-ابيض-اسود)'y', 'r', 'g', 'b', 'w', and 'k'.
لاختيار نوع الخط نختار الرموز التالية: (– * + – – : – . )
مثال
plot(x,y,'y:+')
سيكون شكل الرسم الناتج هو اصفر منقط به علامة +
الكتابة علي محور الرسم البياني AXIS LABELS AND TITLES
The x-label, y-label, and z-label functions add x-, y- and z-axis labels. The title function adds a title at the top of the figure and the text function inserts text anywhere in the figure.
t = -pi:pi/100:pi;
y = sin(t);
plot(t,y)
axis ([-pi pi -1 1])
xlabel( '-\pi \leq \itt \leq \pi')
ylabel( 'sin(t)')
title ('Graph of the sine function')
text(l -1/3, ' \it{Note the odd symmetry. }')
Mesh and Surface Plots
MATLAB defines a surface by the z-coordinates of points above a grid in the x-y plane, using straight lines to connect adjacent points. The functions mesh and surf display surfaces in three dimensions. mesh produces wireframe surfaces that color only the lines connecting the defining points. surf displays both the connecting lines and the faces of the surface in color.
Visualizing Functions of Two Variables
To display a function of two variables, z = f (x,y), generate X and Y matrices consisting of repeated rows and columns, respectively, over the domain of the function. Then use these matrices to evaluate and graph the function. The meshgrid function transforms the domain specified by a single vector or two vectors x and y into matrices X and Y for use in evaluating functions of two variables. The rows of X are copiesنسخ of the vector x and the columns of Y are copies of the vector y. To evaluate the two-dimensional sine function, sin(r)/r, between x and y directions:
[X,Y] = meshgrid(–8:0.5:8);
R = sqrt(X.^2 + Y.^2) + eps;
Z = sin(R)./R;
mesh(X,Y,Z)
In this example, R is the distance from origin, which is at the center of the matrix.
Adding eps avoids the indeterminate 0/0 at the origin.
Printing Graphics
The Print option on the File menu and the print command both print MATLAB figures.
يوجد كثير من اوامر الرسم وهى كالاتى :
Plot (x,y) plot vector x versus vector y
Loglog(x,y) plot vector x versus vector y using log or semi log scales
Semilogy(x,y)
Polar (theta,rho) polar plot
Contour(z) contour plot of matric z
Mesh(z) 3D wire mesh plot of matrix z
title (‘ text’)
xlabel(‘text’)
ylabel(‘text’)
x=[2 3 4 5 6];
>> y=[1 2 3 4 5];
>> plot(x,y)
>> x=[1 2 3 4 5 6];
>> y=[10 20 30 40 50 60];
>> plot(x,y)
بعد تنفيذ أمر الرسم يظهر المنحنى المطلوب كما فى الشكل السابق :
يمكن كتابة عنوان المنحنى والإحداثيات من خلال قائمة أدراج ,حيث يتم أدراج عنوان الشكل وعنوان الإحداثيات :
يتم حفظ الشكل من قائمة ملف بأخذ الأمر save as
وأتباع الخطوات السابقة لتخذين ملف word
مع الأخذ فى الاعتبار أن امتداد هذا الملف سوف يكون .fig
يمكن رسم منحنى فى الإحداثيات الثلاث وذلك بكتابة الأمر التالى بعد إدخال مصفوفة الإحداثيات الثلاث plot3( )
ملحوظة هامة جدا
يمكن رسم اكثر من منحنى فى شكل واحد وذلك بكتابة الامر التالى وتكراره عدد مرات الاشكال المطلوبة
Subplot(2,2,1)
Or
Subplot(3,3,1)
subplot(3,3,1);
>> t=0:5:180;
>> x=2*t;
>> plot(x,t);
>>
>> r=100*t;
>> subplot(3,3,2);
>> plot(r,t)
>> d=sin(t);
>> subplot(3,3,3);
>> plot(d,t);
>> f=cos(t);
>> subplot(3,3,4);
>> plot(t,f);
>> f=tan(t);
>> subpolt(3,3,5);
رسم فى ثلاث اتجاهات على هيئة سطح
g=[1 2 3 4;4 8 7 6;5 8 7 6];
>> mesh(g)
>>
[x,y] = meshgrid([-2:.2:2]);
Z = x.*exp(-x.^2-y.^2);
surf(x,y,Z,gradient(Z))
colorbar
x=meshgrid([1 3 4 5.48])
x =
1.0000 3.0000 4.0000 5.4800
1.0000 3.0000 4.0000 5.4800
1.0000 3.0000 4.0000 5.4800
1.0000 3.0000 4.0000 5.4800
>> y=meshgrid([35 45 55 65])
y =
35 45 55 65
35 45 55 65
35 45 55 65
35 45 55 65
>> z=[4.5 3.26 2.9 2.8;4 2.5 2.17 2.11;3.8 2.19 1.8 1.7;3.6 1.8 1.6 1.3]
z =
4.5000 3.2600 2.9000 2.8000
4.0000 2.5000 2.1700 2.1100
3.8000 2.1900 1.8000 1.7000
3.6000 1.8000 1.6000 1.3000
>> surf(x,y,z,gradient(z))
MATLAB Function Reference
LineSpec
Line specification syntax
Description
This page describes how to specify the properties of lines used for plotting. MATLAB enables you to define many characteristics including:
• Line style
• Line width
• Color
• Marker type
• Marker size
• Marker face and edge coloring (for filled markers)
MATLAB defines string specifiers for line styles, marker types, and colors. The following tables list these specifiers.
Line Style Specifiers
Specifier Line Style
- solid line (default)
-- dashed line
: dotted line
-. dash-dot line
Marker Specifiers
Specifier Marker Type
+ plus sign
o circle
* asterisk
. point
x cross
s square
d diamond
^ upward pointing triangle
v downward pointing triangle
> right pointing triangle
< left pointing triangle
p five-pointed star (pentagram)
h six-pointed star (hexagram)
Color Specifiers
Specifier Color
r red
g green
b blue
c cyan
m magenta
y yellow
k black
w white
Many plotting commands accept a LineSpec argument that defines three components used to specify lines:
• Line style
• Marker symbol
• Color
For example,
plot(x,y,'-.or')
plots y versus x using a dash-dot line (-.), places circular markers (o) at the data points, and colors both line and marker red (r). Specify the components (in any order) as a quoted string after the data arguments.
If you specify a marker, but not a line style, MATLAB plots only the markers. For example,
plot(x,y,'d')
Related Properties
When using the plot and plot3 functions, you can also specify other characteristics of lines using graphics properties:
• LineWidth - specifies the width (in points) of the line
• MarkerEdgeColor - specifies the color of the marker or the edge color forfilled markers (circle, square, diamond, pentagram, hexagram, and the four triangles).
• MarkerFaceColor - specifies the color of the face of filled markers.
• MarkerSize - specifies the size of the marker in points.
In addition, you can specify the LineStyle, Color, and Marker properties instead of using the symbol string. This is useful if you want to specify a color that is not in the list by using RGB values. See ColorSpec for more information on color.
Examples
Plot the sine function over three different ranges using different line styles, colors, and markers.
t = 0:pi/20:2*pi;
plot(t,sin(t),'-.r*')
hold on
plot(sin(t-pi/2),'--mo')
plot(sin(t-pi),':bs')
hold off
Create a plot illustrating how to set line properties.
plot(t,sin(2*t),'-mo',...
'LineWidth',2,...
'MarkerEdgeColor','k',...
'MarkerFaceColor',[.49 1 .63],...
'MarkerSize',12)
See Also
line, plot, patch, set, surface, axes LineStyleOrder property
Line Properties linspace
امر وضع علامات على الخط المرسوم
plot(x,y,'c')
>> plot(x,y,'o')
>> plot(x,y,'h')
>> plot(x,y,'x')
>>
البرمجة في MatLab
كما ذكرنا في الدرس الأول من هذه السلسلة فإن MatLab هو بيئة تطوير برمجية تحوى العديد من الدوال الجاهزة، بالإضافة إلى إمكانية كتابة برامج ودوال خاصة بنا حسب الحاجة. خلال هذا الدرس سوف نتعرف على الأوامر البرمجة في MatLab.
الجملة الشرطية if :
تستخدم للاختيار بين أمرين حسب شرط محدد
الصيغة العامة :
if <condition>
<program1>
else
<program2>
End
في حالة تحقق الشرط condition يتم تنفيذ الكود في program1 وإذا لم يتحقق الشرط يتم تنفيذ الكود في program2
مثال:
>> if n < 0
disp('n is negative')
else
disp('n is positive')
end
n is positive
>> n
n =
71
>>
يمكن أن تأخذ جملة if شكلا أكثر تداخلا باستعمال أكثر من مستوي لـ elseif
if <expression1>
statements1
else if <expression2>
statements2
else
statements3
end
أو يمكن استعمال جملة switch التي لها نفس العمل
جملة switch
الصيغة العامة:
switch switch_exprission
case case_expr
statement,...,statement
case {case_expr1,case_expr2,case_expr3,...}
statement,...,statement
...
otherwise
statement,...,statement
End
حيث:
switch_expr هو المتغير (أو التعبير) الذي سيتم اختبار قيمته.
case_expr أحد القيم التي يمكن أن يأخذها المتغير
يمكن أن تتضمن الحالة الواحدة أكثر من قيمة، وإذا كانت القيمة للـ switch_expr غير مدرجة في اي حالة ينتقل التنفيذ للقسم otherwise
الحلقات التكرارية:
عندما نرغب في تكرار أمر معين (أو أكثر) عدة مرات، فإن أفضل طريقة لعمل ذلك هو بوضع هذا الأمر داخل حلقة تكرارية.
في MatLab يوجد نوعين فقط من الحلقات التكرارية :
1. حلقة for
وتستخدم عندما يكون المطلوب هو التكرار لعدد محدد من المرات.
الصيغة العامة
for variable = expression
statement
...
statement
end
مثال: حلقة بسيطة سوف تتكرر 4 مرات
>> for j=1:4
j
end
j =
1
j =
2
j =
3
j =
4
>>
حلقة while
حيث يكون التكرار هنا مرتبط بتحقق شرط ما، فإذا لم يعد الشرط محقق تنتهي الحلقة
الصيغة العامة:
while expression
statements
end
مثال: هذا البرنامج يوجد أول عدد صحيح مضروبه n! مكون من 100 خانة عشرية
>> n = 1;
while prod(1:n) < 1e100
n = n + 1;
end
>> n
n =
70
ملاحظة:
لغة MatLab هي لغة مفسرة Interpreted أي أن كل أمر يتم ترجمته للحاسوب قبل تنفيذه مباشرة، لذا فإن استعمال الحلقات التكرارية سوف يجعل البرنامج أكثر بطأ، ويفضل استعمال الاوامر والدوال الجاهزة لـ MatLab كلما أمكن ذلك.
break :
يستخدم هذا الأمر لإيقاف تنفيذ حلقة تكرارية وإعادة التحكم للبرنامج أو للحلقة الخارجية عند وجود حلقات متداخلة.
continue:
يقوم هذا الأمر بوقف التكرار الحالي للحلقة iteration ويبدأ في التكرار التالي له.
كتابة البرامج والدوال في MatLab
بعد أن تعرفنا على أوامر البرمجة في MatLab، سوف نتعلم خلال هذا الدرس كيف نكتب برامج ودوال خاصة يتم الاحتفاظ بها في ملفات مستقلة ويمكن استدعائها بنفس الطريقة التي نستدعي بها الدوال الداخلية في MatLab.
يتم كتابة البرامج لغة MatLab بنفس الطريقة التي نكتب بها الأوامر في إطار الأوامر Command Window وتحفظ في ملفات لها الامتداد m.*
يمكن إنشاء هذه الملفات باستعمال أي محرر نصوص (مثل برنامج المفكرة) أو باستعمال المحرر الملحق ببيئة MatLab.
وهذه الملفات لها نوعين:
1. ملفات السكريبت script
ولها المميزات التالية:
o لا تتقبل معاملات مدخلة input arguments ولا تعيد قيم كمعاملات.
o تعمل على المتغيرات الموجودة في مساحة العمل workspace
o تفيد عند الرغبة في تنفيذ مجموعة من الأوامر عدة مرات دون الحاجة لإعادة كتابتها.
ملفات الدوال function
ولها المميزات التالية:
• تتقبل معاملات مدخلة input arguments وتعيد قيم كمعاملات.
• المتغيرات المستعملة داخل الدالة في متغيرات داخلية للدالة، لا يمكن الوصول لها من منطقة العمل.
• تفيد في إضافة المزيد من الدوال لـ MatLab ولتمديد إمكانيته للاستعمال في التطبيقات المختلفة.
إنشاء ملف سكريبت:
من شريط الأدوات انقر على أداة New M-File كما موضح بالشكل
أو أختار من قائمة الأوامر File -> new -> M-file
سوف يتم فتح نافذة المحرر بصفحة جديدة فارغة، وبها يمكن أن تكتب أوامر السكريبت كما بالشكل.
لتنفيذ هذا السكريبت نقوم بحفظه أولا في ملف له الامتداد m (مثلا first.m)
أختار File -> save وفي مربع حوار save as اكتب اسم الملف.
ملاحظة:
الملف يجب أن يحفظ في مجلد العمل والذي عادة ما يكون المجلد C:MATLAB6p5work كما ذكرنا في الدرس الأول من هذه السلسلة.
ثم انقر على مفتاح run من شريط الأدوات (كما موضح في الشكل أعلاه) لتنفيذ السكريبت
نتيجة تنفيذ السكربيت سوف تظهر في إطار الأوامر كما بالشكل التالي:
ملاحظة:
لاحظ أن المتغيرات التي تم تعريفها في ملف السكريبت أصبحت معرفة كذلك في منطقة العمل.
التعليقات في لغة MatLab
كل سطر تسبقه علامة (%) في MatLab سوف يعتبر تعليق ( لاحظ ظهوره باللون الاخضر).
عند كتابة تعليق في مقدمة السكريبت (قبل أي امر) فإن هذا الأمر سوف يظهر عند طلب المساعدة حول السكريبت باستعمال أمر help (راجع الدرس الخامس)
إنشاء دالة:
لإنشاء دالة جديدة، نقوم بفتح ملف جديد كما فعلنا لإنشاء ملف سكريبت، ثم نكتب الكود الخاص بالدالة به وذلك حسب الصيغة التالية:
function [output1, output2, ...]=filename(input1, input2, ...)
% comments that will appear at help
statement1;
statement2;
.
.
.
حيث:
output1, output2 هي المعاملات التي سوف تعيدها الدالة، يجب أن لا تقل عن واحدة
input1, input2 هي المعاملات التي يتم إدخالها للدالة (إذا لم تكن موجودة ل يتم كتابة الأقواس )
يجب أن يحفظ الملف بنفس اسم الدالة filename.
فيما يلي دالة تقوم بحساب باقي القسمة لرقمين صحيحين mod
Function r=mod(a,d)
% r=mod(a,d). If a and d are integers, then
% r is the integer remainder of a after
% division by d. If a and b are integer matrices,
% then r is the matrix of remainders after division
% by corresponding entries. Compare with REM.
r=a-d.*floor(a./d),
التكامل
q=quad(@humps,0,1)
q =
29.8583
هو أداة وبيئة تطوير برمجية مخصصة للمهام الحسابية، حيث تتوفر فيه الكثير من الوظائف والدوال الرياضية المبنية داخليا والتي تسهل حل مختلف أنواع المعادلات الرياضية. كما تساعد لغة برمجة ماتلاب على كتابة دوال وبرامج خاصة. بالإضافة للعديد من المميزات الأخرى به.
اللغة التي يعمل بها برنامج المتلاب هي لغة مفسرة Interpreted بمعنى أن مترجم اللغة سوف يقوم بعملية الترجمة سطرا بسطر بمجرد ضغط مفتاح الإدخال بعد كل سطر.
أستخدامات ماتلاب
تتضمن استعمالات الـ MatLab المجالات التالية:
الرياضيات و الحساب Math and computation
تطويرالخوارزميات Algorithm development
Data acquisition
النمذجة والمحاكاة Modeling, simulation, and prototyping
تحليل واستكشاف وتصوير البيانات Data analysis, exploration, and visualization
الرسوم الهندسية والبيانية Scientific and engineering graphics
بناء واجهات استخدام رسومية للتطبيقات المعدةApplication development, including graphical user interface building
واجهة التشغيل:
عند تشغيلك لـ MatLab سوف تظهر لك واجهة الاستعمال التالية:
تتكون الواجهة من مجموعة من الإطارات
1. إطار الأوامر Command Window
ومن خلاله يتم إدخال الأوامر للبرنامج، حيث يظهر المحث على الشكل (<<) ويتم كتابة الأمر بعده، وبما أن لغة MatLab هي لغة مفسرة Interpreted فإننا نحصل على الاستجابة فور الانتهاء من كتابة البرنامج،وغالبا ما تعطي نتيجة العملية التي يقوم بها المتلاب فور كل سطر بمجرد ضغط مفتاح الإدخال بعد السطر الأمر الذي يبدو أحيانا مزعج ولتفادي ظهور نتيجة كل سطر بسطر والاكتفاء بالنتيجة النهائية و ولكن يمكن تجنب إظهار النتيجة لكل أمر بإلحاق الأمر بفاصلة منقوطة ;
2. إطار منطقة العمل Workspace
حيث يظهر جميع المتغيرات المستعملة في جلسة العمل الحالية.
3. إطار الأوامر السابقة Command History
حيث يتم عرض جميع الأوامر التي سبق إدخالها في جلسات عمل سابقة.
4. إطار المجلد الحالي Current Directory
في هذا الإطار يتم عرض جميع الملفات الموجودة في مجلد العمل الحالي والذي يكون عادة C:MATLAB6p5work حيث يوجد به البرامج التي سنقوم بتشغيلها.
يمكن تعديل هذا المجلد لأي مجلد آخر من خلال المفتاح (...) المجاور لأسم المجلد في أعلى الإطار، أو من خلال نفس المفتاح الموجود على شريط الأدوات (منطقة رقم 5 في الصورة)
أما مفتاح Start الموجود أسفل الشاشة فهو شبيه لمفتاح start في نظام ويندوز، حيث يمكن من خلاله تشغيل بقية الأدوات المرافقة لبيئة MatLab.
ملاحظة: قد تظهر لديك واجهة الاستعمال مختلفة بعض الشيء عن المعروضة في الصورة، أو قد ترغب أنت في إخفاء بعض الأطر أو جعلها خارج الواجهة undock
لجعل أي أطار خارجيا استعمل مفتاح الموجود على الجانب الأيمن العلوي من الإطار، ولإعادة داخل الواجهة أختار من الإطار
View -> dock (window name)
ولإغلاقه استعمل مفتاح
توفر الوثائق المرافقة لـ MatLab الكثير من المعلومات المفيدة حول MatLab ويمكنك البدا باستعراضها من خلال اختيار MatLab Help من قائمة Help.
المتجهات في MatLab
يوفر Matlab مجموعة من الأوامر التي تجعل إدخال المتجهات والتعامل معها أكثر سهولة، حيث تشبه الأوامر المستعملة في MatLab أسلوب كتابة المتجهات في الجبر.
خلال هذا الدرس سوف نوضح هذه الأوامر، وكيفية استعمالها.
معلومة:
كلمة MatLab هي اختصار لعبارة matrix laboratory أو مختبر المصفوفات.
إنشاء المتجهات:
ابسط طريقة لتعريف المتجهة هي بكتابة عناصر المتجهة يفصل بين كلا منها مسافة ومحصورة بقوسين مربعين [ ]
لاحظ أن نتيجة الأمر الذي قمنا بكتابته قد ظهرت لنا مباشرة جرب نفس الأمر السابق ولكن أضف في نهايته فاصلة منقوطة ;
هذه المرة لا تظهر نتيجة الأمر بعده.
كما يمكن تعريف المتجهة من خلال تحديد القيمة الأولى : قيمة الزيادة: القيمة الأخيرة
في إطار منطقة العمل Workspace لاحظ المتغيرات المعرفة حاليا في جلسة العمل
كما بالشكل أعلاه يظهر حتى الآن متغيرين هما a و A
MatLab حساس لحالة الأحرف Case-sensitive لذا فإن المتغير a مختلف تماما عن المتغير A.
ملاحظة:يمكنك كتابة الأمر Whos لعرض المتغير المعرفة في جلسة العمل الحالية في إطار الأوامر Command Window
عرض المتجهات:لعرض محتويات أي متجه نقوم بكتابة اسم المتجه ثم نضغط على مفتاح الإدخال Enter
أو يمكن عرض القيمة الثانية في المتجه فقط من خلال الأمر:
لاحظ المتغير الجديد الذي تم أنشاؤه ans. في كل مرة يتم فيها كتابة امر تنتج عنه قيمة بدون تعيين هذه القيمة إلى متغير فأن تلك القيمة سوف تحمل في المتغير ans.
لعرض أول 4 قيم بالمتجه، أو لعرض القيمة الأولى والرابعة فقط: مع ملاحظة كتابة المتجه بدون علامة يساوي
الآن وبعد أن تعرفنا على كيفية التعامل مع المتجهات في بيئة MatLab ، نختتم الدرس بحفظ جلسة العمل الحالية للرجوع لها في أي وقت آخر
حفظ واسترجاع جلسة العمل:
لحفظ جلسة العمل WorkSpace أختار من قائمة File -> Save workspace As
ومن خلال مربع حوار Save As أختار اسم مناسب لملف جلسة العمل مثلا: MyFirstMat
الملف سوف يحفظ في مجلد العمل والذي يكون عادة مجلد C:MATLAB6p5work ويعطى الامتداد MAT
وعند تشغيل MatLab مرة ثانية يمكن استعادة ملف جلسة العمل من خلال File -> Open ثم اختار الملف ذو الامتداد Mat الذي حفظت به جلسة العمل.
المصفوفات في
MatLab
خلال هذا الدرس سوف نستكمل دراسة المزيد من أوامر Matlab والمتعلقة بإنشاء المصفوفات والتعامل معها.
إنشاء المصفوفات:طريقة تعريف المصفوفات في MatLab قريبا جداً إلى طريقة تعريف المتجهات، نبدأ مباشرة مع أول مثال:
>> D = [1 2 3; 4 5 6; 7 8 9]
D =
1 2 3
4 5 6
7 8 9
لاحظ الفرق بين فصل الأعداد بمسافة أو فاصلة منقوطة، جرب هذا الأسلوب كذلك:
>> D = [ 1 2 3;
4 5 6;
7 8 9]
D =
1 2 3
4 5 6
7 8 9
>>
كما يوجد عدد من الدوال لإنشاء مصفوفات خاصة:
1. دالة pascal لإنشاء مصفوفة متناظرة symmetric
2. دالة magic لإنشاء مصفوفات يتساوى فيها مجموع كل الصفوف والاعمدة.
3. دالة zeros لإنشاء مصفوفة صفرية.
4. دالة ones لإنشاء مصفوفة كل عناصرها تساوي 1
لاحظ الامثلة التالية
>> P = pascal(3)
P =
1 1 1
1 2 3
1 3 6
>> M= magic(3)
M =
8 1 6
3 5 7
4 9 2
>> z= zeros(2, 3)
z =
0 0 0
0 0 0
>> o = ones(2, 4)
o =
1 1 1 1
1 1 1 1
>>
العمليات الحسابية على المصفوفات:
كما ذكرنا سابقا فإن MatLab يجعل التعامل مع المتجهات والمصفوفات أكثر سهولة، جرب الأمثلة التالية:
>> Sum = D + P
>> Sub = P - D
>> D = D + 2
>> P2 = P * 2
>> Mult1 = P * D
>> Mult2 = P .* D
الأمر الأول: يجمع كلا من P و D وينتج عنه المصفوفة Sum
الأمر الثاني: ناتج طرح D من P في المصفوفة Sub
الأمر الثالث: يضيف 2 إلى كل عنصر من عناصر المصفوفة D
الأمر الرابع: ينتج عنه مصفوفة Mult1 والتي يحفظ بها ناتج ضرب P في D
الأمر الخامس: (لاحظ النقطة قبل علامة الضرب) هذا الأمر سينتج عنه مصفوفة Mult2 والتي هي عبارة عن حاصل ضرب كل عنصر في P في العنصر المقابل له في D
جرب أيضا الأمرين التالين ولاحظ الفرق في الناتج
>> M
M =
8 1 6
3 5 7
4 9 2
>> MM = M ^ 2
MM =
91 67 67
67 91 67
67 67 91
>> M2 = M .^ 2
M2 =
64 1 36
9 25 49
16 81 4
>>
M ^ 2 يعني ضرب المصفوفة في نفسها
M .^ 2 يعني ضرب كل عنصر في المصفوفة في نفسه.
لإيجاد محورة المصفوفة Transpose
>> M'
ans =
8 3 4
1 5 9
6 7 2
لإيجاد معكوس المصفوفة Inverse
>> inv(M)
ans =
0.1472 -0.1444 0.0639
-0.0611 0.0222 0.1056
-0.0194 0.1889 -0.1028
>>
للتعرف على حجم المصفوفة
>> size(z)
ans =
2 3
>> size(o)
ans =
2 4
>>
العدد الأول يمثل عدد الأسطر والثاني يمثل عدد الأعمدة
كثير الحدود في MatLab
التعرف على كيفية تمثيل كثير الحدود في MatLab ، وكيفية التعامل معها.
يوفر Matlab عدد من الدوال المبنية داخليا لتسهيل التعامل مع كثير الحدود Polynomials ، حيث يتم تمثيلها كمتجه، مثلا لتمثيل معادلة كثير الحدود التالية:
نعرف المتجه التالي:
>> x = [1 3 -15 -2 9]
x =
1 3 -15 -2 9
كذلك لتمثيل
>> Z = [1 0 0 0 -2]
Z =
1 0 0 0 -2
حساب قيمة كثير الحدود عند قيمة محددة:
لكي نحسب قيمة كثير الحدود الأول x عند قيمة s=3 مثلا، يمكن استعمال دالة polyval
احسبها وتأكد من الناتج :)
إيجاد جذور كثير الحدود :
يقصد بالجذور قيم المتغير s التي تجعل القيمة الكلية للمعادلة تساوي 0
والعكس:
يعني لاكتشاف معادلة كثير الحدود لجذور معلومة، الدالة هنا هي poly
ضرب وقسمة كثير الحدود:
لضرب معادلتين كثير حدود في بعضهما استعمال دالة conv وللقسمة الدالة deconv
عند استعمال deconv لقسمة كثيري حدود فأنه ينتج متجهين:
• الأول d ناتج القسمة.
• الثاني r باقي القسمة (وفي المثال السابق كان الباقي من القسمة متجه صفري).
كثير الحدود في MatLab
التعرف على كيفية تمثيل كثير الحدود في MatLab ، وكيفية التعامل معها.
يوفر Matlab عدد من الدوال المبنية داخليا لتسهيل التعامل مع كثير الحدود Polynomials ، حيث يتم تمثيلها كمتجه، مثلا لتمثيل معادلة كثير الحدود التالية:
نعرف المتجه التالي:
>> x = [1 3 -15 -2 9]
x =
1 3 -15 -2 9
كذلك لتمثيل
>> Z = [1 0 0 0 -2]
Z =
1 0 0 0 -2
حساب قيمة كثير الحدود عند قيمة محددة:
لكي نحسب قيمة كثير الحدود الأول x عند قيمة s=3 مثلا، يمكن استعمال دالة polyval
احسبها وتأكد من الناتج :)
إيجاد جذور كثير الحدود :
يقصد بالجذور قيم المتغير s التي تجعل القيمة الكلية للمعادلة تساوي 0
والعكس:
يعني لاكتشاف معادلة كثير الحدود لجذور معلومة، الدالة هنا هي poly
ضرب وقسمة كثير الحدود:
لضرب معادلتين كثير حدود في بعضهما استعمال دالة conv وللقسمة الدالة deconv
عند استعمال deconv لقسمة كثيري حدود فأنه ينتج متجهين:
• الأول d ناتج القسمة.
• الثاني r باقي القسمة (وفي المثال السابق كان الباقي من القسمة متجه صفري).
Standard function and graphics
الدوال القياسية
abs(x) absolute value or complex magnitude
sqrt(x) square root
sin(x) sine and cosine
cos(x)
ملحوظة:
الزاوية يجب ان تكون بالتقدير النصف قطرى
العلاقة بين الزاوية بالدرجات والزاوية بالتقدير النصف قطرى هى
rad=(Degree*2*pi)/360 degree
x=1:360;
>> q=(x*2*pi)/360;
>> y=sin(q);
>> plot(x,y)
>>
exp(x) exponentioal and natural logarithm
log(x)
inv(x) returns the inverse of the matrix x.
مثال أحسب الممانعة الكلية للدائرة المبينة فى الشكل ثم أحسب التيار الكلى وكذلك القدرة المعطاه للدائرة علما بان الرد الحثى والسعوى للمقاومات مكتوبة بالاوم
رسم المنحنيات الرسم البياني GRAPHICS باستخدام MATLAB
Creating a Plot
اذا كانت y كمية متجهة فان الأمر plot(y) ينتج عنه رسم بياني لي y كدالة في الزمن اما الامر plot(x,y) فينتج عنه الرسم البياني y و x مثلا لايجاد الرسم البياني للدالة
y = sin(t) بحيث ان t تتغير من من 0 الي 2 نجري العملية التالية:
t = 0:pi/100:2*pi;
y = sin(t);
plot(t,y)
y2 = sin(t–.25);
y3 = sin(t–.5);
plot(t,y,t,y2,t,y3)
يمكن رسم كل منحني بلون وخط مميز وذلك باستخدام
plot(x,y,'color_style_marker')
لاختيار اللون نختار الاحرف التالية:
( اصفر, احمر, اخضر-ازرق-ابيض-اسود)'y', 'r', 'g', 'b', 'w', and 'k'.
لاختيار نوع الخط نختار الرموز التالية: (– * + – – : – . )
مثال
plot(x,y,'y:+')
سيكون شكل الرسم الناتج هو اصفر منقط به علامة +
الكتابة علي محور الرسم البياني AXIS LABELS AND TITLES
The x-label, y-label, and z-label functions add x-, y- and z-axis labels. The title function adds a title at the top of the figure and the text function inserts text anywhere in the figure.
t = -pi:pi/100:pi;
y = sin(t);
plot(t,y)
axis ([-pi pi -1 1])
xlabel( '-\pi \leq \itt \leq \pi')
ylabel( 'sin(t)')
title ('Graph of the sine function')
text(l -1/3, ' \it{Note the odd symmetry. }')
Mesh and Surface Plots
MATLAB defines a surface by the z-coordinates of points above a grid in the x-y plane, using straight lines to connect adjacent points. The functions mesh and surf display surfaces in three dimensions. mesh produces wireframe surfaces that color only the lines connecting the defining points. surf displays both the connecting lines and the faces of the surface in color.
Visualizing Functions of Two Variables
To display a function of two variables, z = f (x,y), generate X and Y matrices consisting of repeated rows and columns, respectively, over the domain of the function. Then use these matrices to evaluate and graph the function. The meshgrid function transforms the domain specified by a single vector or two vectors x and y into matrices X and Y for use in evaluating functions of two variables. The rows of X are copiesنسخ of the vector x and the columns of Y are copies of the vector y. To evaluate the two-dimensional sine function, sin(r)/r, between x and y directions:
[X,Y] = meshgrid(–8:0.5:8);
R = sqrt(X.^2 + Y.^2) + eps;
Z = sin(R)./R;
mesh(X,Y,Z)
In this example, R is the distance from origin, which is at the center of the matrix.
Adding eps avoids the indeterminate 0/0 at the origin.
Printing Graphics
The Print option on the File menu and the print command both print MATLAB figures.
يوجد كثير من اوامر الرسم وهى كالاتى :
Plot (x,y) plot vector x versus vector y
Loglog(x,y) plot vector x versus vector y using log or semi log scales
Semilogy(x,y)
Polar (theta,rho) polar plot
Contour(z) contour plot of matric z
Mesh(z) 3D wire mesh plot of matrix z
title (‘ text’)
xlabel(‘text’)
ylabel(‘text’)
x=[2 3 4 5 6];
>> y=[1 2 3 4 5];
>> plot(x,y)
>> x=[1 2 3 4 5 6];
>> y=[10 20 30 40 50 60];
>> plot(x,y)
بعد تنفيذ أمر الرسم يظهر المنحنى المطلوب كما فى الشكل السابق :
يمكن كتابة عنوان المنحنى والإحداثيات من خلال قائمة أدراج ,حيث يتم أدراج عنوان الشكل وعنوان الإحداثيات :
يتم حفظ الشكل من قائمة ملف بأخذ الأمر save as
وأتباع الخطوات السابقة لتخذين ملف word
مع الأخذ فى الاعتبار أن امتداد هذا الملف سوف يكون .fig
يمكن رسم منحنى فى الإحداثيات الثلاث وذلك بكتابة الأمر التالى بعد إدخال مصفوفة الإحداثيات الثلاث plot3( )
ملحوظة هامة جدا
يمكن رسم اكثر من منحنى فى شكل واحد وذلك بكتابة الامر التالى وتكراره عدد مرات الاشكال المطلوبة
Subplot(2,2,1)
Or
Subplot(3,3,1)
subplot(3,3,1);
>> t=0:5:180;
>> x=2*t;
>> plot(x,t);
>>
>> r=100*t;
>> subplot(3,3,2);
>> plot(r,t)
>> d=sin(t);
>> subplot(3,3,3);
>> plot(d,t);
>> f=cos(t);
>> subplot(3,3,4);
>> plot(t,f);
>> f=tan(t);
>> subpolt(3,3,5);
رسم فى ثلاث اتجاهات على هيئة سطح
g=[1 2 3 4;4 8 7 6;5 8 7 6];
>> mesh(g)
>>
[x,y] = meshgrid([-2:.2:2]);
Z = x.*exp(-x.^2-y.^2);
surf(x,y,Z,gradient(Z))
colorbar
x=meshgrid([1 3 4 5.48])
x =
1.0000 3.0000 4.0000 5.4800
1.0000 3.0000 4.0000 5.4800
1.0000 3.0000 4.0000 5.4800
1.0000 3.0000 4.0000 5.4800
>> y=meshgrid([35 45 55 65])
y =
35 45 55 65
35 45 55 65
35 45 55 65
35 45 55 65
>> z=[4.5 3.26 2.9 2.8;4 2.5 2.17 2.11;3.8 2.19 1.8 1.7;3.6 1.8 1.6 1.3]
z =
4.5000 3.2600 2.9000 2.8000
4.0000 2.5000 2.1700 2.1100
3.8000 2.1900 1.8000 1.7000
3.6000 1.8000 1.6000 1.3000
>> surf(x,y,z,gradient(z))
MATLAB Function Reference
LineSpec
Line specification syntax
Description
This page describes how to specify the properties of lines used for plotting. MATLAB enables you to define many characteristics including:
• Line style
• Line width
• Color
• Marker type
• Marker size
• Marker face and edge coloring (for filled markers)
MATLAB defines string specifiers for line styles, marker types, and colors. The following tables list these specifiers.
Line Style Specifiers
Specifier Line Style
- solid line (default)
-- dashed line
: dotted line
-. dash-dot line
Marker Specifiers
Specifier Marker Type
+ plus sign
o circle
* asterisk
. point
x cross
s square
d diamond
^ upward pointing triangle
v downward pointing triangle
> right pointing triangle
< left pointing triangle
p five-pointed star (pentagram)
h six-pointed star (hexagram)
Color Specifiers
Specifier Color
r red
g green
b blue
c cyan
m magenta
y yellow
k black
w white
Many plotting commands accept a LineSpec argument that defines three components used to specify lines:
• Line style
• Marker symbol
• Color
For example,
plot(x,y,'-.or')
plots y versus x using a dash-dot line (-.), places circular markers (o) at the data points, and colors both line and marker red (r). Specify the components (in any order) as a quoted string after the data arguments.
If you specify a marker, but not a line style, MATLAB plots only the markers. For example,
plot(x,y,'d')
Related Properties
When using the plot and plot3 functions, you can also specify other characteristics of lines using graphics properties:
• LineWidth - specifies the width (in points) of the line
• MarkerEdgeColor - specifies the color of the marker or the edge color forfilled markers (circle, square, diamond, pentagram, hexagram, and the four triangles).
• MarkerFaceColor - specifies the color of the face of filled markers.
• MarkerSize - specifies the size of the marker in points.
In addition, you can specify the LineStyle, Color, and Marker properties instead of using the symbol string. This is useful if you want to specify a color that is not in the list by using RGB values. See ColorSpec for more information on color.
Examples
Plot the sine function over three different ranges using different line styles, colors, and markers.
t = 0:pi/20:2*pi;
plot(t,sin(t),'-.r*')
hold on
plot(sin(t-pi/2),'--mo')
plot(sin(t-pi),':bs')
hold off
Create a plot illustrating how to set line properties.
plot(t,sin(2*t),'-mo',...
'LineWidth',2,...
'MarkerEdgeColor','k',...
'MarkerFaceColor',[.49 1 .63],...
'MarkerSize',12)
See Also
line, plot, patch, set, surface, axes LineStyleOrder property
Line Properties linspace
امر وضع علامات على الخط المرسوم
plot(x,y,'c')
>> plot(x,y,'o')
>> plot(x,y,'h')
>> plot(x,y,'x')
>>
البرمجة في MatLab
كما ذكرنا في الدرس الأول من هذه السلسلة فإن MatLab هو بيئة تطوير برمجية تحوى العديد من الدوال الجاهزة، بالإضافة إلى إمكانية كتابة برامج ودوال خاصة بنا حسب الحاجة. خلال هذا الدرس سوف نتعرف على الأوامر البرمجة في MatLab.
الجملة الشرطية if :
تستخدم للاختيار بين أمرين حسب شرط محدد
الصيغة العامة :
if <condition>
<program1>
else
<program2>
End
في حالة تحقق الشرط condition يتم تنفيذ الكود في program1 وإذا لم يتحقق الشرط يتم تنفيذ الكود في program2
مثال:
>> if n < 0
disp('n is negative')
else
disp('n is positive')
end
n is positive
>> n
n =
71
>>
يمكن أن تأخذ جملة if شكلا أكثر تداخلا باستعمال أكثر من مستوي لـ elseif
if <expression1>
statements1
else if <expression2>
statements2
else
statements3
end
أو يمكن استعمال جملة switch التي لها نفس العمل
جملة switch
الصيغة العامة:
switch switch_exprission
case case_expr
statement,...,statement
case {case_expr1,case_expr2,case_expr3,...}
statement,...,statement
...
otherwise
statement,...,statement
End
حيث:
switch_expr هو المتغير (أو التعبير) الذي سيتم اختبار قيمته.
case_expr أحد القيم التي يمكن أن يأخذها المتغير
يمكن أن تتضمن الحالة الواحدة أكثر من قيمة، وإذا كانت القيمة للـ switch_expr غير مدرجة في اي حالة ينتقل التنفيذ للقسم otherwise
الحلقات التكرارية:
عندما نرغب في تكرار أمر معين (أو أكثر) عدة مرات، فإن أفضل طريقة لعمل ذلك هو بوضع هذا الأمر داخل حلقة تكرارية.
في MatLab يوجد نوعين فقط من الحلقات التكرارية :
1. حلقة for
وتستخدم عندما يكون المطلوب هو التكرار لعدد محدد من المرات.
الصيغة العامة
for variable = expression
statement
...
statement
end
مثال: حلقة بسيطة سوف تتكرر 4 مرات
>> for j=1:4
j
end
j =
1
j =
2
j =
3
j =
4
>>
حلقة while
حيث يكون التكرار هنا مرتبط بتحقق شرط ما، فإذا لم يعد الشرط محقق تنتهي الحلقة
الصيغة العامة:
while expression
statements
end
مثال: هذا البرنامج يوجد أول عدد صحيح مضروبه n! مكون من 100 خانة عشرية
>> n = 1;
while prod(1:n) < 1e100
n = n + 1;
end
>> n
n =
70
ملاحظة:
لغة MatLab هي لغة مفسرة Interpreted أي أن كل أمر يتم ترجمته للحاسوب قبل تنفيذه مباشرة، لذا فإن استعمال الحلقات التكرارية سوف يجعل البرنامج أكثر بطأ، ويفضل استعمال الاوامر والدوال الجاهزة لـ MatLab كلما أمكن ذلك.
break :
يستخدم هذا الأمر لإيقاف تنفيذ حلقة تكرارية وإعادة التحكم للبرنامج أو للحلقة الخارجية عند وجود حلقات متداخلة.
continue:
يقوم هذا الأمر بوقف التكرار الحالي للحلقة iteration ويبدأ في التكرار التالي له.
كتابة البرامج والدوال في MatLab
بعد أن تعرفنا على أوامر البرمجة في MatLab، سوف نتعلم خلال هذا الدرس كيف نكتب برامج ودوال خاصة يتم الاحتفاظ بها في ملفات مستقلة ويمكن استدعائها بنفس الطريقة التي نستدعي بها الدوال الداخلية في MatLab.
يتم كتابة البرامج لغة MatLab بنفس الطريقة التي نكتب بها الأوامر في إطار الأوامر Command Window وتحفظ في ملفات لها الامتداد m.*
يمكن إنشاء هذه الملفات باستعمال أي محرر نصوص (مثل برنامج المفكرة) أو باستعمال المحرر الملحق ببيئة MatLab.
وهذه الملفات لها نوعين:
1. ملفات السكريبت script
ولها المميزات التالية:
o لا تتقبل معاملات مدخلة input arguments ولا تعيد قيم كمعاملات.
o تعمل على المتغيرات الموجودة في مساحة العمل workspace
o تفيد عند الرغبة في تنفيذ مجموعة من الأوامر عدة مرات دون الحاجة لإعادة كتابتها.
ملفات الدوال function
ولها المميزات التالية:
• تتقبل معاملات مدخلة input arguments وتعيد قيم كمعاملات.
• المتغيرات المستعملة داخل الدالة في متغيرات داخلية للدالة، لا يمكن الوصول لها من منطقة العمل.
• تفيد في إضافة المزيد من الدوال لـ MatLab ولتمديد إمكانيته للاستعمال في التطبيقات المختلفة.
إنشاء ملف سكريبت:
من شريط الأدوات انقر على أداة New M-File كما موضح بالشكل
أو أختار من قائمة الأوامر File -> new -> M-file
سوف يتم فتح نافذة المحرر بصفحة جديدة فارغة، وبها يمكن أن تكتب أوامر السكريبت كما بالشكل.
لتنفيذ هذا السكريبت نقوم بحفظه أولا في ملف له الامتداد m (مثلا first.m)
أختار File -> save وفي مربع حوار save as اكتب اسم الملف.
ملاحظة:
الملف يجب أن يحفظ في مجلد العمل والذي عادة ما يكون المجلد C:MATLAB6p5work كما ذكرنا في الدرس الأول من هذه السلسلة.
ثم انقر على مفتاح run من شريط الأدوات (كما موضح في الشكل أعلاه) لتنفيذ السكريبت
نتيجة تنفيذ السكربيت سوف تظهر في إطار الأوامر كما بالشكل التالي:
ملاحظة:
لاحظ أن المتغيرات التي تم تعريفها في ملف السكريبت أصبحت معرفة كذلك في منطقة العمل.
التعليقات في لغة MatLab
كل سطر تسبقه علامة (%) في MatLab سوف يعتبر تعليق ( لاحظ ظهوره باللون الاخضر).
عند كتابة تعليق في مقدمة السكريبت (قبل أي امر) فإن هذا الأمر سوف يظهر عند طلب المساعدة حول السكريبت باستعمال أمر help (راجع الدرس الخامس)
إنشاء دالة:
لإنشاء دالة جديدة، نقوم بفتح ملف جديد كما فعلنا لإنشاء ملف سكريبت، ثم نكتب الكود الخاص بالدالة به وذلك حسب الصيغة التالية:
function [output1, output2, ...]=filename(input1, input2, ...)
% comments that will appear at help
statement1;
statement2;
.
.
.
حيث:
output1, output2 هي المعاملات التي سوف تعيدها الدالة، يجب أن لا تقل عن واحدة
input1, input2 هي المعاملات التي يتم إدخالها للدالة (إذا لم تكن موجودة ل يتم كتابة الأقواس )
يجب أن يحفظ الملف بنفس اسم الدالة filename.
فيما يلي دالة تقوم بحساب باقي القسمة لرقمين صحيحين mod
Function r=mod(a,d)
% r=mod(a,d). If a and d are integers, then
% r is the integer remainder of a after
% division by d. If a and b are integer matrices,
% then r is the matrix of remainders after division
% by corresponding entries. Compare with REM.
r=a-d.*floor(a./d),
التكامل
q=quad(@humps,0,1)
q =
29.8583