کار کردن با دیتا تایپ در متلب به نسبت بسیاری از زبانهای برنامه نویسی کار دشواری نیست. در این قسمت از دوره آموزش متلب فنولوژی در مورد دیتاتایپها در متلب و شیوه کار با آنها به طور کامل میآموزیم.
تعریف دیتا تایپ
متلب به هیچ نوع اعلام نوع یا اعلام ابعاد برای ایجاد یک متغیر نیاز ندارد. هرگاه متلب با نام متغیر جدیدی روبرو شود، این متغیر را ایجاد کرده و فضای حافظه مناسبی را اختصاص میدهد. اگر متغیر از قبل وجود داشته باشد، سپس متلب محتوای اصلی را جایگزین محتوای جدید میکند و در صورت لزوم فضای ذخیره سازی جدیدی را اختصاص میدهد.
برای مثال:
1 |
Total = 42 |
دستور بالا یک ماتریس ۱ در ۱ به نام Total ایجاد میکند و مقدار ۴۲ را در آن ذخیره میکند.
انواع دیتا تایپ در متلب
۱۵ نوع دیتا تایپ در متلب وجود دارد. انواع دیتا تایپ در متلب، به صورت ماتریس یا آرایه هستند. اندازه این ماتریس یا آرایه حداقل ۰ در ۰ است و این میتواند یک ماتریس یا آرایه با هر اندازهای باشد.
جدول زیر متداولترین انواع دیتا تایپ در متلب را نشان می دهد:
دیتا تایپ | توضیحات |
int8 | اعداد صحیح ۸ بیتی علامتدار |
uint8 | اعداد صحیح ۸ بیتی بدون علامت |
int16 | اعداد صحیح ۱۶ بیتی علامتدار |
uint16 | اعداد صحیح ۱۶ بیتی بدون علامت |
int32 | اعداد صحیح ۳۲ بیتی علامتدار |
uint32 | اعداد صحیح ۳۲ بیتی بدون علامت |
int64 | اعداد صحیح ۶۴ بیتی علامتدار |
uint64 | اعداد صحیح ۶۴ بیتی بدون علامت |
single | دادههای عددی از نوع single |
double | دادههای عددی از نوع double (که فضای بیشتری نسبت به single اشغال میکند) |
logical | دیتا تایپ منطقی (صفر و یک) در متلب |
char | کاراکتر (که رشتهها در اصل آرایهای از کاراکترها هستند) |
cell array | آرایهیا ماتریسی از دادهها که هر سلول از آرایه، خود میتواند آرایهی دیگری را در خود جای دهد. (تفاوت آن با آرایههای معمولی در متلب همین است که میتوان انواع دیتا تایپ در متلب را جای داد) |
structure | دیتا تایپ structure که مشابه همین دیتا تایپ در زبان c میباشد. در این نوع داده میتوان به هر عنوان (field)، یک مقدار (value) نسبت داد و آن مقدار میتواند از هر نوع دیتا تایپ در متلب باشد. |
function handle | اشارهگر یا پوینتر به یک تابع |
user classes | اشیائی که توسط کلاسهای تعریف شده کاربر ایجاد شدهاند. |
java classes | اشیائی که توسط کلاسهای جاوا تعریف شدهاند. |
مثال
یک فایل اسکریپت با کد زیر ایجاد کنید:
1 2 3 4 5 6 |
str = 'Hello World!' n = 2345 d = double(n) un = uint32(789.50) rn = 5678.92347 c = int32(rn) |
وقتی کد فوق کامپایل و اجرا میشود، نتیجه زیر را ایجاد میکند:
1 2 3 4 5 6 |
str = Hello World! n = 2345 d = 2345 un = 790 rn = 5678.9 c = 5679 |
تبدیل انواع data type
متلب توابع مختلفی را برای تبدیل دیتا تایپ فراهم میکند، مقداری از یک نوع داده به نوع دیگر. جدول زیر توابع تبدیل انواع دیتا تایپ در متلب را نشان میدهد:
تابع | عملکرد تابع |
char | تبدیل به آرایه نویسه (رشته) |
int2str | داده های عدد صحیح را به رشته تبدیل میکند. |
mat2str | ماتریس را به رشته تبدیل میکند. |
num2str | تبدیل عدد به رشته |
str2double | رشته را به مقدار دقت دو برابر تبدیل میکند. |
str2num | رشته را به عدد تبدیل میکند. |
native2unicode | تبدیل بایتهای عددی به نویسههای یونیکد |
unicode2native | تبدیل نویسههای یونیکد به بایتهای عددی |
base2dec | رشته در مبنای N را به عدد دهدهی تبدیل میکند. |
bin2dec | رشته اعداد باینری را به عدد دهدهی تبدیل میکند. |
dec2base | اعداد دهدهی را به عدد مبنای N در رشته تبدیل میکند. |
dec2bin | عدد دهدهی را به باینری در رشته تبدیل میکند. |
dec2hex | عدد دهدهی را به هگزادسیمال در رشته تبدیل میکند. |
hex2dec | رشته هگزادسیمال را به عدد دهدهی تبدیل میکند. |
hex2num | رشته هگزادسیمال را به عدد double تبدیل میکند. |
num2hex | تبدیل single و double به رشته های هگزادسیمال IEEE |
cell2mat | آرایه سلولی را به آرایه عددی تبدیل میکند. |
cell2struct | آرایه سلولی را به آرایه structure تبدیل میکند. |
cellstr | ساخت سلول آرایههای رشته از آرایههای کاراکتر |
mat2cell | تبدیل آرایه به آرایه سلولی با سلولهایی با اندازههای متفاوت |
num2cell | تبدیل آرایه، به آرایه سلولی با سلولهای یک اندازه |
struct2cell | تبدیل ساختار به آرایه سلولی |
توابعی برای تعیین دیتا تایپ در متلب
متلب توابع مختلفی را برای شناسایی انواع دیتا تایپ (data type) یک متغیر فراهم میکند.
تابع | عملکرد تابع |
is | حالت را تشخیص میدهد. |
isa | تعیین میکند که ورودی یک شیئ از کلاس مشخص شده باشد. |
iscell | تعیین میکند که آیا ورودی یک آرایه سلولی است. |
iscellstr | تعیین میکند که ورودی آرایه سلولی از رشتهها باشد. |
ischar | تعیین میکند که آرایه کاراکتر است یا خیر. |
isfield | تعیین میکند که ورودی یک فیلد از آرایه struct باشد. |
isfloat | تعیین میکند که ورودی آرایهای از نوع float (اعشاری) است یا خیر. |
ishghandle | آیا شیئ از نوع handle گرافیکی است؟ |
isinteger | تعیین میکند آیا ورودی آرایه ای صحیح است. |
isjava | تعیین میکند که ورودی شی Java است. |
islogical | تعیین میکند آیا ورودی آرایه منطقی (صفر و یک) است. |
isnumeric | تعیین میکند که ورودی آرایه عددی باشد. |
isobject | تعیین میکند که ورودی شی MATLAB باشد. |
isreal | بررسی میکند آیا ورودی آرایه واقعی است. |
isscalar | تعیین میکند ورودی اسکالر است. |
isstr | تعیین میکند که ورودی از نوع رشته است. |
isstruct | تعیین میکند که ورودی آرایه ساختار است. |
isvector | مشخص میکند ورودی بردار است یا نه. |
class | کلاس شی را تعیین میکند. |
validateattributes | اعتبار آرایه را بررسی میکند. |
whos | متغیرها را در workspace با اندازه و نوع، لیست میکند. |
یک فایل اسکریپت با کد زیر ایجاد کنید:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
x = 3 isinteger(x) isfloat(x) isvector(x) isscalar(x) isnumeric(x) x = 23.54 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) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
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 = 1 2 3 ans = 0 ans = 1 ans = 1 ans = 0 x = Hello ans = 0 ans = 0 ans = 1 ans = 0 ans = 0 |