menusearch
javapro.ir

جلسه نهم | رشته ها در برنامه نویسی متلب

جستجو
پنج شنبه ۱۱ آذر ۱۴۰۰ | ۰:۴۸:۱۵
۱۴۰۰/۸/۱۸ سه شنبه
(2)
(0)
جلسه نهم | رشته ها در برنامه نویسی متلب
جلسه نهم | رشته ها در برنامه نویسی متلب

فهرست جلسات مینی دوره متلب

جلسه اول | آموزش تصویری نصب برنامه متلب در کامپیوتر

جلسه دوم | آموزش کار با برنامه متلب

جلسه سوم | آموزش کار با توابع ریاضی ساده در متلب

جلسه چهارم | آموزش متغیرها در برنامه نویسی متلب

جلسه پنجم | معرفی انواع داده ها در متلب

جلسه ششم | آرایه ها در برنامه نویسی متلب

جلسه هفتم | ماتریس ها در برنامه نویسی متلب

جلسه هشتم | ادامه ماتریس ها در برنامه نویسی متلب

جلسه نهم | رشته ها در برنامه نویسی متلب

جلسه دهم | آرایه سلول ها در برنامه نویسی متلب

جلسه یازدهم | اسکریپت ها در برنامه نویسی متلب

جلسه دوازدهم | آرایه‌‌‌‌‌های چندبعدی در متلب

جلسه سیزدهم | حلقه ها و دستورات شرطی در متلب

جلسه چهاردهم | ساختارها(structures) در متلب

جلسه پانزدهم | توابع در متلب

جلسه شانزدهم | رسم نمودار دوبعدی در متلب

جلسه هفدهم | ادامه رسم نمودار دوبعدی در متلب

جلسه هجدهم | رسم نمودار سه بعدی در متلب

جلسه نوزدهم | محاسبات نمادین در متلب

جلسه بیستم(آخر) | ادامه محاسبات نمادین در متلب

 

مینی دوره آموزش رایگان برنامه نویسی متلب

 

 

آموزش برنامه نویسی متلب
موضوع:رشته ها در برنامه نویسی متلب
جلسه: نهم
مدرس : مدرسین جاواپرو
متلب را ساده،آسان و شیرین بنوشید!!!

 

 

در جلسه هشتم آموزش برنامه نویسی متلب به مهم ترین دستورات مربوط به بردارها و ماتریس ها پرداختیم، همان طور که در جلسه اول نیز گفته شد، در آزمایشگاه ماتریس (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 برای تبدیل رشته‌‌‌‌های عددی به عدد و بالعکس به کارمی روند.

 

پیروز و موفق باشید

 


ادامه حیات سایت جاواپرو به حمایت مالی (دونیت) از طرف شما کاربر عزیز بستگی دارد....


 

جلسه نهم | رشته ها در برنامه نویسی متلب

 

فرمت:PDF (لطفا در صورت خرابی لینک دانلود گزارش بدید که لینک اصلاح کنیم)

 

 

لینک دانلود آموزش رایگان اندروید

لینک دانلود

 

نظرات کاربران
*نام و نام خانوادگی
* پست الکترونیک
* متن پیام

بستن
*نام و نام خانوادگی
* پست الکترونیک
* متن پیام

0 نظر