آموزش برنامه نویسی متلب
موضوع:رشته ها در برنامه نویسی متلب
جلسه: نهم
مدرس : مدرسین جاواپرو
متلب را ساده،آسان و شیرین بنوشید!!!
تدریس خصوصی آنلاین و از راه دور متلب(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 >>st rtrim (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 (لطفا در صورت خرابی لینک دانلود گزارش بدید که لینک اصلاح کنیم)
بستن *نام و نام خانوادگی * پست الکترونیک * متن پیام |
دوره های آموزشی برنامه نویسی
انجام پروژه های برنامه نویسی
تدریس خصوصی برنامه نویسی
بیش از 7 سال از فعالیت جاواپرو میگذرد
جاواپرو دارای مجوز نشر دیجیتال از وزارت فرهنگ و ارشاد اسلامی است
جهت ارتباط مستقیم با جاواپرو در واتساپ و تلگرام :
09301904690