آموزش انواع داده ها در متلب (با مثال و نکات کاربردی)

MATLAB برای تعریف یک متغییر الزام خاصی ندارد. هرگاه MATLAB با یک نام متغیر جدید مواجه می شود، متغیر را ایجاد می کند و فضای حافظه مناسب را اختصاص می دهد.
اگر متغیر در حال حاضر وجود داشته باشد، MATLAB محتوی قبلی را با محتوای جدید جایگزین می کند و در صورت لزوم فضای ذخیره سازی جدید اختصاص می دهد.
مثلا:
Total = 42
عبارت بالا یک ماتریس ۱ در ۱ با نام ‘Total’ ایجاد می کند و مقدار ۴۲ را در آن ذخیره می کند.
انواع داده موجود در MATLAB
MATLAB پانزده نوع داده را فراهم می کند. هر نوع ، داده هایی را در قالب یک ماتریس یا آرایه ذخیره می کند. اندازه این ماتریس یا آرایه حداقل صفر بایت است و می تواند به یک ماتریس یا آرایه ای از هر اندازه بزرگ تبدیل شود. جدول زیر انواع متداول مورد استفاده در MATLAB را نشان می دهد –
مثال
یک فایل اسکریپت با کد زیر ایجاد کنید –
str = ‘Hello World!’
n = 2345
d = double(n)
un = uint32(789.50)
rn = 5678.92347
c = int32(rn)
حتما بخوانید: آموزش عملیات و نمایه سازی منطقی در نرم افزار متلب به زبان ساده
هنگامی که کد بالا کامپایل شده و اجرا می شود، نتیجه ی زیر را تولید می کند −
str = Hello World!
n = 2345
d = 2345
un = 790
rn = 5678.9
c = 5679
تبدیل نوع داده
MATLAB توابع مختلف برای تبدیل از یک نوع داده به دیگری فراهم می کند. جدول زیر توابع تبدیل نوع داده را نشان می دهد:
| تابع | هدف |
| char | تبدیل به کاراکتر رشته ای |
| int2str | تبدیل نوع اینتیجر(عدد صحیح) به استرینگ(رشته حروف) |
| mat2str | تبدیل ماتریس به رشته حرفی |
| num2str | تبدیل عدد به رشته حروف |
| str2double | تبدیل حروف به اعدد اعشاری دقت مضاعف |
| str2num | تبدیل رشته حروف به عدد |
| native2unicode | تبدیل بایت های عددی به کارکتر های یونیکد |
| unicode2native | تبدیل کاراکترهای یونی کد به بایت های عددی |
| base2dec | مبنای n را به مبنای ده تبدیل می کند |
| bin2dec | تبدیل اعداد باینری به دهدهی |
| dec2base | تبدیل اعداد دسیمال به مبنای دلخواه n |
| dec2bin | تبدیل اعداد دهدهی به باینری |
| dec2hex | تبدیل مبنای ده به مبنای شانزده |
| hex2dec | تبدیل مبنای شانزده به مبنای ده |
| hex2num | تبدیل مبنای شانزده به عدد اعشاری دقت مضاعف |
| num2hex | تبدیل عدد اعشاری به مبنای شانزده |
| cell2mat | تبدیل آرایه سلولی(ایندکس آرایه) به آرایه عددی |
| cell2struct | تبدیل آرایه سلولی به ساختار آرایه |
| cellstr | ایجاد یک رشته از آرایه کاراکترها |
| mat2cell | تبدیل یک آرایه به یک سلول آرایه با سایز متفاوت |
| num2cell | تبدیل یک آرایه به یک سلول آرایه با سایز ثابت |
| struct2cell | تبدیل یک ساختار به یک سلول آرایه |
تعیین انواع داده ها
MATLAB توابع مختلفی را برای تعریف نوع داده متغیرها فراهم می کند:
| تابع | هدف |
| is | تعیین وضعیت |
| isa | تعیین اینکه آیا ورودی یک شی از کلاس مشخصی است |
| iscell | تعیین اینکه ورودی سلولی از یک آرایه است |
| iscellstr | Determine whether input is cell array of strings |
| ischar | تعیین اینکه آیا کاراکتر است |
| isfield | تعیین اینکه آیا یک فیلد از یک ساختار است |
| isfloat | تعیین اینکه آیا ورودر یک داده با ممیز شناور است |
| ishghandle | شی ورودی یک شی گرافیکی است |
| isinteger | تعیین اینکه ورودی یک عدد صحیح است |
| isjava | تعیین اینکه وروی یک شی جاوا است |
| islogical | تعینن اینکه ورودی یک داده منطقی است |
| isnumeric | تعیین اینکه ورودی یک داده عددی (اعداد طبیعی) است |
| isobject | تعیین اینکه ورودی یک شی متلب است |
| isreal | چک کردن اینکه ورودی یک عدد حقیقی است |
| isscalar | تعیین اینکه ورودی اسکالر است |
| isstr | تعیین اینکه آیا ورودی آرایه حروف است |
| isstruct | تعیین اینکه ورودی آرایه ساختاری است |
| isvector | تعیین اینکه ورودی بردار است |
| class | کلاس شی را تعیین می کند |
| validateattributes | اعتبار آرایه را بررسی می کند |
| whos | لیست متغیرها موجود در پروژه ، با نوع و اندازه |
مثال
یک فایل اسکریپت با کد زیر ایجاد کنید −
x = 3
isinteger(x)
isfloat(x)
isvector(x)
isscalar(x)
isnumeric(x)
x = 23.54
پایگاه داده SQL Server رو قورت بده! بدون کلاس، سرعت 2 برابر، ماندگاری 3 برابر، پولسازی بلافاصله ... دانلود:
isinteger(x)
isfloat(x)
isvector(x)
isscalar(x)
isnumeric(x)
x = [1 2 3]
isinteger(x)
isfloat(x)
isvector(x)
isscalar(x)
x = ‘Hello’
isinteger(x)
isfloat(x)
isvector(x)
isscalar(x)
isnumeric(x)
حتما بخوانید: کجا و به چه دلیل باید از نرم افزار متلب استفاده کنیم یا نکنیم؟
وقتی فایل را اجرا میکنید، نتیجه زیر را تولید میکند:
x = 3
ans = 0
ans = 1
ans = 1
ans = 1
ans = 1
x = 23.540
ans = 0
ans = 1
ans = 1
ans = 1
ans = 1
x =
۱ ۲ ۳
ans = 0
ans = 1
ans = 1
ans = 0
x = Hello
ans = 0
ans = 0
ans = 1
ans = 0
کار با داده ها: نکات کاربردی
برای اینکه کار با دادهها در متلب برای شما ساده و ساختاریافته شود، باید چند مفهوم و ترفند کلیدی را بشناسید.
۱. همهچیز در متلب «ماتریس» است
مهمترین قانونی که باید در متلب به خاطر بسپارید این است: متلب هیچ تفاوتی بین یک عدد تکی (اسکالر)، یک لیست از اعداد (بردار) و یک جدول دو بعدی (ماتریس) قائل نمیشود.
وقتی شما مینویسید x = 5، متلب در پشت صحنه یک ماتریس $1 \times 1$ میسازد که فقط یک درایه (عدد ۵) داخل آن است. این دیدگاه به شما اجازه میدهد عملیات ریاضی را به جای تکتک اعداد، روی کل یک مجموعه داده به صورت همزمان انجام دهید.
۲. آشنایی با انواع دادههای پرکاربرد (Data Types)
متلب برای مدیریت انواع مختلف اطلاعات، ساختارهای متفاوتی دارد. برای مرتبسازی دادههای خود باید بدانید از کدام ساختار استفاده کنید:
| نوع داده | کاربرد به زبان ساده | مثال ظاهری در کد |
| آرایه عددی (Numeric Array) | برای ذخیره اعداد (صحیح یا اعشاری). پایه تمام محاسبات متلب. | [1, 2, 3.5, 4] |
| رشته متنی (String/Char) | برای ذخیره کلمات و متنها. (توصیه میشود از علامت نقل قول دوتایی "" برای استرینگ استفاده کنید). |
"Hello World" |
| آرایه سلولی (Cell Array) | شبیه یک کمد با کشوهای مختلف است. در هر کشو میتوانید هر چیزی بگذارید (یک کشو عدد، یک کشو متن، یک کشو ماتریس). با آکولاد {} تعریف میشود. |
{25, 'Tehran', [1 2 3]} |
| جدول (Table) | بهترین ابزار برای دادههای واقعی (مثل فایل اکسل). ستونها نام دارند و میتوانند شامل دادههای مختلف (سن، نام، حقوق) باشند. | readtable('data.csv') |
۳. ترفندهای حیاتی برای دستکاری دادهها
برای اینکه کدهایتان در متلب سریعتر اجرا شود و خطای کمتری داشته باشد، این سه اصل را رعایت کنید:
-
شمارهگذاری از ۱ شروع میشود (۱-Based Indexing): برخلاف زبانهایی مثل پایتون یا C که شمارش خانهها از صفر شروع میشود، اولین خانه هر آرایه یا ماتریس در متلب، خانه شماره ۱ است.
-
برداریسازی (Vectorization) به جای حلقهها: متلب برای کار با حلقههای تکرار (مثل
for) ساخته نشده و در اجرای آنها بسیار کند است. اگر میخواهید تمام اعداد یک لیست را ضرب در ۲ کنید، نیازی نیست تکتک آنها را در یک حلقه ضرب کنید. فقط بنویسیدA * 2. متلب خودش این کار را روی کل دادهها اعمال میکند. -
استفاده از عملگر نقطه (
.): اگر میخواهید دو ماتریس را «عنصر به عنصر» در هم ضرب یا تقسیم کنید (نه ضرب ماتریسی ریاضی)، حتماً باید قبل از علامت ضرب یا توان، یک نقطه بگذارید. مثلاًA .* BیاA .^ 2. فراموش کردن این نقطه، رایجترین خطای مبتدیان در متلب است.
۴. وارد کردن و ذخیره دادهها
-
وارد کردن از اکسل/CSV: بهترین دستور برای این کار
readtable('filename.xlsx')است. این دستور دادهها را با همان ساختار مرتب و با نام ستونها وارد متلب میکند. (دستور قدیمیxlsreadدیگر توصیه نمیشود). -
ذخیره محیط کار: اگر محاسبات سنگینی انجام دادهاید، میتوانید تمام متغیرهای ساخته شده در حافظه (Workspace) را با دستور
save('mydata.mat')در یک فایل فشرده ذخیره کنید تا فردا بدون نیاز به اجرای مجدد کدها، آنها را با دستورload('mydata.mat')برگردانید.

