طلب مساعده فى الماتلاب

السلام عليكم ورحمه الله و بركاته
انا طالبه مستوى سابع وطلب الدكتور منا انه نقرا صوره ونطلع لها
1- المتوسط لمصفوفه
2-الانحراف المعيارى للمصفوفه
3-الوسيط للمصفوفه
طلب نعملها بدوال جاهزه من الماتلاب و ببرنامج انا اعمله لى نفس 3 الدوال
ونحنا فى كورس الماتلاب اخذنا حاجات بسيطه
انا حاولت كثير وعرفت اعمل اجزاء من البرامج بس المشكله فى المصفوفه
فلما ارتبها تصاعدى عشان اطلع الوسيط يرتب لى الصف الاول بس ما يرتب المصفوفه كلها
ولما اطلب منه طول المصفوفه يطلع بس طول الصف الاول
اتمنى من من يستطيع مساعدتى حتى ولو باسم كتاب الرد بسرعه لانه محتاجته ضرورى
ولكم منى جزيل الشكر

يا ناس ما في أحد يساعدني كلكم مش عرفين الحل أتمنى إلي يعرف يساعدني ربي يوفق الجميع
بس ردو كيف نرتب المصفوفة كاملة تصاعدي أو تنازولي وشكراً.

السلام عليكم
اسف للتأخير
لايجاد المتوسط استخدم الامر
mean
لايجاد الوسيط استخدم الامر
median
لايجاد النحراف المعياري استخدم المر
std
لترتيب المصفوفة استخدم الامر
sort
لايجاد اكبر قيمة استخدم الامر
max
لايجاد اقل قيمة استخدم الامر
min
انظر help لمزيد من التوضيح

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

شوف الكود التالي لايجاد المتوسط لمصفوفة معينه

a=[1 3;4 5;2 6]
sumation=0;
for i=1:1:numel(a)
    sumation=sumation+a(i);
end
mean=sumation/numel(a)

لايجاد الوسيط جولي المصفوفة الى عمود واحد أو صف واحد اسهل الك

لايجاد طول المصفوفة لاتستخدمي الامر
size
وانما استخدمي الامر
numel

مشكور على المساعدة ما تقصر بس عندي طلب أتمنى تساعدني لأني مبتدئة في المتلاب و المطلوب لم أجد عنه في أي موقع
إلى شيئاً بسيطاً :
1)skewsies
2)kortousis
و البرنامج الذي قمت بكتابتة للإنحراف المعياري لا يوعطي نفس ناتج الدالة الجاهزة:

   e=[1 2 2 5;5 2 4 3]
e =
     1     2     2     5
     5     2     4     3
>> a=size(e);
>> n=a(1,1)*a(1,2);
>> s=sum(e(1:n));
>> x=s/n;
>> d=e-x;
>> h=d.^2;
>> z=sum(h(1:n));
>> w=z/(n-1);
>> q=sqrt(w)
q =
    1.5119  
      >> e=[1 2 2 5;5 2 4 3]
e =
     1     2     2     5
     5     2     4     3
>> k=std(std(e))
k =
    1.1547
   

والوسيط لم يعمل على مصفوفة الصورة:

    >> e=imread('bd.tif');
>> k=std(e)
??? Error using ==> minus
Integers can only be combined with integers of the same class, or scalar doubles.
Error in ==> var at 84
            x0 = x - repmat(xbar, tile);
Error in ==> std at 32
y = sqrt(var(varargin{:}));  

بالنسبه لحساب الانحراف المعياري
الكود اللي كاتبتيه صحيح ميه بالميه مع انه يمكن اختصاره اكثر
اما الخطأ فهو طريقة استخدامك للدالة الجاهزه فلذلك تعطي اجابة مختلفه
اذا اردتي ان تعطي نف النتيجه فيجب ان تحولي المصفوفة الى فكتور
e=[1 2 2 5 5 2 4 3]
k=std(e)
هكذا ستعطي نفس النتيجه
أما بالنسبه للاختصار فيمكن ان تسبتدلي السطرين التاليين
a=size(e);
>> n=a(1,1)*a(1,2);وتكتب مكانهم السطر التالي
n=numele(e);

ملاحظه مهمة :
بدل ان تنشغلي في التحويل من مصفوفة الى فكتور يمكنك ان تستخدمي دالة جاهزه لحساب الانحراف المعياري للمصفوفة بدون الحاجه الى تحويلها
استخدمي الامر
std2
وكذلك الامر
mean2
لحساب المتوسط
شوفي الهيلب

عفوا في المشاركة قبل الاخيره الامر
numele
لا يكتب هكذا
وانما يكتب
numel

بالنسبه لحساب الانحراف في الصورة فهذا خطأ
لا تكتب هكذا

>> e=[1 2 2 5;5 2 4 3]
e =
     1     2     2     5
     5     2     4     3
>> k=std(std(e))
k =
    1.1547

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


>> e=[1 2 2 5;5 2 4 3]
e =
     1     2     2     5
     5     2     4     3
>> k=std(e(1:n))
k =
    1.5119

حتى يعطى نتيجة مثل الحالة الحسابية الاولى

بالنسبه لحساب الانحراف في الصورة كيف
تكتب

[CENTER][SIZE=4]يا اخوان الموضوع اسهل مما تتصورون …الاخت عندها مشكله كيف تحول مصفوفه ببعدين الى متجه ببعد احد لكي تعرف ان تنفذ الاوامر عليه …والحل بكل سهوله عن طريق الامر التالي :

>> a = [ 1 2 3 ; 4 5 6 ];
>> a

a =

     1     2     3
     4     5     6

>> a(:) % convert matrix to vector 

ans =

     1
     4
     2
     5
     3
     6

[/size][/center]

مشكوووووووووور اخوى mr.volt