English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

الوظائف في MATLAB

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

تقوم الدالة بتعديل المتغيرات في مساحتها الخاصة (تسمى أيضًا المساحة المحلية) التي تختلف عن المساحة التي يتم الوصول إليها في لوحة إدخال MATLAB (تسمى أيضًا المساحة الأساسية).

يمكن للدالة أن تأخذ معاملات متعددة وأن تعيد معاملات متعددة.

جملة لغة الدالة هي-

function [out1,out2, ..., outN] = myfun(in1,in2,in3, ..., inN)

مثال على الإنترنت

الأسماء التاليةmymaxيجب كتابة الدالة في ملف يسمىmymax.mفي الملف. إنه يستخدم خمس أرقام كمعاملات ويقوم بإرجاع أكبر رقم.

أنشئ ملف دالة، واسمه mymax.m وادخل الكود التالي فيه-

function max = mymax(n1, n2, n3, n4, n5)
%هذا الدالة تستخدم لتحليل
%ادخل خمس أرقام
max = n1;
إذا (n2 > max)
   max = n2;
end
إذا (n3 > max)
   max = n3;
end
إذا (n4 > max)
   max = n4;
end
إذا (n5 > max)
   max = n5;
end

السطر الأول للوظيفة هو الكلمة المفتاحية function开头 . يحدد اسم الوظيفة والترتيب للمعاملات. في مثالنا،mymaxالوظيفة تحتوي على خمس معامل دخول وواحد معامل خروج.

تعليمات الوظيفة بعد السطر المعلق توفر نص المساعدة. عند إدخال ما يلي، سيتم طباعة هذه السطور:

help mymax

سيقوم MATLAB بتشغيل الجملة السابقة وسيقوم بإرجاع النتيجة التالية-

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

يمكنك تسمية الوظيفة

mymax(34, 78, 89, 23, 11)

سيقوم MATLAB بتشغيل الجملة السابقة وسيقوم بإرجاع النتيجة التالية-

ans = 89

وظائف مجهولة

تُعتبر الوظائف المجهولة مثل الدوال المدمجة في لغات البرمجة التقليدية، وتُعرف في جملة واحدة من MATLAB. تتكون من تعبير MATLAB وعدد غير محدود من معامل الدخول والخروج.

يمكنك تعريف وظيفة مجهولة مباشرة في سطر الأوامر الخاص بـMATLAB أو في وظيفة أو سكربت.

بهذا، يمكنك إنشاء وظائف بسيطة دون الحاجة إلى إنشاء ملف.

جملة إنشاء وظيفة مجهولة من تعبير

f = @(arglist)expression

مثال

في هذا المثال، سنكتب وظيفة مجهولة تُدعىpower، ستأخذ数字ين كمدخلات وسيعمل على رفع الأول إلى قوة الثاني.

قم بإنشاء ملف سكريبت وقم بكتابة الكود التالي فيه-

power = @(x, n) x.^n;
result1 = power(7, 3)
result2 = power(49, 0.5)
result3 = power(10, -10)
result4 = power (4.5, 1.5)

عند تشغيل الملف، يظهر

result1 =  343
result2 =  7
result3 =  1.0000e-10
result4 =  9.5459

الوظائف الرئيسية والفرعية

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

يمكن استدعاء الوظيفة الرئيسية من خارج ملف التعريف الرئيسي (من سطر الأوامر أو وظيفة أخرى)، ولكن لا يمكن استدعاء الفئة الفرعية من خارج ملف التعريف الرئيسي من سطر الأوامر أو وظيفة أخرى.

الفئة الفرعية فقط مرئية للملف الذي يحددها والمساهمات الفرعية الأخرى في ملف التعريف الخاص به.

مثال

لنكتب وظيفة تُدعىquadratic لحساب جذور المعادلة الثنائية. تحتوي الوظيفة على ثلاثة مدخلات: المعامل الثنائي، المعامل الخطي والمعامل الثابت. ستقوم بالعودة إلى الجذور.

سيحتوي ملف وظيفةquadratic.m على وظيفة رئيسيةquadratic وفункциة فرعيةdisc، التي تcalculate التمييز.

أنشئ ملف وظيفة quadratic.m وأدخل التالي في الملف

function [x1,x2] = quadratic(a,b,c)
% تعود هذه الدالة
% معادلة ثنائية درجة واحدة.
% تحتاج إلى 3 معلمات إدخال
% x2،x و
% المعلمة الثابتة
% تعود الجذر
d = disc(a,b,c); 
x1 = (-b + d) / (2*a);
x2 = (-b - d) / (2*a);
end   % نهاية الدالة quadratic
function dis = disc(a,b,c) 
% حساب الحد المقدار
dis = sqrt(b^2 - 4*a*c);
end   % نهاية الدالة الفرعية

يمكنك طلب هذه الوظائف من ماسح الأوامر، كما يلي:

quadratic(2,4,-4)

سيقوم MATLAB بتشغيل الجملة السابقة وسيقوم بإرجاع النتيجة التالية-

ans = 0.7321

الدوال المدمجة

يمكنك تعريف دالة داخل جسم دالة أخرى. هذه تُدعى الدوال المدمجة. تحتوي الدوال المدمجة على أي أو جميع مكونات أي دالة أخرى.

تُحدد الدوال المدمجة في نطاق دالة أخرى، وتتشارك في الوصول إلى منطقة العمل للدالة المحتوية عليها.

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

function x = A(p1, p2)
...
B(p2)
   function y = B(p3)
   ...
   end
...
end

مثال

لنعدل النموذج السابقquadraticالدالة. لكن، هذه المرة، ستكون دالة disc دالة مدمجة.

أنشئ ملف دالةquadratic2.m،وادخل الكود التالي فيه-

function [x1,x2] = quadratic2(a,b,c)
function disc % دالة مدمجة
d = sqrt(b^2 - 4*a*c);
end   % انتهاء الدالة disc
disc;
x1 = (-b + d) / (2*a);
x2 = (-b - d) / (2*a);
end   % انتهاء الدالة quadratic2

يمكنك استدعاء الوظيفة من سطر الأوامر كما يلي:

quadratic2(2,4,-4)

سيقوم MATLAB بتشغيل الجملة السابقة وسيقوم بإرجاع النتيجة التالية-

ans =  0.73205

الدوال الخاصة

الدوال الخاصة هي الدوال التي يمكن رؤيتها فقط من قبل مجموعة محدودة من الدوال الأخرى، والدوال الرئيسية. إذا كنت لا ترغب في نشر تنفيذ دالة function(s)، يمكنك إنشاؤها كدالة خاصة.

توجد الدوال الخاصة في مجلد فرعي يحمل الاسم الخاص Private.

هي مرئية فقط للدوال في مجلد الأب.

مثال

لنعدلquadraticالدالة. لكن، هذه المرة، ستقوم دالة disc بحساب الحد المقدار كدالة خاصة.

أنشئ مجلد فرعي يُدعى private في مجلد الدليل الذي تعمل فيه، وقم بتخزين ملف الدالة التالي فيه disc.m

function dis = disc(a,b,c) 
% حساب الحد المقدار
dis = sqrt(b^2 - 4*a*c);
end      % انتهاء الدالة الفرعية

أنشئ ملف quadratic3.m في مجلد الدليل الذي تعمل فيه، واكتب الكود التالي فيه-

function [x1,x2] = quadratic3(a,b,c)
% يعود هذا الدالة
% معادلة ثنائية درجة واحدة.
يحتاج إلى 3 معلمات إدخال
% هم x2،x
% الكسر
% هي تعود الجذر
d = disc(a,b,c); 
x1 = (-b + d) / (2*a);
x2 = (-b - d) / (2*a);
end      % انتهاء quadratic3

يمكنك استدعاء الوظيفة من سطر الأوامر كما يلي:

quadratic3(2,4,-4)

سيقوم MATLAB بتشغيل الجملة السابقة وسيقوم بإرجاع النتيجة التالية-

ans =  0.73205

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

يمكن للمتغيرات العالمية أن تُشارك بين عدة وظائف. من أجل ذلك، يجب أن يتم إعلان المتغير كمتغير عالمي في جميع الوظائف.

إذا كنت ترغب في الوصول إلى المتغير من مساحة العمل الأساسية، فعليك إعلانه في سطر الأوامر.

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

مثال

لنقم بإنشاء ملف وظيفة يُدعى average.m وندخل الكود التالي فيه-

function avg = average(nums)
global TOTAL
avg = sum(nums)/TOTAL;
end

قم بإنشاء ملف سكريبت وقم بكتابة الكود التالي فيه-

global TOTAL;
TOTAL = 10;
n = [34, 45, 25, 45, 33, 19, 40, 34, 38, 42];
av = average(n)

عند تشغيل الملف، سيتم عرض النتيجة التالية-

av =  35.500