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


(غــلا) #1

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


(غــلا) #2

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


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

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


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

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


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

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

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

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

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


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

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


(غــلا) #8

مشكور على المساعدة ما تقصر بس عندي طلب أتمنى تساعدني لأني مبتدئة في المتلاب و المطلوب لم أجد عنه في أي موقع
إلى شيئاً بسيطاً :
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{:}));  

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

بالنسبه لحساب الانحراف المعياري
الكود اللي كاتبتيه صحيح ميه بالميه مع انه يمكن اختصاره اكثر
اما الخطأ فهو طريقة استخدامك للدالة الجاهزه فلذلك تعطي اجابة مختلفه
اذا اردتي ان تعطي نف النتيجه فيجب ان تحولي المصفوفة الى فكتور
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);


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

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


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

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


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

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


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

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


(غــلا) #14

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


(mr.volt) #15

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


(غــلا) #16

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