آکادمی سیم پاور

گام پانزدهم: رشته ها در متلب

گام پانزدهم: رشته ها در متلب

یک کاراکتر رشته ای در متلب کاملاً ساده ایجاد می شود.در حقیقت، ما داریم چندین بار استفاده می کنیم. برای مثال، شما (عبارت) زیر را در خط فرمان تایپ نمایید:

my_string = ‘ tutorial ‘ ‘ s point ’

472

متلب  تمام متغیرها را به عنوان آرایه ، و تمامی رشته ها را ، آرایه های کاراکتری در نظر می گیرد.به ما اجازه دهید با استفاده از دستورwhos    متغیرهای ایجاد شده در بالا را بررسی کنیم.متلب دستورات بالا را اجرا خواهد کرد و نتیجه زیر را نمایش می دهد:

whos

473

ترجیحاً، شما می توانید توابع تبدیل عددی مانند 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)

زمانی که شما فایل را ایجاد می کنید، نتیجه زیر نشان داده می شود:

474

آرایه کارکتر مستطیل

رشته های مورد بحث ما تاکنون آرایه های کاراکتری یک بعدی بودند. با این حال، ما  به ذخیره بیش از این نیاز داریم.ما به ذخیره داده متنی چند بعدی در برنامه مان نیاز داریم. این با ایجاد آرایه های کاراکتری مستطیلی به دست می آید.

ساده ترین راه ایجاد آرایه کاراکتری مستطیلی با الحاق 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’)

زمانی که فایل را اجرا می کنید، نتیجه زیر نشان داده می شود:

475

شما می توانید رشته های افقی را در هریک از روش های زیر ترکیب کنید:

  • متلب از عملگر اتصال [] و و برای جداسازی رشته های ورودی از کاما و فاصله خالی استفاده می کند. این روش هر فاصله پشتی در آرایه های ورودی را حفظ می کند.
  • از تابع اتصال،stract استفاده کنید.این روش فضاهای خالی قبلی در ورودی ها را پاک می کند.

مثال

یک فایل اسکریپت ایجاد کنید و کد زیر را در آن تایپ نمایید:

name =’zara ali ‘;

position =’sr. surgeon ‘;

worksat =’r n tagore cardiology research center’;

profile =[name ‘, ‘ position ‘, ‘ worksat]

profile = strcat(name,’, ‘, position,‘, ‘, worksat)

زمانی که فایل را اجرا می کنید، نتیجه زیر نشان داده می شود:

476

ترکیب رشته های خانه آرایه

از بحث قبلی ما ، این واضح است که ترکیب رشته ها با طول های مختلف  می تواند دردسازتر از تمام رشته های آرایه با طول یکسان باشد. ما  از فضاهای خالی با طول برابر در انتهای رشته ها استفاده می کنیم.

با این حال، روش موثرتر برای ترکیب رشته ها آرایه تبدیل  آرایه نتیجه به خانه آرایه است.

خانه آرایه متلب  می تواند اندازه هاو انواع داده  متفاوتی  در آرایه را نگهداری کند .خانه آرایه ها  راه انعطاف پذیرتری برای ذخیره سازی  رشته ها با طول  مختلف فراهم کرده است.

تابع cellstr آرایه کاراکتری را  به خانه آرایه از رشته ها تبدیل می کند.

مثال

name =’zara ali                   ‘;

position =’sr. surgeon            ‘;

worksat =’r n tagore cardiology research center’;

profile =char(name, position, worksat);

profile = cellstr(profile);

disp(profile)

زمانی که شما فایل را اجرا می کند، نتیجه زیر نمایش داده می شود:

477

توابع رشته ای در متلب

متلب امکان ایجاد، ترکیب، مقایسه و دستکاری، تجزیه  توابع مختلفی را  فراهم کرده است.

جدول زیر توصیف کوتاهی از توابع رشته ای را در متلب فراهم آورده است:

هدف تابع
توابعی برای ذخیره  متن در آرایه های کاراکتری، ترکیب آرایه های کارکتری و غیره.
ایجاد رشته ای از کاراکترهای خالی 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)


اتصال رشته ها
زمانی که شما فایل را اجرا می کنید، نتیجه زیر نشان داده می شود:

478

یک فایل اسکریپت ایجاد نمایید و کد زیر را در آن تایپ کنید:

%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)


پیدا کردن و جایگزینی رشته ها
زمانی که شما فایل را اجرا می کنید، نتیجه زیر نشان داده می شود:

479

یک فایل اسکریپت ایجاد نمایید و کد زیر را در آن تایپ کنید:

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)

480


مقایسه رشته ها

زمانی که شما فایل را اجرا می کنید، نتیجه زیر نشان داده می شود:

یک فایل اسکریپت ایجاد نمایید و کد زیر را در آن تایپ کنید:

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

زمانی که شما فایل را اجرا می کنید، نتیجه زیر نشان داده می شود:

481

 

خرید کتاب 28 گام موثر در فتح متلب

سعید عربعامری
من سعید عربعامری نویسنده کتاب 28 گام موثر در فتح متلب مدرس کشوری متلب و سیمولینک و کارشناس ارشد مهندسی برق قدرتم . بعد از اینکه دیدم سایتهای متعدد یک مجموعه کامل آموزش متلب و سیمولینک ندارند به فکر راه اندازی این مجموعه شدم
http://sim-power.ir

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *