در مقاله ای در وبسایت متلب شاپ ، به موضوع انواع داده ها در متلب پرداخته بودیم . در این مقاله می خواهیم با جزئیات بیشتری در مورد داده های رشته ای در متلب بحث کنیم.
متلب تمام متغیر ها را به صورت آرایه در نظر می گیرد در نتیجه ، یک متغیر رشته ای به صورت یک آرایه از کاراکتر ها در این نرم افزار محسوب می شود.
برای مثال به عبارت زیر توجه نمایید :
my_string = 'Tutorials Point' whos Name Size Bytes Class Attributes my_string 1x16 32 char
تبدیل رشته به کدهای عددی :
با استفاده از توابع unit8 و unit16 می توانیم یک عبارت رشته ای را به کد های عددی آن تبدیل کنیم . همچنین با استفاده از تابع char می توانیم عکس این عمل را انجام دهیم . به یک مثال در این رمینه توجه کنید :
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)
با اجرای این کد در متلب خواهیم داشت :
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
ساخت آرایه دو بعدی از رشته ها :
ساخت آرایه دو بعدی از رشته ها ، به دو روش امکان پذیر است :
روش اول با استفاده از قرار دادن رشته ها در []
روش دوم استفاده از تابع char
در روش اول باید طول تمام رشته ها با هم برابر باشد در غیر این صورت با خطا مواجه می شویم، اما در مورد روش دوم این خطا وجود ندارد و می توانیم در آرایه، از رشته هایی با طول متفاوت نیز استفاده کنیم . برای روشن شدن موضوع به مثال زیر توجه نمایید.
>> doc_profile = ['Ali Reza'; ... 'Ahmad'; ... 'Fateme'] Dimensions of matrices being concatenated are not consistent.
حال اگر با کاراکتر فاصله (space) طول رشته ها با هم برابر کنیم این خطا از بین خواهد رفت :
>> doc_profile = ['Ali Reza'; ... 'Ahmad '; ... 'Fateme '] doc_profile = Ali Reza Ahmad Fateme
در روش دوم ، به این صورت عمل می کنیم :
>> doc_profile = char('Ali Reza', 'Ahmad','Fateme') doc_profile = Ali Reza Ahmad Fateme
همچنین می توانیم عبارت رشته ای خود را در ابتدا در متغیر هایی ذخیره کنیم و سپس با استفاده از تابع strcat آرایه را بسازیم . به مثال زیر در این زمینه توجه نمایید :
name = 'Zara Ali '; position = 'Sr. Surgeon '; worksAt = 'R N Tagore Cardiology Research Center'; profile = [name ', ' position ', ' worksAt] profile = strcat(name, ', ', position, ', ', worksAt)
در خروجی خواهیم داشت :
profile = Zara Ali , Sr. Surgeon , R N Tagore Cardiology Research Center profile = Zara Ali,Sr. Surgeon,R N Tagore Cardiology Research Center
در ادامه مبحث داده های رشته ای در متلب ، به معرفی چند تابع می پردازیم
برخی توابع مربوط به رشته ها :
1- sprintf :
این تابع برای فرمت کردن داده های عددی در قالب رشته کاربرد دارد . به مثال زیر در مورد کاربرد این تابع توجه کنید :
A = pi*1000*ones(1,5); sprintf(' %f \n %.2f \n %+.2f \n %12.2f \n %012.2f \n', A)
هنگامی که برنامه را اجرا کنید نتیجه زیر حاصل خواهد شد :
ans = 3141.592654 3141.59 +3141.59 3141.59 000003141.59
2- تابع strjoin :
این تابع برای تلفیق رشته ها کاربرد دارد .مثال زیر چگونگی عملکرد این تابع را نشان میدهد :
%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, ",")
در خروجی خواهیم داشت :
str1 = red-blue-green-yellow-orange str2 = red,blue,green,yellow,orange
3- تابع strrep :
با استفاده از این تابع می توانیم یک رشته را در میان چند رشته پیدا کرده و با رشته ی دیگر جایگزین نماییم ، برای روشن شدن نحوه عملکرد این تابع پرکاربرد، به مثال زیر توجه نمایید :
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')
کد بالا ، هشتمین رشته را یافته و مقدار poulomi را با به جای reva جایگزین کرده است .