در این قسمت از دوره آموزش متلب فنولوژی در مورد اعداد در متلب صحبت میکنیم. انواع اعداد در متلب با توجه به دیتاتایپ آنها وجود دارند. در این نوشته انواع اعداد در متلب و کارکرد آنها را با بیان مثالهای کارآمد بررسی میکنیم. با ما همراه باشید.
اعداد در متلب
متلب شامل دستهبندیهای گوناگون عددی است که شامل اعدا صحیح (با علامت و بدون علامت) و اعداد اعشاری (با دقت یکتا single یا دوبرابر double) هستند. به طور پیشفرض متلب همهی مقادیر عددی را به صورت اعداد اعشاری دوبرابر دقت یا double ذخیره میکند. شما میتوانید انتخاب کنید که هر عدد یا آرایهای از اعداد را به صورت اعداد صحیح یا اعشاری با دقت یکتا نیز ذخیره کنید. همهی دادههای عددی از محاسبات پایهی برداری و ریاضیاتی پشتیبانی میکنند.
تبدیل انواع دیتاتایپ اعداد در متلب
برای تبدیل انواع دیتاتایپ در متلب میتوانید از توابع زیر استفاده کنید:
تابع | کاربرد |
---|---|
double | تبدیل به double |
single | تبدیل به single |
int8 | تبدیل به عدد صحیح ۸ بیتی علامتدار |
int16 | تبدیل به عدد صحیح ۱۶ بیتی علامتدار |
int32 | تبدیل به عدد صحیح ۳۲ بیتی علامتدار |
int64 | تبدیل به عدد صحیح ۶۴ بیتی علامتدار |
uint8 | تبدیل به عدد صحیح ۸ بیتی بدون علامت |
uint16 | تبدیل به عدد صحیح ۱۶ بیتی بدون علامت |
uint32 | تبدیل به عدد صحیح ۳۲ بیتی بدون علامت |
uint64 | تبدیل به عدد صحیح ۶۴ بیتی بدون علامت |
مثال: یک فایل اسکریپت مانند زیر ایجاد کنید.
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، به ترتیب بزرگترین و کوچکترین مقادیری که میتوان با انواع اعداد صحیح نشان داد را برمیگردانند.
به مثالهای زیر توجه کنید و به سینتکس استفاده شده (‘__int’) در آرگومان ورودی تابعها دقت کنید.
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 |
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 17 18 19 20 21 22 23 |
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 |
% single-precision 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')) % double-precision 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 7 |
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 |