انواع داده های عددی در متلب + معرفی تابع class و whos در متلب
در آموزش های قبلی درباره انواع داده هایی که در نرم افزارمتلب با آنها سر و کار داریم صحبت شد. آموزش فوق را می توانید در اینجا مطالعه کنید: انواع داده ها در متلب
در این آموزش قصد داریم به تشریح کامل داده های عددی بپردازیم و چند مثال هم از فضای متلب بیاوریم.
داده های عددی همانطور که از اسمشان هم پیداست، به اعداد مرتبط می شوند و هرجا عددی باشد که بتوانیم روی آن محاسبات ریاضی انجام دهیم، با یک داده عددی طرف هستیم. همانطور که در نمودار هم قابل مشاهده است، داده های اعدادی به دو نوع اعداد صحیح و اعداد اعشاری تقسیم می شوند. (یا به عبارت بهتر: دسته اول اعداد صحیح و دسته دوم همه اعداد)
پیشنهاد می کنم به سایر آموزش های ما درباره متلب و سیمولینک هم سری بزنید! آموزش متلب و سیمولینک
دسته اول: اعداد صحیح
اعداد صحیح در متلب دقیقا همان تعریفی را دارد که در ریاضی هم از اعداد صحیح سراغ داریم. اعدادی که اعشاری پس از خود ندارند. این اعداد در متلب با int مشخص می شوند. بعد از کلمه int یک عدد می آید که تعداد حداکثر بیت های هر نوع داده را مشخص می کند. هر چه تعداد بیت ها بیشتر باشد، اعداد بزرگتری می توانند در آن نوع از داده قرار بگیرند. در جدول زیر محدوده هر نوع را مشاهده می کنید.

اما برای فهم بهتر به این مثال توجه کنید: فرض کنید که قصد داریم عدد 24 را در متغیری به نام a ذخیره کنیم. این عدد در بازه های مربوط به همه مواردی که در جدول بالا ذکر شد وجود دارد. یعنی هم می توانیم آن را با int8 تعریف کنیم هم می توانیم با int16 و int32 و int64 تعریف کنیم. کدام بهتر است.
پاسخ را با دقت مطالعه کنید:
⇐ همانطور که می دانید کامپیوتر اعداد را در مبنای 2 و به صورت 0 و 1 در حافظه خود ذخیره می کند. یعنی عدد 24 به صورت 11000 ذخیره می شود و به 5 بیت نیاز دارد. (البته یک بیت هم علامت مثبت این عدد را مشخص می کند و در نتیجه مجموعا 6 بیت را اشغال می کند. اگر این عدد را با int16 تعریف کنیم، 10 بیت، بدون دلیل اشغال می شود و در واقع اسراف می شود! که در نهایت هم باعث کندتر شدن اجرای برنامه می شود.
پس بهتر است که این عدد با int8 تعریف شود. اما چگونه باید نوع داده را مشخص کنیم؟ در ادامه آموزش به این نکته هم خواهیم رسید.
اگر به ابتدای int یک حرف u اضافه شود، uint ها به دست می آیند. این نوع داده ها، اعداد صحیح بدون علامت هستند. یعنی همگی مثبت هستند. در نتیجه بازه ای که در بین اعداد صحیح پوشش می دهند، دو برابر می شود.
مثلا int8 اعداد بین 128- و 127 را شامل می شود و uint8 شامل اعداد 0 تا 255 است. بازه تحت پوشش هر دو یکسان است. اما بازه uint تماما در بخش مثبت است و بازه int به طور مساوی بین بخش مثبت و منفی تقسیم شده است.
دسته دوم: اعداد اعشاری
می توان گفت این دسته شامل همه اعداد، حتی اعداد دسته اول هم می شود. چون اعداد صحیح هم به نوعی اعداد اعشاری هستند که اعشار آنها صفر است.
این دسته از اعداد هم شامل دو شاخه می شود. شاخه اول Single نام دارد و شاخه دوم Double.
دقت داده هایی که از نوع Single هستند کمتر از داده هایی است که از نوع Double هستند. اما در عوض فضای کمتری را اشغال می کنند. اعدادی که از نوع Single باشند، 32 بیت (4بایت) و اعدادی که از نوع Double باشند، 64 بیت (8بایت) را اشغال می کنند.
تعیین نوع داده عددی با استفاده از class و whos در متلب
اول از همه یک سوال مهم. در متلب وقتی یک عدد را بدون تعیین نوع آن داخل یک متغیر می ریزیم، متلب آن را چه نوع داده ای در نظر می گیرد؟
پاسخ این است که در حالت پیشفرض، عددها از نوع double هستند. برای مشخص کردن نوع یک داده، از تابع class در متلب استفاده می کنیم. مشاهده می کنید که در حالتی که نوع a مشخص نشود، نوع double برای آن در نظر گرفته می شود.

اگر اطلاعات بیشتری درباره متغیر بخواهیم، از تابع whos در متلب استفاده می کنیم. مشاهده می کنید که در این حالت تعداد بایت ها و سایز هم نمایش داده می شود.

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

برای تبدیل یک عدد به نوع single، از تابع single در متلب استفاده می کنیم. متغیر های a و b را در کد زیر مقایسه کنید.

اگر بخواهیم نوع یک متغیر را به double تغییر دهیم، از تابع double استفاده می کنیم.

حالا در جدول زیر سه تابع دیگر را مشاهده می کنید که خروجی آنها 0 یا 1 خواهد بود. این سه تابع می توانند مشخص کنند که یک متغیر آیا از نوع عددی است و پس از آن آیا از نوع عدد صحیح است یا اعشاری؟

معرفی اعداد مختلط در متلب
در متلب امکان کار با اعداد مختلط هم وجود دارد. مثلا می توانیم یک متغیر را به صورت زیر تعریف کنیم. برای مشخص کردن بخش موهومی می توانیم از حرف i و j استفاده کنیم و در نتیجه نهایی تفاوتی بین استفاده از این دو حرف وجود ندارد.

اگر از حرف i یا j قبلا به عنوان یک متغیر استفاده کرده اید و به آن مقداری اختصاص داده اید، دیگر نمی توانید برای تعریف اعداد مختط از آن استفاده کنید.
همان طور که در کد زیر مشاهده می کنید، برای مشخص کردن بخش های حقیقی و موهومی می توانیم از توابع real و imag در متلب استفاده کنیم.

به وسیله تابع complex در متلب می توانیم با دادن دو عدد ورودی، یک عدد مختلط ایجاد کنیم.

تابع isreal در متلب هم تعیین می کند که یک عدد حقیقی است یا مختلط. در صورت حقیقی بودن ورودی، خروجی 1 است و در صورت مختلط بودن ورودی، خروجی 0 است.
