



آموزش برنامه نویسی متلب
موضوع:رشته ها در برنامه نویسی متلب
جلسه: نهم
مدرس : مدرسین جاوا پرو
متلب را ساده،آسان و شیرین بنوشید!!!
تدریس خصوصی آنلاین و از راه دور متلب(MATLAB) با مدرس های حرفه ای و با تجربه
در جلسه هشتم آموزش برنامه نویسی متلب به مهم ترین دستورات مربوط به بردارها و ماتریس ها پرداختیم، همان طور که در جلسه اول نیز گفته شد، در آزمایشگاه ماتریس (MATLAB) همه چیز(متغیرها) یک بردار یا ماتریس هستند. بنابراین در این جلسه می خواهیم به رشته ها که آرایه یا برداری از کاراکترها هستند بپردازیم.
یک رشته به سادگی به شکل زیر تعریف می شود:
| >>s = 'THIS IS A STRING' s = THIS IS A STRING |
برای تعریف یک کاراکتر یا رشته باید از ‘ ‘ استفاده کنیم.
با دستور whos به مشخصات متغیر s نگاهی می اندازیم:
| >>whos s Name Size Bytes Class Attributes s 1x16 32 char |
مشاهده می شود که s یک متغیر از نوع char یا کاراکتر بوده و متلب به ازای هر کاراکتر دو بایت به آن اختصاص می دهد. مشخصه size این متغیر برابر با 1*16 می باشد که بدین معناست که می توان این رشته را یک بردار یا آرایه ی سطری به طول 16 درنظرگرفت:
| >>size(s) ans = 1 16 |
مشاهده می کنیم که دستورات گفته شده پیرامون بردارها درمورد رشته ها نیز صدق می کند.
| >>s(end) ans = G >>length(s) ans = 16 >>s(1:4) ans = THIS |
اگر با کاراکترها و کدهای ascii آشنایی داشته باشید، می دانید که هر کاراکتر در یک سیستم کامپیوتری با یک کد باینری مشخص می شود. این کدها در استاندارهای مختلف، می توانند مقادیر متفاوتی داشته-باشند، استاندارد ascii مهم ترین و پرکاربردترین آن هاست. در متلب هم مانند سایر زبان های برنامه-نویسی می توان هنگام کار با کاراکترها از این کدها بهره گرفت، به مثال زیر دقت کنید:
| >>s_ascii = abs(s) s_ascii = Columns 1 through 9 84 72 73 83 32 73 83 32 65 Columns 10 through 16 32 83 84 82 73 78 71 >>char(s) ans = THIS IS A STRING |
دو دستور abs() و char() به ترتیب یک رشته را به کد اسکی و کد اسکی را به رشته تبدیل می کند.
مثال: در متغیر s تعریف شده بالا، دستوراتی بنویسید که به جای کاراکترهای فاصله "_" را جایگزین کند.
| >>space = find(s == ' ') space = 5 8 10 >>s(1,space) = '_' s = THIS_IS_A_STRING |
مثال: فرض کنید اطلاعات یک دانشجو مثل نام،نام خانوادگی،سن و شماره دانشجویی، همانند زیر در قالب رشته در متغیرهای مربوطه ذخیره شده اند:
| >>firstname = 'Ali'; >>lastname = 'Sajedi'; >>age = '25'; >>student_number = '987654'; |
فرض کنیم بخواهیم در یک متغیر به نام name، نام و نام خانوادگی را پشت سرهم داشته باشیم:
| >>name = [firstname lastname] name = AliSajedi |
برای خوانایی بهتر می توان یک کاراکتر فاصله نیز بین دو رشته اضافه نمود:
| >>name = [firstname ' ' lastname] name = Ali Sajedi |
حال اگر تعداد زیادی دانشجو و اطلاعات مربوطه را داشته باشیم، و بخواهیم همه اطلاعات هر دانشجو را در یک متغیر مثلا به نام student یک جا داشته باشیم و هر زمان که مثلاً فقط سن دانشجو را بخواهیم بتوانیم آن را از متغیر student استخراج کنیم، روش بالا کارایی مناسب را ندارد(چرا؟؟؟). اما اگر می توانستیم هر یک از اطلاعات یک دانشجو را در درایه های یک ماتریس ذخیره کنیم، به راحتی به آن ها می شد دسترسی داشت:
| >>student1 = [firstname;lastname;age;student_number] Error using vertcat Dimensions of matrices being concatenated are not consistent. |
پیغام خطای فوق به این جهت است که تعریف یک ماترسی با طول سطرهای مختلف امکان پذیر نمی-باشد. اگر هر متغیر فوق را یک سطر ماتریس قرار دهیم به خاطر این که طول رشته ها متفاوت هستند، این امکان وجود ندارد. برای حل این موضوع یک راه حل، اضافه نمودن کاراکترهای فاصله به رشته های کوتاه تر است. این کار را می توان به صورت دستی یا با دستور char به شکل زیر انجام داد:
| >>student = char(firstname,lastname,age,student_number) student = Ali Sajedi 25 987654 size(student) ans = 4 6 |
تمرین: برنامه ای بنویسید که اطلاعات چندین دانشجو(به تعداد دلخواه) از جمله نام و نام خانوادگی، سن، و معدل را هر یک در یک ماتریس ذخیره کرده و اقدامات زیر را انجام دهد:
1- دانشجویان را به ترتیب حروف الفبا نمایش دهد.
2- میانگین معدل کل دانشجویان را محاسبه کند.
3- حداقل و حداکثر سن دانشجویان را نشان دهد.
- راهنمایی: با کمک help، از دستور str2num استفاده کنید.
به کمک دستورات ماتریس ها و آرایه ها عملیات بسیاری روی رشته ها و کاراکترها می توان انجام داد. اما برای سادگی و سرعت در برنامه ها دستورات از پیش تعبیه شده ای نیز وجود دارند که در ادامه به آن ها خواهیم پرداخت.
- blanks(n) :
به تعداد n، فضای خالی(space) ایجادمی کند:
| >s = ['Ali' blanks(4) 'Sajedi'] s = Ali Sajedi |
- strcat(s1,s2,…,sN) :
رشته های s1 تا s2 را به هم می چسباند:
| >s1 = 'ali '; s2 = 'hasani'; >>strcat(s1,s2) ans = alihasani |
- ischar(A) :
چنانچه A یک ماتریس یا بردار یا عدد شامل کاراکتر باشد مقدار 1 و درغیراین صورت 0 را برمی گرداند:
| >>A = [1 3 5]; ischar(A) ans = 0 >>A = 'Hello'; ischar(A) ans = 1 ischar('0') ans = 1 ischar(0) ans = 0 |
- isletter(s):
اگر s یک آرایه باشد، به ازای عناصری که حرف باشند، یک و مابقی را صفر برمی گرداند:
| >>isletter('ali199_reza') ans = 1 1 1 0 0 0 0 1 1 1 1 |
- isspace(s) :
کاراکترهای خالی یک رشته را نشان می دهد:
| >>isspace('This is a test') ans = 0 0 0 0 1 0 0 1 0 1 0 0 0 0 |
- strfind(s,pattern) :
این دستور در رشته s به دنبال رشته ی pattern می گردد:
| >>s = 'this is a test'; >>strfind(s,'test') ans = 11 >>strfind(s,' ') ans = 5 8 10 |
- strrep(s,s1,s2) :
در s به دنبال رشته s1 می گردد و s2 را جایگزین آن می کند:
| >>s = this is a test >>strrep(s,' ','_') ans = this_is_a_test |
- strsplit(s,d) :
دستور فوق می تواند با یک آرگومان نیز اجرا شود. اگر یک رشته را بگیرد با عبارات بین فواصل رشته را برمی گرداند. برای مثال اگر یک جمله را بگیرد، کلمات آن را جداگانه در خروجی نمایش می دهد:
| >>s = 'This is a test'; >>strsplit(s) ans = 'This' 'is' 'a' 'test' |
اما آرگومان دوم می تواند یک کاراکتر یا رشته باشد،که عبارات بین آن را می خواهیم جدا سازیم. برای مثال فرض کنید آرایه زیر مربوط به داده های حاصل یک آزمایش باشد، که همگی بر حست متر بر ثانیه ذخیره شده اند. هر کدام از داده ها به وسیله "," جداشده است. بنابراین می توان داده های بین این کاراکتر را جدانمود:
| >>s = '1.2m/s,3.6m/s,78m/s,0'; >>strsplit(ss,',') ans = '1.2m/s' '3.6m/s' '78m/s' '0' |
مقدار d یک رشته نیز می تواند باشد، برای نمونه در مثال قبل اگر بخواهیم فقط به اعداد آزمایش دسترسی داشته باشیم، می بایست این گونه عمل کنیم:
| >>strsplit(ss,'m/s,') ans = '1.2' '3.6' '78' '0' |
- deblank(s) :
کاراکترهای فضای خالی را از انتهای s حذف می کند:
| >>s = ' This is a test '; >>deblank(s) ans = This is a test >>length(s) ans = 22 >>length(ans) ans = 18 |
- strrim(s) :
کاراکترهای فضای خالی را از ابتدا وانتهای s حذف می کند:
| >>s = ' This is a test '; >>length(s) ans = 22 >>strtrim(s) ans = This is a test >>length(ans) ans = 14 |
- lower(s) :
حروف بزرگ را در s به حروف کوچک تبدیل می کند:
| >>s = 'This Is a Test'; >>lower(s) ans = this is a test - upper(s) : >>upper(s) ans = THIS IS A TEST |
دستورات str2num و num2str برای تبدیل رشته های عددی به عدد و بالعکس به کارمی روند.
پیروز و موفق باشید
سفارش انجام پروژه متلب (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)