در آموزش انواع داده ها در متلب را بشناسید با اصلی ترین داده هایی که در متلب وجود دارد آشنا شدید. در آنجا توضیح دادیم که در متلب هم متغیرهای عددی داریم و هم متغیرهایی که کاراکترها را در خود ذخیره می کنند. اشاره شد که وقتی تعدادی از این کاراکترها در کنار هم قرار بگیرند، یک رشته یا string را ایجاد می کنند.
در طول کدها و برنامه هایی که با آنها سر و کار دارید، حتما بارها نیاز خواهید داشت که این متغیرها را به هم تبدیل نمایید. مثلا اگر بخواهید در خروجی برنامه یک متن ظاهر شود و در وسط متن مقدار یکی از متغیرهای عددی شما هم نمایش داده شود، باید آن متغیر عددی را ابتدا به یک رشته یا string تبدیل کنید تا مشکلی ایجاد نشود. بحث کامل درباره این موضوع را در مقاله 3 کاربرد مهم دستور disp در متلب به همراه مثال آورده شده است.
گاهی هم بعضی از اعداد را به صورت متنی در اختیار دارید. اگر بخواهید آن اعداد را در عملیات ریاضی به کار ببرید، باید ابتدا به داده های عددی تبدیل کنید تا قابلیت حضور در عملیات های ریاضی را داشته باشند.
برای تبدیل متغیر عددی به رشته ای از کاراکترها از num2str (یعنی: number to string) و برای تبدیل متغیر هایی که حاوی رشته ای از کاراکترها و به صورت متنی هستند به داده های عددی از str2num استفاده می کنیم.
تبدیل عدد به رشته با دستور num2str در متلب
برای تبدیل یک عدد به رشته کافی است که آن را وارد تابع num2str کنیم. مثال زیر به این موضوع پرداخته است.
مثال: قصد داریم متغیر عددی a را به یک رشته تبدیل کنیم. یعنی اگر تا به حال 20 یک عدد بود، حالا دیگر صرفا شامل دو کاراکتر 2 و 0 خواهد بود که معنای عددی نخواهد داشت. همانطور که در کد زیر می بینید در متغیر b، 20 در بین دو علامت ‘ قرار گرفته که بیانگر ماهیت متنی آن است.
همانطور که می دانید با استفاده از تابع class می توانیم نوع هر کدام از متغیرها را تعیین نماییم. مشاهده می کنید که متغیر a از نوع عددی (در اینجا double) و متغیر b از نوع char است. (یعنی کاراکتر. و رشته ها مجموعه ای کاراکترها هستند.)
تبدیل رشته به عدد با دستور str2num در متلب
اگر بخواهیم یک متغیر متنی شامل کاراکترها را به عدد تبدیل کنیم باید از تابع str2num استفاده نماییم. به مثال زیر دقت کنید.
مثال: عدد 200 به صورت یک استرینگ شامل 3 کاراکتر در متغیر b ذخیره شده است. در این حالت نمی توانیم هیچ عمل ریاضی روی آن انجام دهیم. (مثلا نمی توانیم آن را در عددی ضرب کنیم و یا با اعداد دیگر جمع نماییم.) با استفاده از دستور str2num رشته ی 200 را به یک عدد تبدیل می کنیم و آن را داخل متغیر c می ریزیم.
ملاحظه می کنید که اگر با استفاده از دستور class نوع هر متغیر را به دست بیاوریم به نتایج زیر می رسیم.
تبدیل همزمان چند عدد به رشته در متلب
با استفاده از تابع های str2num و num2str می توانیم همزمان چند عدد را به استرینگ تبدیل کنیم یا برعکس. دقت کنید که برای تبدیل همزمان چند عدد، هر عدد باید در یک ردیف بردار باشد. یعنی در واقع یک بردار ستونی داشته باشیم. در غیر این صورت همه اعداد یک ردیف، در کنار هم قرار می گیرند و یک رشته را می سازند. مثال های زیر را در نظر بگیرید.
مثال: فرض کنید تعدادی از اعداد در بردار سطری a وجود دارند که قصد داریم همه آنها را به کاراکترهای متنی تبدیل کنیم. در اینجا هم به شکل زیر از تابع num2str استفاده می کنیم.
همه اعداد در یک رشته قرار گرفتند و از تک تک آنها رشته یا string به دست نیامد. در مثال زیر این کار اصلاح شده است.
مثال: این بار اعداد مثال بالا را در یک بردار ستونی قرار داده ایم.
همانطور که می بینید از هر عدد یک رشته ساخته شد.
امیدوارم مباحث این قسمت هم برای شما مفید بوده باشد. اگر سوال یا ابهامی باقی مانده در پایین همین پست آن را مطرح کنید.
من میخوام یه ماتریس رشته ای رو به عددی تبدیل کنم میتونید کمکم کنید.
EX1 =
[ -(2^(1/2)*(2 – 2^(1/2))^(1/2))/4, -(2^(1/2)*(2^(1/2) + 2)^(1/2))/4, 2^(1/2)/2, 2^(1/2)/2]
[ (2^(1/2) + 2)^(1/2)/2, -(2 – 2^(1/2))^(1/2)/2, 0, 1]
[ (2^(1/2)*(2 – 2^(1/2))^(1/2))/4, (2^(1/2)*(2^(1/2) + 2)^(1/2))/4, 2^(1/2)/2, 2^(1/2)/2]
[ 0, 0, 0, 1]