با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن. و کاربرانی که دوره کامل آموزش متلب را دنبال می کنند. متلب از کلاس های عددی مختلفی که شامل اعداد صحیح ، بدون علامت و اعدادی با دقت اعشاری مختلف است، پشتیبانی می کند. به طور پیش فرض MATLAB تمام مقادیر عددی را به عنوان اعداد دو نقطه ای با دقت اعشاری ذخیره می کند.شما می توانید هر شماره یا آرایه ای از اعداد را به عنوان اعداد صحیح یا به عنوان اعدادی با دقت یک رقمی ذخیره کنید. تمام انواع عددی در متلب از عملیات و عملگرهای اساسی در آرایه ها و عملیات ریاضی پشتیبانی می کنند. در ادامه ی آموزش جاری برای آشنایی با نوع عددی در متلب که شامل ( انواع تبدیل در داده های عددی مختلف در متلب ، بزرگترین و کوچکترین integer ها و بزرگترین و کوچکترین مقدار نوع داده های عددی با دقت اعشاری و .. ) می باشند می پردازیم با ما همراه باشید.
در ادامه ی مباحث این بخش ما شما را با تمام انواع عددی در متلب و مثال هایی از آن آشنا خواهیم کرد:
MATLAB توابع زیر را برای تبدیل انواع مختلف داده های عددی ارائه کرده است:
Function | Purpose |
---|---|
double | تبدیل به نوع عددی double |
single | تبدیل به دقت تک رقمی |
int8 | تبدیل به integer صحیح نوع ۸ بیتی |
int16 | تبدیل به integer صحیح نوع ۱۶ بیتی |
int32 | تبدیل به integer صحیح نوع ۳۲ بیتی |
int64 | تبدیل به integer صحیح نوع ۶۴ بیتی |
uint8 | تبدیل به integer بدون علامت نوع ۸ بیتی |
uint16 | تبدیل به integer بدون علامت نوع ۱۶ بیتی |
uint32 | تبدیل به integer بدون علامت نوع ۳۲ بیتی |
uint64 | تبدیل به integer بدون علامت نوع ۶۴ بیتی |
مثال – یک فایل اسکریپت ایجاد کرده و کد زیر را در آن تایپ می کنیم:
1 2 3 4 5 6 | x = single([5.32 3.47 6.28]) .* 7.5 x = double([5.32 3.47 6.28]) .* 7.5 x = int8([5.32 3.47 6.28]) .* 7.5 x = int16([5.32 3.47 6.28]) .* 7.5 x = int32([5.32 3.47 6.28]) .* 7.5 x = int64([5.32 3.47 6.28]) .* 7.5 |
نتیجه ی اجرای کد فوق در متلب:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | x = 39.900 26.025 47.100 x = 39.900 26.025 47.100 x = 38 23 45 x = 38 23 45 x = 38 23 45 x = 38 23 45 |
مثال ۲- کد مثال قبل را با ایجاد یک فایل اسکریپت و افزودن کد زیر به آن کاملتر می کنیم:
1 2 3 | x = int32([5.32 3.47 6.28]) .* 7.5 x = int64([5.32 3.47 6.28]) .* 7.5 x = num2cell(x) |
نتیجه ی اجرای کد فوق در متلب:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | x = 38 23 45 x = 38 23 45 x = { [1,1] = 38 [1,2] = 23 [1,3] = 45 } |
توابع intmax () و intmin () به ترتیب حداکثر و حداقل اندازه ای که نوع داده های integer می تواند داشته باشد را برمی گرداند.
پارامترهای ورودی هر دو تابع فوق، انواع داده های عددی مانند int16 ، int8 و… می باشد.(مثال: (intmax(int8 یا (intmin(int64 )
مقدار بازگشتی هر دو تابع حداکثر یا حداقل مقدار عددی است که نوع داده ی integer ورودی می پذیرد.
مثال- با ایجاد یک فایل اسکریپت قرار دادن کد زیر در آن چگونگی استفاده از این توابع و عملکرد آن ها را تست می کنیم:
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 | % displaying the smallest and largest signed integer data str = 'The range for int8 is:\n\t%d to %d '; sprintf(str, intmin('int8'), intmax('int8')) str = 'The range for int16 is:\n\t%d to %d '; sprintf(str, intmin('int16'), intmax('int16')) str = 'The range for int32 is:\n\t%d to %d '; sprintf(str, intmin('int32'), intmax('int32')) str = 'The range for int64 is:\n\t%d to %d '; sprintf(str, intmin('int64'), intmax('int64')) % displaying the smallest and largest unsigned integer data str = 'The range for uint8 is:\n\t%d to %d '; sprintf(str, intmin('uint8'), intmax('uint8')) str = 'The range for uint16 is:\n\t%d to %d '; sprintf(str, intmin('uint16'), intmax('uint16')) str = 'The range for uint32 is:\n\t%d to %d '; sprintf(str, intmin('uint32'), intmax('uint32')) str = 'The range for uint64 is:\n\t%d to %d '; sprintf(str, intmin('uint64'), intmax('uint64')) |
نتیجه ی اجرای کد فوق در متلب :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | ans = The range for int8 is: -128 to 127 ans = The range for int16 is: -32768 to 32767 ans = The range for int32 is: -2147483648 to 2147483647 ans = The range for int64 is: 0 to 0 ans = The range for uint8 is: 0 to 255 ans = The range for uint16 is: 0 to 65535 ans = The range for uint32 is: 0 to -1 ans = The range for uint64 is: 0 to 18446744073709551616 |
توابع ()realmax و ()realmin به ترتیب بزرگترین و کوچکترین مقداری که انواع داده ها با دقت اعشاری می پذیرند را برمی گرداند.
به این ترتیب توابع فوق برای برگرداندن بزرگترین و کوچکترین مقداری که انواع عددی single و double می پذیرند استفاده می شود.
مثال – با ایجاد یک فایل اسکریپت و قرار دادن کد زیر در آن چگونگی استفاده از توابع فوق و عملکرد آن ها را نشان می دهیم:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | % displaying the smallest and largest single-precision % floating point number str = 'The range for single is:\n\t%g to %g and\n\t %g to %g'; sprintf(str, -realmax('single'), -realmin('single'), ... realmin('single'), realmax('single')) % displaying the smallest and largest double-precision % floating point number str = 'The range for double is:\n\t%g to %g and\n\t %g to %g'; sprintf(str, -realmax('double'), -realmin('double'), ... realmin('double'), realmax('double')) |
نتیجه ی اجرای کد فوق در متلب :
1 2 3 4 5 6 | ans = The range for single is: -3.40282e+38 to -1.17549e-38 and 1.17549e-38 to 3.40282e+38 ans = The range for double is: -1.79769e+308 to -2.22507e-308 and 2.22507e-308 to 1.79769e+308 |
از آن جایی که متلب در واقع یک نرم افزار کدنویسی ریاضی و محاسباتی است. شما در هنگام کار با آن با انواع اعداد مختلف (اعداد صحیح ، اعشاری ، کسری و…) بسیار سر و کار دارید. از این رو آشنایی با انواع عددی در متلب از اهمیت ویژه ای برخوردار بوده و ما نیز مباحث این بخش را به این موضوع اختصاص داده ایم.