با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن. و کاربرانی که دوره کامل آموزش متلب را دنبال می کنند. نرم افزار متلب در واقع یک نرم افزار کدنویسی ریاضی و محاسباتی است. و شما در هنگام کار با آن با انواع اعداد مختلف (اعداد صحیح ، اعشاری ، کسری و…) بسیار سر و کار دارید. با این وجود متلب به شما اجازه می دهد تا کاراکترهای رشته ای یا اعداد را در قالب رشته تعریف کرده و آن ها را به متغیرها و یا انواع آرایه ها اختصاص دهید. همچنین توابع مختلفی را برای کار با رشته ها از جمله تبدیل رشته ها به یکدیگر ، تبدیل نوع عددی به رشته و … را فراهم می کند. برای آشنایی با نوع رشته در متلب و چگونگی استفاده از توابع مختلف در ادامه ی آموزش آشنایی با نوع رشته در متلب با ما همراه باشید.
در ادامه ی مباحث آشنایی با نوع رشته در متلب شما را با چگونگی تعریف رشته و توابع آن آشنا می کنیم.
ایجاد یک رشته کاراکتری در MATLAB بسیار ساده است.
به عنوان مثال تخصیص رشته به یک متغیر به صورت زیر است :
1 | my_string = 'Tutorials Point |
نتیجه ی اجرای کد فوق در متلب بصورت زیر خواهد بود:
1 | my_string = Tutorials Point |
برای لیست کردن متغیرهای تعریف شده با جزئیات کامل آن، از تابع whos استفاده می کنیم:
1 | whos |
نتیجه ی اجرای دستور فوق در متلب بصورت زیر خواهد بود:
1 2 | Name Size Bytes Class Attributes my_string 1x16 32 char |
همچنین شما می توانید از توابع تبدیل نوع عددی از جمله uint8 یا uint16 برای تبدیل کاراکترهای رشته ی عددی به عدد استفاده کنید.
مثال – یک فایل اسکریپتی ایجاد کرده و کد زیر را در آن وارد کنید :
1 2 3 4 5 | my_string = 'Tutorial''s Point'; str_ascii = uint8(my_string) % 8-bit ascii values str_back_to_char= char(str_ascii) str_16bit = uint16(my_string) % 16-bit ascii values str_back_to_char = char(str_16bit) |
نتیجه ی اجرای کد فوق در متلب بصورت زیر خواهد بود:
1 2 3 4 5 6 7 8 9 10 | str_ascii = 84 117 116 111 114 105 97 108 39 115 32 80 111 105 110 116 str_back_to_char = Tutorial's Point str_16bit = 84 117 116 111 114 105 97 108 39 115 32 80 111 105 110 116 str_back_to_char = Tutorial's Point |
رشته هایی که تاکنون تعریف کردیم در قالب آرایه های تک مقداری در متلب ذخیره می شوند.
شما می توانید رشته ها را مانند داده های عددی در آرایه هایی با ابعاد و اندازه های مختلف ذخیره کنید.
ساده ترین روش برای ایجاد آرایه ی یک بعدی سطری یا ستونی بصورت زیر است :
شما می توانید رشته ها را در آرایه ها به طور عمودی در هر یک از روش های زیر ایجاد کنید:
مثال – یک فایل اسکریپت ایجاد کرده و کد زیر را در آن تایپ نمائید:
1 2 3 4 5 | doc_profile = ['Zara Ali '; ... 'Sr. Surgeon '; ... 'R N Tagore Cardiology Research Center'] doc_profile = char('Zara Ali', 'Sr. Surgeon', ... 'RN Tagore Cardiology Research Center') |
نتیجه اجرای کد فوق در متلب بصورت زیر است :
1 2 3 4 5 6 7 8 | doc_profile = Zara Ali Sr. Surgeon R N Tagore Cardiology Research Center doc_profile = Zara Ali Sr. Surgeon RN Tagore Cardiology Research Center |
شما می توانید رشته ها را به صورت افقی با هر یک از روش های زیر ایجاد کنید:
مثال – یک فایل اسکریپت ایجاد کرده و کد زیر را در آن تایپ می کنیم:
1 2 3 4 5 | name = 'Zara Ali '; position = 'Sr. Surgeon '; worksAt = 'R N Tagore Cardiology Research Center'; profile = [name ', ' position ', ' worksAt] profile = strcat(name, ', ', position, ', ', worksAt) |
نتیجه ی اجرای کد فوق در متلب بصورت زیر خواهد بود:
1 2 | profile = Zara Ali , Sr. Surgeon , R N Tagore Cardiology Research Center profile = Zara Ali,Sr. Surgeon,R N Tagore Cardiology Research Center |
در روش های قبلی تعریف رشته ها در آرایه با طول های متفاوت انجام شده و این کار مشکلاتی را بوجود می آورد.
البته می توان فضای های خالی را به انتهای رشته ها برای برابر ساختن طول آن ها اضافه کرد.
اما روش کارآمدتر برای تعریف مقادیر رشته ها با طول یکسان در آرایه استفاده از آرایه های سلولی است.
تابع cellstr یک آرایه کاراکتری را به یک آرایه سلولی از رشته ها تبدیل می کند.
مثال – یک فایل اسکریپ ایجاد کرده و کد زیر را در آن تایپ می نمائیم:
1 2 3 4 5 6 | name = 'Zara Ali '; position = 'Sr. Surgeon '; worksAt = 'R N Tagore Cardiology Research Center'; profile = char(name, position, worksAt); profile = cellstr(profile); disp(profile) |
نتیجه ی اجرای کد فوق در متلب بصورت زیر خواهد بود:
1 2 3 4 5 | { [1,1] = Zara Ali [2,1] = Sr. Surgeon [3,1] = R N Tagore Cardiology Research Center } |
متلب توابع رشته ای متعددی را برای ایجاد، ترکیب، تجزیه، مقایسه و دستکاری رشته ها ارائه می کند.
جدول زیر توضیح مختصری از توابع رشته ای در MATLAB را ارائه می دهد:
تابع | کاربرد |
---|---|
blanks | ایجاد رشته از کاراکترهای خالی |
cellstr | ایجاد آرایه ی سلولی از رشته های آرایه. |
char | تبدیل به نوع آرایه ی کاراکتر رشته ای |
iscellstr | تعیین اینکه آیا ورودی آرایه سلولی از رشته ها است. |
ischar | تعیین اینکه آیا آیتم یک آرایه کاراکتر است. |
sprintf | تبدیل فرمت داده به رشته |
strcat | رشته ها را به صورت افقی ترکیب می کند. |
strjoin | رشته ها را در آرایه سلولی به رشته تک مقداری اضافه می کند. |
تابع | کاربرد |
ischar | تعیین اینکه آیتم یک آرایه کاراکتر است یا خیر |
isletter | آیا عناصر آرایه که حروف الفبا هستند یا خیر |
isspace | آیا بین عناصر آرایه فضای خالی هست یا خیر |
isstrprop | تعیین اینکه آیا رشته از نوع مشخص شده است یا خیر |
sscanf | داده های فرمت شده را از یک رشته می خواند |
strfind | پیدا کردن یک رشته در سایر رشته ها |
strrep | پیدا کردن و جایگزینی یک زیر رشته |
strsplit | تقسیم رشته در تعداد مشخص شده |
strtok | بخش انتخاب شده از رشته |
validatestring | بررسی اعتبار یک متن رشته ای |
symvar | بیان متغیرهای نمادین در عبارت |
regexp | نمایش منظم (حساس به حروف) |
regexpi | مطابقت منظم (حساس به محتوا) |
regexprep | جایگزین رشته با استفاده از عبارت منظم |
regexptranslate | رشته را به عبارت منظم ترجمه می کند. |
تابع | کاربرد |
strcmp | مقایسه رشته ها (حروف حساس) |
strcmpi | مقایسه رشته ها (حساس به محدوده) |
strncmp | مقادیر اول n رشته ها (حروف حساس) را مقایسه می کند. |
strncmpi | مقادیر اول n رشته ها (حساس به حروف) |
تابع | کاربرد |
deblank | بلوک های خالی نوار از انتهای رشته |
strtrim | حذف فضای خالی پیش رو و عقب رشته |
lower | تبدیل رشته به حروف کوچک |
upper | تبدیل رشته با حروف بزرگ |
strjust | حالت Justify کاراکترها |
مثال های زیر برخی از توابع رشته ای فوق را نشان می دهد :
مثال – یک فایل اسکریپت ایجاد کرده و کد زیر را در آن تایپ می کنیم:
1 2 | A = pi*1000*ones(1,5); sprintf(' %f \n %.2f \n %+.2f \n %12.2f \n %012.2f \n', A) |
نتیجه ی اجرای کد فوق در متلب:
1 2 3 4 5 | ans = 3141.592654 3141.59 +3141.59 3141.59 000003141.59 |
مثال – یک فایل اسکریپت ایجاد کرده و کد زیر را در آن تایپ می نمائیم:
1 2 3 4 5 6 7 8 | %cell array of strings str_array = {'red','blue','green', 'yellow', 'orange'}; % Join strings in cell array into single string str1 = strjoin(str_array, "-") str2 = strjoin(str_array, ",") |
نتیجه ی اجرای کد فوق در متلب بصورت زیر خواهد بود :
1 2 | str1 = red-blue-green-yellow-orange str2 = red,blue,green,yellow,orange |
مثال – یک فایل اسکریپت ایجاد کرده و کد زیر را در آن تایپ می نمائیم:
1 2 3 4 5 6 7 8 9 10 11 12 | students = {'Zara Ali', 'Neha Bhatnagar', ... 'Monica Malik', 'Madhu Gautam', ... 'Madhu Sharma', 'Bhawna Sharma',... 'Nuha Ali', 'Reva Dutta', ... 'Sunaina Ali', 'Sofia Kabir'}; % The strrep function searches and replaces sub-string. new_student = strrep(students(8), 'Reva', 'Poulomi') % Display first names first_names = strtok(students) |
نتیجه ی اجرای کد فوق در متلب بصورت زیر خواهد بود :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | new_student = { [1,1] = Poulomi Dutta } first_names = { [1,1] = Zara [1,2] = Neha [1,3] = Monica [1,4] = Madhu [1,5] = Madhu [1,6] = Bhawna [1,7] = Nuha [1,8] = Reva [1,9] = Sunaina [1,10] = Sofia } |
مثال – یک فایل اسکریپت ایجاد کرده و کد زیر را در آن تایپ می نمائیم:
1 2 3 4 5 6 7 | str1 = 'This is test' str2 = 'This is text' if (strcmp(str1, str2)) sprintf('%s and %s are equal', str1, str2) else sprintf('%s and %s are not equal', str1, str2) end |
نتیجه ی اجرای کد فوق در متلب بصورت زیر خواهد بود :
1 2 3 | str1 = This is test str2 = This is text ans = This is test and This is text are not equal |
می دانیم که در واقع متلب یک نرم افزار محاسباتی و انجام معادلات و فرمول های ریاضی بوده و داده های عددی در آن نقش بسیاری دارند. با این وجود متلب از داده های کارکتری و رشته ها نیز پشتیبانی می کند از این رو مباحث این بخش را به آشنایی با نوع رشته در متلب اختصاص دادیم.