مشخصات مقاله
رشته در متلب
Strings
ایجاد کاراکتر رشته در متلب، به نسبت کار ساده ای می باشد. در حقیقت، در متلب کاربرد فراوانی دارد. به عنوان مثال در پنجره دستور command عبارت زیر را می نویسیم.
my_string = 'Tutorial's Point'
متلب گزاره بالا را اجرا کرده و عبارت زیر را به عنوان نتیجه بر می گرداند.
my_string = Tutorial's Point
متلب تمامی متغیر ها را به عنوان آرایه و تمامی رشته ها را به عنوان آرایه های کاراکتر در نظر می گیرد. از دستور whos برای بازبینی متغیر های ایجاد شده استفاده می کنیم.
whos
متلب گزاره بالا را اجرا کرده و عبارت زیر را به عنوان نتیجه بر می گرداند.
Name Size Bytes Class Attributes
my_string 1x16 32 char
جالب توجه است که می توانید از توابع تبدیل عددی مانند uint8 یا uint16 برای تبدیل به کاراکتر ها در رشته به کد های عددی دیگر استفاده کرد. تابع char، بردار integer (اعداد صحیح) را به کاراکتر تبدیل می کند.
یک فایل اسکریپت ایجاد کنید و عبارت زیر را در آن تایپ کنید.
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
آرایه کاراکتر مستطیلی
رشته ها آرایه های تک بعدی هستند و ما به آرایه هایی با بعد های بیشتری نیازمند هستیم. ما به داده های متنی با بعد های بیشتری در برنامه خود نیازمندیم. این کار با ایجاد آرایه کاراکتر مستطیلی انجام می شود.
راهکار ساده ایجاد آرایه کاراکتر مستطیلی، ا به هم پیوستن دو یا چند آرایه کاراکتری تک بعدی به صورت عمودی یا افقی می باشد.
می توان به روش های زیر آرایه ها را به صورت عمودی با هم ترکیب کرد.
1) با استفاده از عملگر [] و جدا کردن سطر با استفاده از (;) می توان آرایه مستطیلی را ایجاد کرد. یاد آوری می کنیم که در این روش سطر ها از تعداد یکسان کاراکتر برخوردار باشند. برای رشته ها با طول های مختلف، باید با کاراکتر space (فاصله) این رشته ها را با هم، هم طول کنیم.
2) استفاده از تابع char. اگر رشته ها با طول های مختلف باشند، رشته ها را به صورت دنباله در کنار هم می نویسیم و رشته با طول کمتر را در ابتدای دنباله می نویسیم و این ترتیب افزایشی طول را ادامه می دهیم.
مثال
فایل اسکریپت را را ایجاد کرده و عبارت زیر را در آن می نویسیم.
doc_profile = ['Zara Ali '; ...
'Sr. Surgeon '; ...
'R N Tagore Cardiology Research Center']
doc_profile = char('Zara Ali', 'Sr. Surgeon', ...
'RN Tagore Cardiology Research Center')
وقتی که فایل بالا را اجرا می کنیم، نتیجه زیر را خواهیم دید.
doc_profile =
Zara Ali
Sr. Surgeon
R N Tagore Cardiology Research Center
doc_profile =
Zara Ali
Sr. Surgeon
RN Tagore Cardiology Research Center
همچنین می توان به روش های زیر آرایه ها را به صورت افقی با هم ترکیب کرد.
1) با استفاده از عملگر [] و جدا کردن ستون با استفاده از (,) می توان آرایه مستطیلی را ایجاد کرد. یاد آوری می کنیم که در این روش سطر ها از تعداد یکسان کاراکتر برخوردار باشند. برای رشته ها با طول های مختلف، باید با کاراکتر space (فاصله) این رشته ها را با هم، هم طول کنیم.
2) با استفاده از تابع 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
ترکیب رشته ها به Cell Array (خانه های آرایه)
بنا به بحث های گذشته، واضح است که رشته ها با طول های مختلف با روش های بالا با هم ترکیب می شوند که در آن در انتهای هر رشته از کاراکتر space (فاصله) برای هم طول شدن استفاده کردیم.
یک روش کارآمد برای ترکیب رشته ها، تبدیل نتیجه آرایه به خانه های آرایه می باشد.
در متلب خانه آرایه، می تواند انواع و سایز های مختلف داده در یک آرایه را نگه دارد. خانه آرایه یک روش انعطاف پذیر برای تولید رشته ها با طول های مختلف می باشد. تابع cellstr یک آرایه کاراکتر را به خانه آرایه رشته ها تبدیل می کند.
مثال
یک فایل اسکریپت ایجاد کنید و عبارت زیر را در آن تایپ کنید.
name = 'Zara Ali ';
position = 'Sr. Surgeon ';
worksAt = 'R N Tagore Cardiology Research Center';
profile = char(name, position, worksAt);
profile = cellstr(profile);
disp(profile)
وقتی عبارت بالا اجرا می شود، خواهیم داشت.
{
[1,1] = Zara Ali
[2,1] = Sr. Surgeon
[3,1] = R N Tagore Cardiology Research Center
}
توابع رشته ای در متلب
متلب توابع رشته ای مختلفی را تولید، ترکیب، تجزیه، مقایسه و دستکاری می کند. جدول زیر توضیح مختصری از این توابع می باشد.
Function |
Purpose |
Functions for storing text in character arrays, combine character arrays, etc. |
|
blanks |
ایجاد رشته ای از کاراکتر خالی |
cellstr |
ایجاد خانه آرایه رشته ها از آرایه کاراکتر |
char |
تبدیل آرایه کاراکتر (رشته) |
iscellstr |
مشخص می کند که ورودی خانه آرایه رشته است |
ischar |
آرایه کاراکتر استitemمشخص می کند که آیا |
sprintf |
فرمت داده به رشته |
strcat |
ترکیب رشته های افقی |
strjoin |
اتصال رشته ها در خانه آرایه به رشته ساده |
Functions for identifying parts of strings, find and replace substrings |
|
ischar |
آرایه کاراکتر استitemمشخص می کند که آیا |
isletter |
عناصر آرایه ای که فقط شامل حروف هستند |
isspace |
عناصر آرایه ای که کاراکتر ها فاصله هستند |
isstrprop |
تعیین می کند که آیا رشته کتگوری مشخص شده است |
sscanf |
خواندن داده فرمت شده از رشته |
strfind |
پیدا کردن یک رشته در رشته دیگر |
strrep |
یافتن و جایگذاری زیر رشته ها |
strsplit |
رشته خرد شده در حائل مشخص شده |
strtok |
انتخاب قسمت هایی از رشته |
validatestring |
بازبینی اعتبار متن رشته |
symvar |
تعیین نماد متغیر ها در عبارت |
regexp |
(case sensitive)وصل کردن عبارت منظم |
regexpi |
(case insensitive)وصل کردن عبارت منظم |
regexprep |
جایگزین کردن رشته با استفاده از عبارت منظم |
regexptranslate |
تبدیل رشته به عبارت منظم |
Functions for string comparison |
|
strcmp |
(case sensitive)مقایسه رشته ها |
strcmpi |
(case sensitive) مقایسه رشته ها |
strncmp |
مقایسه n کاراکتر اول رشته ها (case sensitive) |
strncmpi |
(case insensitive) مقایسه n کاراکتر اول رشته ها |
Functions for changing string to upper- or lowercase, creating or removing white space |
|
deblank |
حذف کردن فضای خالی اضافی از انتهای یک رشته |
strtrim |
حذف کردن فضای خالی اضافی از ابتدا و انتهای یک رشته |
lower |
تبدیل رشته به حروف کوچک |
upper |
تبدیل رشته به حروف بزرگ |
strjust |
Justify آرایه کاراکتری |
به عنوان مثال بعضی از توابع بالا در پایین ذکر شده اند.
Formatting Strings
یک فایل اسکریپت باز کرده و عبارت زیر را در آن تایپ کنید.
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
Joining Strings
یک فایل اسکریپت باز کرده و عبارت زیر را در آن تایپ کنید.
%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
Finding and Replacing Strings
یک فایل اسکریپت باز کرده و عبارت زیر را در آن تایپ کنید.
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)
وقتی عبارت بالا اجرا شود، نتیجه به صورت زیر بیان می شود.
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
}
Comparing Strings
یک فایل اسکریپت باز کرده و عبارت زیر را در آن تایپ کنید.
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
وقتی عبارت بالا اجرا شود، نتیجه به صورت زیر بیان می شود.
str1 = This is test
str2 = This is text
ans = This is test and This is text are not equal