



آموزش برنامه نویسی متلب
موضوع:آرایه ها در برنامه نویسی متلب
جلسه: ششم
مدرس : مدرسین جاوا پرو
متلب را ساده،آسان و شیرین بنوشید!!!
در جلسه اول گفتیم که MATLAB به معنای آزمایشگاه ماتریس است و همه چیز را می توان به گونه ای ماتریس درنظرگرفت. با توجه به مطالب گفته شده در جلسه قبل می توان گفت که همه چیز یعنی متغیرها. در این جلسه به موضوع آرایه ها و ماتریس ها می پردازیم.
یک آرایه را می توان یک ماتریس سطری یا ستونی تعریف کرد. بنابراین ابتدا برای راحتی با آرایه ها شروع به کار می کنیم.
یک آرایه سطری را به شکل زیر تعریف می کنیم:
| >>a = [1 2 3] a = 1 2 3 آرایه ستونی: >>a = [1;2;3] a = 1 2 3 |
عملیات ریاضی و منطقی را برای دو آرایه نیز می توان به کار برد. در این حالت این عملیات به طور نظیربه نظیر بین درایه های دو آرایه اعمال می شود. به مثال های زیر توجه کنید:
>>a = [1 2 3]; b = [-1 0 2]; >>a + b ans = 0 2 5 >>a - b ans = 2 2 1 >>a*b Error using * Inner matrix dimensions must agree. |
از آنجایی که آرایه ها نیز نوعی ماتریس هستند و ضرب ماتریس ها فقط به شرط برابر بودن تعداد ستون های ماتریس دوم و سطرهای ماتریس اول تعریف می شوند، با به کارگیری دستور فوق با پیغام خطا مواجه می شویم. چنانچه قصد ضرب یا تقسیم درایه به درایه داشته باشیم، بدین شکل عمل می کنیم:
| >>a.*b ans = -1 0 6 >>a./b ans = -1.0000 Inf 1.5000 |
دقت کنیم که در این حالت طول آرایه ها باید برابر باشند، مثلا نمی توان یک آرایه سطری را با یک آرایه ستونی جمع نمود:
| >>[1 2 3] + [1;2;3] Error using + Matrix dimensions must agree |
برای تعریف آرایه ها با طول بیشتر می توان از “:” استفاده کرد:
| start:step:end که در این جا start مقدار ابتدایی و step گام افزایش و end مقدار پایانی است: >>a = 0:1:8 a = 0 1 2 3 4 5 6 7 8 |
چنانچه گام افزایشی ما یک باشد، به طور ساده تر داریم:
| >>a = 1:8 a = 1 2 3 4 5 6 7 8 |
دستور linspace برای ایجاد یک دنباله حسابی، با n جمله a تا b به کارمی رود:
| linspace(a,b,n) |
مثال:
| >>linspace(1,8,8) ans = 1 2 3 4 5 6 7 8 >>linspace(1,10,5) ans = 1.0000 3.2500 5.5000 7.7500 10.0000 |
تفاوت دستور linspace با عملگر “:” این است که در linspace مقدار پایانی یا b الزاماً در آخرین درایه آرایه قرار داده می شود ولی چنانچه step در عملگر “:” به گونه ای انتخاب شود که مقدار end در محدوده تعریف دنباله نباشد بزرگترین جمله دنباله که کوچکتر از end است آخرین درایه خواهدبود. برای روشن شدن موضوع به مثال زیر توجه نمایید:
| >>1:2:10 ans = 1 3 5 7 9 >>linspace(1,10,5) ans = 1.0000 3.2500 5.5000 7.7500 10.0000 |
هر دو دنباله فوق دارای پنج جمله با مقدار ابتدایی 1، بوده و نقطه انتهایی 10 در نظرگرفته شده است. با این تفاوت که دنباله اول به 9 ختم شده، زیرا بزرگترین جمله دنباله است که از 10 کوچکتر بوده است.
دستور logspace از 10^a تا 10^b، n جمله تولید می کند.
| Logspace(a,b,n) |
کاربرد آن در تولید نمودارهای لگاریتمی و محاسبات لگاریتمی می باشد:
| >>logspace(0,3,4) ans = 1 10 100 1000 |
- آرایه زیر را درنظر بگیرید:
| >>a = 1:5 a = 1 2 3 4 5 |
می توان درایه های دلخواه آرایه را به اصطلاح استخراج نمود:
| >>a(2) ans = 2 |
می بینیم که کافیست اندیس درایه مورد نظر را در پرانتزی جلوی نام آرایه وارد کرد. اندیس درایه اول همواره یک بوده ولی چنانچه بخواهیم به درایه اخر دسترسی داشته باشیم و ندانیم طول آرایه چقدر است(یا برای راحتی کار) می توان از عبارت end استفاده کرد:
| >>a(end) ans = 5 |
برای استخراج چندین درایه آرایه نیز می توان از ":" استفاده کرد:
| >>a(1:3) ans = 1 2 3 >>a(3:end) ans = 3 4 5 |
درواقع باید اندیس درایه های موردنظر را در یک آرایه وارد نمود. برای مثال فرض کنید می خواهیم همه درایه ها به غیراز درایه وسط را در یک آرایه دیگر ذخیره کنیم:
| >>b = a([1 2 4 5]) b = 1 2 4 5 |
تمرین:با کمک دستور ":" و آرایه α،آرایه ای ایجاد کنید که درایه های a را از آخر به اول برگرداند.
جواب:
| >>b = a(5:-1:1) b = 5 4 3 2 1 |
تمرین: با کمک دستورات فوق دستوری بنویسید که درایه های فرد آرایه a را استخراج کند.
جواب:
| >>a(1:2:5) ans = 1 3 5 |
تمرین: آرایه زیر را درنظر بگیرید:
| a = [1 3 -1 4 8 0 0 -5 7 9 4 5 7 1 3 6]; |
دستوری بنویسید که به جز چهار درایه اول و آخرِ آرایه فوق بقیه درایه ها را استخراج کند.
جواب:
| >>a(5:end-4) ans = 8 0 0 -5 7 9 4 5 |
عملگر "’" یک آرایه سطری را به ستونی و برعکس تبدیل می کند:
| >>a' ans = 1 2 3 4 5 >>ans' ans = 1 2 3 4 5 |
از دستورات گفته شده می توان برای جایگزینی برخی درایه ها با مقادیر دلخواه نیز استفاده کرد. برای مثال فرض کنید درایه های زوج آرایه فوق را می خواهیم برابر صفر قرار دهیم:
| >>a(2:2:end) = 0 a = 1 0 3 0 5 |
یا اینکه بخشی از آرایه را به شکل زیر حذف نمود:
| >>a(2:2:end) = [] a = 1 3 5 |
برای اینکه بهتر با [] آشنا شویم، به دستورات زیر توجه کنید:
>>[] ans 0x0 0 double |
نکته: اگر اندیس ورودی آرایه از طول آرایه بیشتر باشد، با پیغام خطا روبه رو می شویم:
| >>a(4) index exceeds matrix dimensions. |
دستورات دیگری نیز برای استخراج بخش دلخواهی از آرایه، وجود دارد که امکانات بیشتری را در اختیار ما قرار می دهد. دستور find شماره اندیس مربوطه که در شرط خاصی صدق می کند را برمی گرداند. برای مثال آرایه زیر را در نظر بگیرید:
| >>a = 9 8 -3 4 -6 -9 5 1 0 9 3 3 8 7 2 |
اگر بخواهیم درایه های منفی را از آرایه فوق استخراج کرده و در آرایه دیگری ذخیره کنیم، ابتدا از دستور find جهت استخراج اندیس درایه های منفی استفاده می کنیم:
| >>b = find(a < 0) b = 3 5 6 |
نتایج به دست آمده را با آرایه a مقایسه کنید، می بینید که اندیس درایه های موردنظر به دست آمده اند. حال برای آن که این درایه ها را در یک آرایه دیگر ذخیره کنیم، بدین گونه عمل می کنیم:
| >>a_negative = a(b) a_negative = -3 -6 -9 |
اکنون که درایه های منفی استخراج شده اند می خواهیم، این درایه ها از آرایه a حذف شوند:
| >>a( find(a < 0) ) = [] a = Columns 1 through 9 9 8 4 5 1 0 9 3 3 Columns 10 through 12 8 7 2 |
در جلسه بعد به معرفی ماتریس ها و کاربرد دستورات این جلسه در ماتریس ها و ادامه دستورات آن می-پردازیم.
پیروز و موفق باشید
تدریس خصوصی آنلاین و از راه دور متلب(MATLAB) با مدرس های حرفه ای و با تجربه
جلسه ششم | آرایه ها در برنامه نویسی متلب
فرمت:PDF (لطفا در صورت خرابی لینک دانلود گزارش بدید که لینک اصلاح کنیم)
بستن *نام و نام خانوادگی * پست الکترونیک * متن پیام |
دوره های آموزشی برنامه نویسی
انجام پروژه های برنامه نویسی
تدریس خصوصی برنامه نویسی
بیش از 10 سال از فعالیت جاواپرو میگذرد
جاواپرو دارای مجوز نشر دیجیتال از وزارت فرهنگ و ارشاد اسلامی می باشد
جهت ارتباط مستقیم با جاواپرو در واتساپ و تلگرام :
09301904690
بستن دیگر باز نشو! |


![مشاهده جزییات و سرفصل های دوره Spring Batch [اینجا کلیک کنید]](https://dl.javapro.ir/spring_batch/springbatch_pop.png)


![مشاهده سرفصل ها و ثبت نام در دوره Spring Boot جاواپرو [کلیک کنید]](https://dl.javapro.ir/image/marketing/banerday1403springboot.png)
























.png)
-min.png)
-min.png)
-min.png)


-min.png)









-min.png)

.jpg)