یکی از مشکلات برنامه نویسان متلب همیشه کار با ماتریس ها بوده است. به عنوان مثال در این پست می خواهیم چگونگی تبدیل انواع داده ها را بررسی کنیم

در متلب دادههای مختلفی وجود دارند از جمله: داده های عددی که بیشتر به آن ها خواهیم پرداخت، داده های کاراکتری و منطقی که در واقع نوعی داده عددی هستند. ماتریس سلولی cell matrix که داده هائی از انواع مختلف را نگهداری میکند، ماتریس ساختاری که ماتریس هائی از انواع مختلف را نگهداری میکند  inline، function_handle ،……………

به علت اینکه متلب یک نرم افزار مهندسی است، داده های عددی در آن اهمیت خاصی دارند. پیش فرض متلب این گونه است که هر متغیر عددی را به هنگام ورود (معرفی، یا اعلام نام و مقدار همزمان)، با دقت افزوده (مضاعف) double در حافظه نگهداری میکند. دستور isa() نوع متغیر یا داده را امتحان میکند برای اطلاع بیشتر از انواع داده در متلب help datatypes را اجرا کنید. مشخصه های بعضی از انواع عددی در جدول زیر آمده است.

نکاتی پیرامون single

دقت ساده از لحاظ بازه محدودتر از دقت مضاعف است.

اغلب عملیات ریاضی برای نوع single تعریف نشده اند. اما اگر مایل باشیم مثلاً عمل جمع را برای نوع single تعریف کنیم، باید یک متد (تابع) برای این کار تعریف و در دیرکتوری@single( منشعب از دیرکتوری work) قرار دهیم. برای توضیح بیشتر به مثال فصل توابع کاریر- تعریف مراجعه کنید.

نکاتی پیرامون int

تبدیل به هر نوع عدد صحیح ارقام بعداز ممیز را حذف میکند.
بازه عدد صحیحِ هشت بیتی ۱۲۸ – تا ۱۲۷ + است.

اغلب عملیات ریاضی برای نوع int تعریف نشده اند. اگر مایل باشیم مثلاً عمل ضرب را برای نوع int تعریف کنیم، باید با روشی مشابه آنچه در مورد singel آمد عمل کنیم.

نکاتی پیرامون char و ترکیب انواع

داده کاراکتری در محدوده اسکی معادل عدد صحیح هشت بیتی است.
در ترکیب کاراکتر، منطق، و عدد، برتری با عدد بوده و حاصل از نوع عددی خواهد بود.

مثال ها:

داده اعشاری double

برای نمایش ارقام بیشتری از یک عدد

>> format long e % >> e = exp(1)

برای به دست آوردن عدد نپری از تابع کتابخانه ای  exp() استفاده کرده ایم %

e = 2.718281828459046e+000 >> isa(e,’double’) ans = 1 >> pi, 4*atan(1), imag(log(-1)) ans = 3.141592653589793e+000 ans = 3.141592653589793e+000 ans = 3.141592653589793e+000

داده اعشاری single

>> y = single(e) y = 2.718281745910645e+000 >> isa(y,’single’) ans = 1

نوع single عدد اعشاری است که تا هفت رقم بعداز ممیز دقیق است، لذا نمایش آن فقط تا رقم هفتم اعتباردارد، و ارقام بعداز آن فاقد اعتبار هستند (با نمایش e مقایسه کنید)

عملیات با نوع single

اغلب عملیات ریاضی برای نوع single تعریف نشده اند.

>> si1 = single(2.2), si2 = single(3.5) si1 = 2.2000 si2 = 3.5000 >> si1 * si2 ??? Error using ==> * Function ‘*’ is not defined for values of class ‘single’.

انواع اعداد صحیح

>> format طبق پیشفرض متلب به صورت عدد اعشاری با دقت افزوده نگهداری میشود

>> x1 =125.6; >> ix1 = int8(x1) ix1 = 125 >> isa(ix1,’int8′) ans = 1 >> ix2 = int16(x1) ix2 = 125 >> isa(ix2,’int16′) ans = 1

عملیات با نوع int

اغلب عملیات ریاضی برای نوع int تعریف نشده اند.

>> it1 = int16(14.4), it2=int16(12.3) it1 = 14 it2 = 12 >> it1 + it2 ??? Error using ==> + Function ‘+’ is not defined for values of class ‘int16’.

داده کاراکتری و ترکیب انواع

>> x = 66; % double >> cx = char(x) % character cx = B

در ترکیب کاراکتر، منطق، و عدد، حاصل عددی است %

>> ar = ‘A’ + logical(1) + 1.3 var = 67.3000

داده منطقی

>> t = [0 1]; % double >> tL = logical(t) tL = 0 1

مشاهده در پنجره فضای کار دادههای تعریف شده در محیط متلب در فضای کار (مشابه شکل زیر) نمایش داده میشوند. لذا توصیه میشود همواره از انتخاب View  از منوی اصلی، پنجره Workspace را تیک بزنید تا بتوانید مشخصه های

متغیرهای خود را در فضای حافظه مشاهده نمائید. اگر به روی یک متغیر در پنجره Workspace  کلیک کنید، دسترسی بیشتری به آن پیدا کرده، حتی میتوانید آن را ادیت کنید