alsafsaf1
عدد المساهمات : 38 نقاط : 107 السٌّمعَة : 0 تاريخ التسجيل : 26/04/2011
| موضوع: اساسيات ماتلاب الدرس الثالث الأربعاء أبريل 27, 2011 8:38 am | |
| التعامل مع المصفوفات طرق عمل المصفوفات : من خلال اربعة دوال لتوليد المصفوفات مباشرة رمز : >>zeros(m,n) لعمل مصفوفة آل عناصرها أصفار رمز : >>ones(m,n) لعمل مصفوقة الوحدة رمز : >>rand(m,n) لعمل مصفوفة بارقام عشوائية من صفر الى واحد رمز : >>randn(m,n) لعمل مصفوفة بارقام عشوائية من سالب واحد الى موجب واحد حيث m هى عدد الصفوف و n هى عدد الاعمدة من خلال تحميل ملف بيانات : يمكن عمل مصفوفة عن طريق تحميل ملف بيانات . dat) ) يمكنك عمل ملف امتداته dat ويحتوى على ارقام مرتبة بانتظام وليكن اسمه ptc.dat ويكون أمر التحميل آالاتى رمز : رمز : >>load ptc.dat ويجب ان يكون هذا الملف موجود داخل current directory او يمكنك ادراج مسار المجلد الذى يحتوى ملف البيانات عن طريق اختيار قائمة file ثم اختيار set path وبعد قم باختيار add folder واختار مجلد الملف أو من خلال M-files وهذه الملفات يتم فيها آتابة آود آالذى يتم آتابته فى سطر أوامر الماتلاب ويكمننا عمل M-file يحتوى على مجموعة أرقام لعمل مصفوقة وبعد ذلك قم بتخزين هذا الملف باسم ptc.m وفى سطر الماتلاب قم بكتابة الاتى رمز : >>ptc وسوف يقوم الماتلاب باستعداء المصفوفة Concatenation وهو عمل مصفوفة آبيرة من مجموعة متسلسلة من المصفوفات الصغيرة مثلا يمكن عمل الاتى رمز : >> B = [A A+32; A+48 A+16] وتكون نتيجة تنفيذ هذا الامر رمز : B =16 3 2 13 48 35 34 455 10 11 8 37 42 43 409 6 7 12 41 38 39 444 15 14 1 36 47 46 3364 51 50 61 32 19 18 2953 58 59 56 21 26 27 2457 54 55 60 25 22 23 2852 63 62 49 20 31 30 17 حذف صفوف واعمدة فى X A مثلا سنقوم بوضع قيمة المصفوفة : رمز >>X=A ولحذف العمود الثانى : رمز >>X(:,2)=[] آالاتى X ونجد قيمة : رمز >>XX =16 2 135 11 89 7 124 14 1 ويجب ملاحظة عند حذف عنصر من المصفوفة مثلا : : رمز >> X(1,2) = [] يعطى البرنامج رسالة خطا : رمز ??? Indexed empty matrix assignment is not allowed. سلسلة من العناصر مثلا استخدم الامر الاتى وذلك لان ناتج تنفيذ هذه العملية لا يكون مصفوفة ولكن يمكن حذف : رمز X(2:2:10) = [ ] ومعناه ان يقوم البرنامج بحذف العناصر بداية من العنصر رقم 2 الى العنصر رقم 10 بخطوة 2 وتكون النتيجة : رمز X =16 9 2 7 13 12 1 __________________ العمليات على المصفوفات مدور المصفوفة ولنفرض لدينا المصفوفة A رمز : رمز : A =16 3 2 135 10 11 89 6 7 124 15 14 1 فيكون مدورها آما يلى رمز : رمز : >> A'ans =16 5 9 43 10 6 152 11 7 1413 8 12 1 وآما معروف لدينا انه عند اضافة أو ضرب مصفوفة على مدور ها فان الناتج يكون مصفوفة متماثلة رمز : رمز : >> A+A'ans =32 8 11 178 20 17 2311 17 14 2617 23 26 2 رمز : رمز : >> (A)*A'ans =438 236 332 150236 310 278 332332 278 310 236150 332 236 438 محدد المصفوفة Determinant رمز : رمز : >> d = det(A)d =0 وهنا محدد المصفوفة يساوى صفر لانها مصفوفة احادية Singular ولتبسيط المصفوفة رمز : رمز : >> R = rref(A)R =1 0 0 10 1 0 -30 0 1 30 0 0 0 نلاحظ الصف الاخير يساوى صفر لانها مصفوفة احادية وتساوى صفر معكوس المصفوفة رمز : رمز : >> X = inv(A) رمز : رمز : Warning: Matrix is close to singular or badly scaled.Results may be inaccurate. RCOND = 4.383047e-018.X =1.0e+015 *0.2796 0.8388 -0.8388 -0.2796-0.8388 -2.5164 2.5164 0.83880.8388 2.5164 -2.5164 -0.8388-0.2796 -0.8388 0.8388 0.2796 وهنا نلاحظ ان المصفوفة احادية ولذلك لايجود معكوس لها Eigen values For matrix A رمز : رمز : >> AA =16 3 2 135 10 11 89 6 7 124 15 14 1 : رمز : رمز >> e = eig(A)e =34.00008.0000-0.0000-8.0000. يساوى صفر يوضح لنا وجود ال singularity eigenvalue وجود قيمة Arrays فى بعدين والعمليات الحسابية فى ال arrays تعتبر وهى تعبر عن مجموعة من الارقام فى صورة مصفوفة والمصفوفات عموما array وهذا متفق مع المصفوفات فى حالتى الجمع والطرح اما فى حالة الضرب والقسمة فان الامر تتم على آل عنصر على حده مختلف . للتعبير عن العمليات التى تتم على ال arrays decimal point, او العلامة العشرية dot والماتلاب يستخدم النقطة : رمز : رمز >> A : رمز : رمز A =16 3 2 135 10 11 89 6 7 124 15 14 1 : رمز : رمز >> A.*A : رمز : رمز ans =256 9 4 16925 100 121 6481 36 49 14416 225 196 1 هى بناء الجداول مثلا arrays ومن اهم مميزات ال : رمز : رمز >>s=(0:9)' : رمز : رمز s =0123456789 مكعبتها ويمكننا الان عمل جدول يحتوى على هذه العناصر و مربعتها و : رمز : رمز >>deep=[s s.^2 s.^3]deep =0 0 01 1 12 4 83 9 274 16 645 25 1256 36 2167 49 3438 64 5129 81 729 __________________ __________________ البيانات ذات المتغيرات المتعدده Multivariate Data وتستخدم فى عمليات التحليل الاحصائى للبيانات وتمثل الاعمده قيمة متغير واحد و تمثل الصفوف قيمة الملاحظات لنفس المتغير مثلا : لدينا ثلاث متغيرات وهما Heart rate Weight Hours of exercise per week ويوجد خمس نتائج او ملاحظات لكل متغير ويتم وضعهم آالاتى رمز : D = [ 72 134 3.281 201 3.569 156 7.182 148 2.475 170 1.2 ] ويمكننا الان حساب قيمة المتوسط الحسابى و الانحراف المعيارى لكل متغير رمز : >> mean(D)ans =75.8000 161.8000 3.4800 رمز : >> std(D)ans =5.6303 25.4990 2.2107 Logical Subscripting نفرض لدينا مصفوفة عادية x ومصفوفة L نفس الحجم ولكن تتكون من بعض العمليات المنطقية مثلا : رمز : x = [2.1 1.7 1.6 1.5 NaN 1.9 1.8 1.5 5.1 1.8 1.4 2.2 1.6 1.8] ووجود nan هنا يوضح ان هناك عنصر غير موجود مثلا عدم وجود استجابة فى النظام فى هذا المكان رمز : >> L=isfinite(x)L =1 1 1 1 0 1 1 1 1 1 1 1 1 1 وهذا الامر منطقى اى يعطى صفر او واحد ويعطى صفر فى حالة وجود العنصر اى يكون finite numerical values اما اذا آان غير ذلك فان الناتج يكون صفر فى حالة nan او inf ويمكن وضع علامة ~ لعكس الامر والتى تعبر عن not مثلا : رمز : >> ~isfinite(x) ans = 0 0 0 0 1 0 0 0 0 0 0 0 0 0 والهدف من هذا هو حذف nan فنقوم بتنفيذ الاتى رمز : >> x=x(L)x =رمز :Columns 1 through 11 2.1000 1.7000 1.6000 1.5000 1.9000 1.8000 1.5000 5.1000 1.8000 1.4000 2.2000Columns 12 through 13 1.6000 1.8000 نلاحظ هنا ان العنصر 5.1 بعيد جدا عن باقى العناصر فاذا اردنا حذفه نقوم بالاتى رمز : >>great=x<5 رمز : great =1 1 1 1 1 1 1 0 1 1 1 1 1 نلاحظ مكان العنصر اصبح صفر ونطبق الان Logical Subscripting : رمز >>x=x(great) : رمز x =Columns 1 through 11 2.1000 1.7000 1.6000 1.5000 1.9000 1.8000 1.5000 1.8000 1.4000 2.2000 1.6000Column 12 1.8000 ويجب ملاحظة ان يكون ما بين القوسين متغيرات منطقية The find Function والتى تحقق array شرط منطقى موجود بين قوسين الامر ولتطيبق هذا على المثال السابق فلدينا المصفوفة وهو الامر الذى يحدد العناصر الموجودة فى ال آالاتى x : رمز x =Columns 1 through 11 2.1000 1.7000 1.6000 1.5000 1.9000 1.8000 1.5000 5.1000 1.8000 1.4000 2.2000Columns 12 through 13 1.6000 1.8000 فاذا اردنا ايجاد العناصر التى اآبر من 2 نستخدم الاتى : رمز >>find(x>2) : رمز ans =1 9 12 الفعلية لهذه العناصر واذا اردنا ايجاد القيم array وهذا يعبر عن رقم العنصر داخل ال : رمز >> x(ans)ans =2.1000 5.1000 2.2000 | |
|