رشته در متلب
به نام خدا و سلام.
به جلسه چهاردهم از سری جلسات آموزش کامل متلب خوش آمدید. آموزش صفر تا صد متلب از وبسایت متلبپلاس ارائه میشود. در جلسات گذشته به موضوعات مختلف ریاضی و آرایههای عددی پرداختیم. حال نوبت به معرفی متن و نوشته در متلب میرسد. در این جلسه به معرفی رشته متنی در نرم افزار متلب میپردازیم. نحوه ایجاد رشته متنی، اتصال (الحاق) رشتهها، اندیس دهی رشتهها و… از مباحث این جلسه هستند.
با متلب پلاس همراه باشید.
مقدمهای بر رشته در متلب
در این جلسه از آموزش برنامه متلب، با رشتههای متنی آشنا میشویم. در جلسات گذشته به مباحث مختلفی پیرامون بردار و ماتریس در متلب، توابع ریاضی و… پرداختیم. اکنون نوبت معرفی متن در نرم افزار متلب رسیده است. استفاده از متن در نرم افزار متلب اهمیت بالایی دارد. عناوین نمودارها، محورها، کار با دادههای متنی و… از این جمله هستند. مهمترین نکتهای که در بحث رشته متنی در متلب وجود دارد این است که متلب با آنها به صورت عدد رفتار میکند. در واقع هر حرف یا کلمه در بطن خود یک عدد مشخص میباشد. اگر با سایر زبانهای برنامه نویسی آشنایی داشته باشید حتما کد اسکی (ASCII) به گوشتان خورده است. عبارت ascii مخفف American Standard Code for Information Interchange است. طبق این استاندارد، به تمامی کاراکترهای برنامه نویسی از جمله حروف، اعداد و علامتها !@#$%^&*()_+-=/.؛, یک کد اختصاص داده شد. جدول کامل کدهای اسکی در شکل زیر ارائه شدهاست.
مثلا براساس جدول فوق، حرف M دارای کد 77 یا حرف A دارای کد 65 میباشد. پس هنگامی که در متلب یک رشته متنی ذخیره میکنیم، در حقیقت متلب کد آنها را ذخیره میکند. حال به روش ایجاد رشته متنی در متلب میپردازیم.
لطفا نرم افزار متلب را باز کنید و تمام مثالهایی که در ادامه میآیند را شما هم بنویسید!
ایجاد رشته متنی در متلب
برای ایجاد رشته متنی در متلب کافیست متن موردنظر را بین ‘ ‘ قرار دهیم. به همین راحتی رشته متنی ایجاد میشود. مثلا یک رشته متنی به نام matlabplus ایجاد میکنیم.
a = 'matlabplus'
a =
matlabplus
حال برای اینکه ببینیم متلب عبارت فوق را چگونه درک کرده، کد اسکی آن را میگیریم. برای گرفتن کد اسکی یک رشته متنی در متلب از دستور double(‘name’) استفاده میکنیم. این دستور کدهای عبارت ‘name’ را میدهد. برای عبارت matlabplus داریم:
a = 'matlabplus';
double(a)
ans =
109 97 116 108 97 98 112 108 117 115
اگر به جدول کدهای اسکی دقت کنید مثلا حرف m که دارای کد 109 است در ابتدای این اعداد میباشد. در واقع متلب با کنارهم قرار دادن اعداد فوق، عبارت متنی ساخته است. با توجه به اینکه ans یک آرایه عددی (بردار) است، میتوان عملیات ریاضی روی آن انجام داد. البته عملیات ریاضی را روی خود a که رشته متنی matlabplus در آن ذخیره شده هم میتوان انجام داد. مثلا:
a = 'matlabplus';
a + 1
ans =
110 98 117 109 98 99 113 109 118 116
تبدیل کد اسکی به متن و برعکس
در مثالهای فوق دیدیم که چگونه کد اسکی یک رشته متنی را دریافت کنیم. کافی بود از دستور double استفاده شود. اما فرآیند برعکس آن نیز مهم است. به عبارت دیگر، چطور یک کد اسکی را به متن تبدیل کنیم. برای این کار از دستور char(A) کمک میگیریم. این دستور عدد یا آرایهای که به آن داده شود را به متن تبدیل میکند.
char(65)
ans =
A
حال یک مثال دیگر ارائه میکنیم. ابتدا کد اسکی عبارت matlabplus را استخراج کرده و 5 واحد اضافه میکنیم. سپس از این کد اسکی جدید یک عبارت متنی میسازیم.
a = 'matlabplus';
b = a + 5;
char(b)
ans =
rfyqfguqzx
مشاهده میکنید که با افزودن 5 واحد به کد اسکی، یک عبارت بی معنی ایجاد شد.
استفاده از عملگر دو نقطه برای رشته متنی
همانطور که ذکر شد، رشتههای متنی در حقیقت آرایهای از اعداد هستند. بنابراین میتوان از عملگر دو نقطه : برای ایجاد یک رشته متن استفاده کرد. مثلا میتوان بجای نوشتن abcdefghijklmnopqrstuvwxyz از دستور ‘a’:’z’ استفاده کرد.
a = 'a':'z'
a =
abcdefghijklmnopqrstuvwxyz
هر آنچه برای عملگر دونقطهای در ایجاد بردار و ماتریس در متلب ذکر شد، درباره متن نیز صادق است. مثلا میتوان گام (فاصله) را نیز وارد کرد. در مثال زیر حروف a تا z با گام 3 ارائه شده.
a = 'a':3:'z'
a =
adgjmpsvy
بزرگ کردن حروف رشته متنی با دستور upper
برای اینکه تمام حروف یک رشته متنی را به حروف بزرگ تبدیل کنیم از دستور upper کمک میگیریم. کافیست رشته موردنظر را درون این دستور بنویسیم.
a = 'matlabplus';
upper(a)
ans =
MATLABPLUS
کوچک کردن حروف رشته متنی با دستور lower
برای تبدیل حروف یک رشته متنی به حروف کوچک از دستور lower کمک میگیریم. کافیست رشته متنی موردنظر را درون این دستور بنویسیم.
a = 'MATLABPLUS';
lower(a)
ans =
matlabplus
اتصال رشتههای متنی در متلب
برای بهم چسباندن چند رشته متن کافیست آنها را کنار هم در یک براکت قرار دهیم. دقت کنید که اگر نیاز به فاصله (Space) بین عبارتهای متنی دارید، آن را نیز قرار دهید.
a = 'Hello';
b = 'matlabplus';
c = '.com';
[a b c]
ans =
Hellomatlabplus.com
[a ' ' b c]
ans =
Hello matlabplus.com
اندیس گذاری رشتهها در متلب
منظور از اندیس گذاری رشتهها در متلب، فراخوانی بخشی از یک رشته متنی است. مشابه با آنچه در اندیس گذاری آرایهها (بردار و ماتریس) در جلسه پنجم ارائه شد. مثلا عبارت متنی matlabplus دارای 10 عضو است. عضو 7 ام این رشته برابر است با:
a = 'matlabplus';
a(7)
ans =
p
میتوان بجای یک عنصر، چندین عنصر از یک رشته متنی را نیز استخراج کرد. مثلا برای عبارت matlabplus میتوان بخش matlab را جدا کرد. برای این کار بایستی درایه یک تا 6 را جدا کرد.
a = 'matlabplus';
a(1:6)
ans =
matlab
محاسبه طول یک رشته متنی در متلب
حال که صحبت از اندیس گذاری رشتههای متنی در متلب شد، بهتر است به محاسبه طول رشته هم اشاره شود. برای محاسبه طول یک آرایه عددی از دستور length و size استفاده میکردیم. این دستورات برای رشتههای متنی هم برقرار اند. چرا که رشتههای متنی هم به نوعی آرایه عددی با کد اسکی هستند. دستور length طول یک رشته متنی را ارائه میکند. دستور size نیز ابعاد رشته عددی را میدهد.
a = 'matlabplus';
length(a)
ans =
10
size(a)
ans =
1 10
جستجو روی رشته متنی با strfind
برای جستجوی یک حرف یا کلمه از یک رشته متنی در متلب از دستور strfind(str,pattern) استفاده میکنیم. شکل قدیمی این دستور findstr بوده که با دستور strfind جایگزین شدهاست. البته هر دو شکل در متلب وجود دارند اما در نسخههای جدید، پیشنهاد متلب استفاده از strfind است. برای استفاده از strfind(str,pattern) کافیست رشته متنی str را مشخص کرده و متن یا الگوی موردنظر را بجای pattern وارد کنید. مثلا در عبارت matlabplus به دنبال حرف a میگردیم.
strfind('matlabplus','a')
ans =
2 5
متلب میگوید که در درایه شماره 2 و 5 از عبارت matlabplus حرف a وجود دارد. این ادعا کاملا صحیح است. همچنین میتوانیم در یک رشته متنی به دنبال کلمه باشیم. مثلا
a = 'matlabplus';
strfind(a,'plus')
ans =
7
همانطور که مشاهده میکنید، متلب کلمه plus را در matlabplus پیدا کرده و شروع آن را درایه 7 ام میداند.
تغییر بخشی از یک رشته متنی با آدرس دهی
افزودن متن جدید به رشته متنی در متلب
فرض کنید یک عبارت متنی مانند matlabplus داریم. میخواهیم بجای حرف t در این رشته متنی، حرف T قرار دهیم. برای این کار ابتدا شماره درایه این حرف را استخراج میکنیم. سپس به آن شماره، حرف جدید را اختصاص میدهیم. به مثلا زیر دقت کنید.
a = 'matlabplus';
b = strfind(a,'t')
b =
3
a(b) = 'T'
a =
maTlabplus
فرض کنید یک عبارت متنی مانند matlabplus داریم. میخواهیم بجای حرف t در این رشته متنی، حرف T قرار دهیم. برای این کار ابتدا شماره درایه این حرف را استخراج میکنیم. سپس به آن شماره، حرف جدید را اختصاص میدهیم. به مثلا زیر دقت کنید.
a = 'matlabplus';
a(1:3) = 'MAT'
a =
MATlabplus
حذف بخشی از یک رشته متنی در متلب
برای حذف بخشی از یک رشته متنی در متلب، مشابه با افزودن متن جدید عمل میکنیم. تنها تفاوت این است که بجای متن جدید، از براکت خالی استفاده میکنیم. براکت خالی در متلب برای ایجاد عبارت تهی استفاده میشود. چنانچه بخشی از یک رشته متنی را مساوی با تهی قرار دهیم به معنای حذف آن بخش است. مثلا برای حذف lab از عبارت matlabplus داریم:
a = 'matlabplus';
a(4:6) = []
a =
matplus
مقایسه رشتههای متنی در متلب
امکان مقایسه رشتههای متنی نیز در متلب وجود دارد. در اینجا دو دستور پرکاربرد برای مقایسه رشته متنی در متلب معرفی میکنیم. تفاوت این دو دستور در حساسیت به حروف کوچک و بزرگ است.
دستور strcmp در متلب
دستور strcmp در متلب (که مخفف string compare است) برای مقایسه دو رشته متنی با حساسیت به کوچک یا بزرگ بودن حروف بکار میرود. در واقع در این دستور a با A متفاوت است. خروجی صفر به معنای برابر نبودن و خروجی یک به معنای یکسان بودن دو رشته است. به مثال زیر دقت کنید.
a = 'matlabplus';
b = 'Matlabplus';
strcmp(a,b)
ans =
0
با توجه به اینکه حرف m در رشته b به صورت بزرگ نوشته شده، دو عبارت a و b برابر نیستند.
دستور strcmpi در متلب
چنانچه کوچک یا بزرگ بودن حروف برای ما اهمیتی نداشته باشد از دستور strcmpi استفاده میکنیم. در واقع دستور strcmpi در متلب برای مقایسه دو رشته متنی بدون حساسیت به کوچک یا بزرگ بودن حروف بکار میرود. در این دستور a با A یکسان است. خروجی صفر به معنای برابر نبودن و خروجی یک به معنای یکسان بودن دو رشته است. به مثال زیر دقت کنید.
a = 'matlabplus';
b = 'Matlabplus';
strcmpi(a,b)
ans =
1
تمرینات این جلسه
در انتهای این جلسه 3 تمرین متلب مربوط به مباحث این جلسه ارائه شده است. لطفا این تمرینها را حل کرده و با پاسخ آن مقایسه کنید. پاسخ تمرینات متلب این جلسه در کانال تلگرام متلب پلاس منتشر میشود. از آیکونهای سمت راست صفحه میتوانید در این کانال عضو شوید.
تمرین اول) عبارت متنی ‘Free Matlab Course’ را ایجاد کرده و سپس عبارت Free و فاصله بین Matlab و Course را حذف کنید.
تمرین دوم) در عبارت ‘operating system’ حروف e را به E تبدیل کنید.
تمرین سوم) کد اسکی [72 105] را به رشته متنی تبدیل کنید.
جمعبندی
خب، جلسه چهاردهم از سری جلسات آموزش متلب به پایان رسید. این جلسه درباره رشتههای متنی در متلب صحبت کردیم. نحوه ایجاد رشته متنی، اتصال رشتهها به هم، اندیس گذاری و فراخوانی بخشی از رشته متنی، افزودن یا حذف بخشی از رشته متنی و... از مباحث این جلسه بود. سعی ما انتقال مفاهیم به زبانی ساده و ارائه مثالهای متنوع بود. در انتها چند تمرین برای یادگیری بیشتر به شما واگذار کردیم که پاسخ آنها در کانال تلگرامی متلب پلاس وجود دارد. بی صبرانه منتظر نظرات، سوال و ابهامات شما عزیزان هستیم. سعی میکنیم تا هرگونه سوال یا ابهامی که در این باره دارید را پاسخ دهیم.
توصیه میشود که حتما تمرینات این جلسه را انجام بدید و اگر سوال و ابهامی دارید در بخش نظرات (پایین همین صفحه) به ما بگید. از فهرست سمت راست هم میتونید به بقیه جلسات دسترسی داشته باشید.
دیدگاهتان را بنویسید