گام پانزدهم: رشته ها در متلب
یک کاراکتر رشته ای در متلب کاملاً ساده ایجاد می شود.در حقیقت، ما داریم چندین بار استفاده می کنیم. برای مثال، شما (عبارت) زیر را در خط فرمان تایپ نمایید:
my_string = ‘ tutorial ‘ ‘ s point ’
متلب تمام متغیرها را به عنوان آرایه ، و تمامی رشته ها را ، آرایه های کاراکتری در نظر می گیرد.به ما اجازه دهید با استفاده از دستورwhos متغیرهای ایجاد شده در بالا را بررسی کنیم.متلب دستورات بالا را اجرا خواهد کرد و نتیجه زیر را نمایش می دهد:
whos
ترجیحاً، شما می توانید توابع تبدیل عددی مانند 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_l6bit = uintl6(my_string)%l6-bit ascii values
str_back_to_char =char(str_l6bit)
زمانی که شما فایل را ایجاد می کنید، نتیجه زیر نشان داده می شود:
آرایه کارکتر مستطیل
رشته های مورد بحث ما تاکنون آرایه های کاراکتری یک بعدی بودند. با این حال، ما به ذخیره بیش از این نیاز داریم.ما به ذخیره داده متنی چند بعدی در برنامه مان نیاز داریم. این با ایجاد آرایه های کاراکتری مستطیلی به دست می آید.
ساده ترین راه ایجاد آرایه کاراکتری مستطیلی با الحاق 2 یا چند آرایه کاراکتر یک بعدی است که به صورت افقی یا عمودی مورد نیاز است.
شما می توانید رشته های عمودی را با هر یک از راه های زیر ترکیب کنید:
- متلب عملگر اتصال[] و برای جداسازی هر سطر از (;) استفاده می کند. لطفاً توجه نمایید در هر روش سطری باید تعداد یکسانی از کاراکترها را دربر داشت. برای رشته های با طول مختلف، شما باید پد با فضای کاراکترها را مورد نیاز قرار دهید .
- استفاده از تابع char . اگر رشته طول مختلف دارند، پدهای char رشته های کوتاه با فاصله های عقب تری هستند بنابراین هر سطر کاراکترهایی با تعداد یکسان دارد.
مثال
doc_profile =[‘zara ali ‘;…
‘sr. surgeon ‘ ;…
‘r n tagore cardiology research center’]
dociprofile =char(‘zara ali’,’sr. surgeon’,…
‘rn tagore cardiology research center’)
زمانی که فایل را اجرا می کنید، نتیجه زیر نشان داده می شود:
شما می توانید رشته های افقی را در هریک از روش های زیر ترکیب کنید:
- متلب از عملگر اتصال [] و و برای جداسازی رشته های ورودی از کاما و فاصله خالی استفاده می کند. این روش هر فاصله پشتی در آرایه های ورودی را حفظ می کند.
- از تابع اتصال،stract استفاده کنید.این روش فضاهای خالی قبلی در ورودی ها را پاک می کند.
مثال
یک فایل اسکریپت ایجاد کنید و کد زیر را در آن تایپ نمایید:
name =’zara ali ‘;
position =’sr. surgeon ‘;
worksat =’r n tagore cardiology research center’;
profile =[name ‘, ‘ position ‘, ‘ worksat]
profile = strcat(name,’, ‘, position,‘, ‘, worksat)
زمانی که فایل را اجرا می کنید، نتیجه زیر نشان داده می شود:
ترکیب رشته های خانه آرایه
از بحث قبلی ما ، این واضح است که ترکیب رشته ها با طول های مختلف می تواند دردسازتر از تمام رشته های آرایه با طول یکسان باشد. ما از فضاهای خالی با طول برابر در انتهای رشته ها استفاده می کنیم.
با این حال، روش موثرتر برای ترکیب رشته ها آرایه تبدیل آرایه نتیجه به خانه آرایه است.
خانه آرایه متلب می تواند اندازه هاو انواع داده متفاوتی در آرایه را نگهداری کند .خانه آرایه ها راه انعطاف پذیرتری برای ذخیره سازی رشته ها با طول مختلف فراهم کرده است.
تابع cellstr آرایه کاراکتری را به خانه آرایه از رشته ها تبدیل می کند.
مثال
name =’zara ali ‘;
position =’sr. surgeon ‘;
worksat =’r n tagore cardiology research center’;
profile =char(name, position, worksat);
profile = cellstr(profile);
disp(profile)
زمانی که شما فایل را اجرا می کند، نتیجه زیر نمایش داده می شود:
توابع رشته ای در متلب
متلب امکان ایجاد، ترکیب، مقایسه و دستکاری، تجزیه توابع مختلفی را فراهم کرده است.
جدول زیر توصیف کوتاهی از توابع رشته ای را در متلب فراهم آورده است:
هدف | تابع |
توابعی برای ذخیره متن در آرایه های کاراکتری، ترکیب آرایه های کارکتری و غیره. | |
ایجاد رشته ای از کاراکترهای خالی | blanks |
ایجاد خانه آرایه ای رشته ای از آرایه کارکاکتری | cellstr |
تبدیل به آرایه کاراکتری(رشته) | char |
تعیین می کند که ورودی خانه آرایه رشته ای است | iscellstr |
تعیین عنصر در آرایه کاراکتری | ischar |
فرمت داده برای رشته | sprint |
پیوند افقی رشته ها | stract |
اتصال رشته ها در خانه آرایه برای رشته های مجرد | strjoin |
توابعی برای شناسایی بخش های رشته ها، پیدا کردن و جایگزینی زیر رشته | |
تعیین می کند که آرایه کاراکتری است. | ischar |
عناصر آرایه که حروف الفبا هستند | isletter |
عناصر آرایه که فضا کاراکترها هستند | isspace |
تعین می کند که مجموعه مشخص شده رشته است. | isstrprop |
قالب بندی داده رشته ای را می خواند | sscanf |
رشته ای را در رشته دیگر پیدا می کند | strfind |
رشته ای را پیدا و در زیر رشته دیگر جایگزین می کند | strrep |
رشته دوبخشی در جای مشخص | strsplit |
انتخاب بخش هایی از رشته | strtok |
بررسی اعتبار رشته متنی | validatestring |
نماد متغیرها در عبارت را تعیین می کند. | symvar |
عبارت منظم یک جور(مورد حساس) | regexp |
عبارت نامنظم یک جور(مورد غیر حساس) | regexpi |
جایگزینی رشته با عبارت منظم | regexprep |
ترجمه رشته به عبارت منظم | regexptranslate |
توابعی برای مقایسه رشته ها | |
مقایسه رشته(مورد حساس) | strcpm |
مقایسه رشته(مورد بدون حساسیت) | strcmpi |
مقایسه n کاراکترهای اول از رشته ها(مورد حساس) | strncmp |
مقایسه n کاراکترهای اول از رشته(مورد بدون حساسیت) | strncmpi |
فاصله خالی از انتهای رشته | deblank |
پاک کردن فضای خالی رشته از مقدم و موخر رشته | strtrim |
تبدیل رشته به حروف کوچک | lower |
تبدیل رشته به حروف بزرگ | upper |
توجیه آرایه کاراکتری | strjust |
قالب های رشته ای
یک فایل اسکریپت ایجاد نمایید و کد زیر را در آن تایپ کنید:
a = pi*1000*ones(1,5);
sprintf(‘ %f \n %.2f \n %+.2f \n %l2.2f \n %ol2.2f \n‘, a)
اتصال رشته هازمانی که شما فایل را اجرا می کنید، نتیجه زیر نشان داده می شود:
یک فایل اسکریپت ایجاد نمایید و کد زیر را در آن تایپ کنید:
%cell array of strings
str_array ={‘red‘,‘blue‘,‘green‘,‘yellow‘,‘orange‘};
%join strings in cell array into single string
str1 = strjoin(“-“, striarray)
str2 = strjoin(“,”, striarray)
پیدا کردن و جایگزینی رشته هازمانی که شما فایل را اجرا می کنید، نتیجه زیر نشان داده می شود:
یک فایل اسکریپت ایجاد نمایید و کد زیر را در آن تایپ کنید:
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)
مقایسه رشته ها
زمانی که شما فایل را اجرا می کنید، نتیجه زیر نشان داده می شود:
یک فایل اسکریپت ایجاد نمایید و کد زیر را در آن تایپ کنید:
strl =’this is test’
str2 =’this is text’
if(strcmp(strl, str2))
sprintf(‘%s and %s are equal’, strl, str2)
else
sprintf(‘%s and %s are not equal’, strl, str2)
end
زمانی که شما فایل را اجرا می کنید، نتیجه زیر نشان داده می شود:
خرید کتاب 28 گام موثر در فتح متلب