موضوعات وبسایت : برنامه نویسی
سوالات امتحان آیین نامه رانندگی

ذخیره اعداد در متلب

ذخیره اعداد در متلب

نویسنده : محمد پارسایی | زمان انتشار : 14 اسفند 1400 ساعت 22:59

جهت انجام پروژه های دانشجویی و یا تمرین‌های برنامه نویسی رشته کامپیوتر میتوانید به آی دی تلگرام زیر پیام دهید

@AlirezaSepand



در متلب نیز مانند سایر زبان‌های برنامه‌نویسی، انواع مختلفی از داده‌ها وجود دارد. در این مطلب قصد داریم به بررسی انواع داده در متلب بپردازیم و دستورات تبدیل داده از یک نوع به نوع دیگر را معرفی کنیم.

سوالات امتحان آیین نامه رانندگی

در زبان متلب احتیاجی به اعلام نوع (Type Declaration) و یا تعیین ابعاد (Dimension Statements) نیست و هرگاه که نرم‌افزار با یک نام متغیر جدید روبه‌رو شود، متغیر جدید را می‌سازد و فضای حافظه مناسب را به آن اختصاص می‌دهد. اگر متغیر در حال حاضر وجود داشته باشد، آن‌گاه متلب محتوای جدید را در محتوای قبلی جایگزین می‌کند و در صورت نیاز، یک فضای حافظه جدید به آن اختصاص می‌دهد. به عنوان مثال، دستور زیر را در متلب در نظر بگیرید.

این دستور، یک ماتریس با ابعاد $$ 1 \times 1 $$ را در متلب ایجاد می‌کند که نام آن Total است و مقدار ۴۲ را در خود ذخیره می‌کند.

انواع داده در متلب

در متلب، ۱۵ نوع داده اساسی وجود دارد. البته دو نوع داده دیگر هم وجود دارند که کلاس‌های تعریف شده توسط کاربر و کلاس‌های جاوا (JAVA) هستند. همه انواع داده در متلب اطلاعاتی را در خود ذخیره می‌کنند که در قالب ماتریس و یا آرایه هستند. اندازه این ماتریس‌ها یا آرایه‌ها، از مقدار کمینه $$ 0 \times 0 $$ شروع می‌شود و می‌توانند به یک آرایه n بعدی با هر اندازه افزایش یابد. متداول‌ترین انواع داده در متلب در نمودار شکل زیر نشان داده شده است.

انواع داده در متلب

همان طور که از شکل فوق مشخص است، داده‌های عددی خود به دو نوع صحیح و اعشاری تقسیم می‌شوند. اعداد صحیح دارای دو نوع علامت‌دار (Signed Integer) و بدون علامت (Unsigned Integer) و با طول‌های مختلف از ۸ بیت تا ۶۴ بیت و اعداد نوع اعشاری مجددا شامل دو نوع Single و Double است. در جدول زیر به توصیف هر کدام از انواع این داده‌ها می‌پردازیم.

توصیف عملکردمثالتعریفنوع داده
این نوع داده‌ها برای ذخیره آرایه‌های صحیح با علامت و بدون علامت مورد استفاده قرار می‌گیرد و در مقایسه با داده‌های اعشاری نوع Single و Double فضای حافظه کمتری را اشغال می‌کند. تمام داده‌های نوع صحیح به جز int64 و uint64 می‌توانند در عملیات ریاضی مورد استفاده قرار گیرند. uint16(65000)اعداد صحیح علامت‌دار ۸ بیتیint8
اعداد صحیح بدون علامت ۸ بیتیuint8
اعداد صحیح علامت‌دار ۱۶ بیتیint16
اعداد صحیح بدون علامت ۱۶ بیتیuint16
اعداد صحیح علامت‌دار ۳۲ بیتیint32
اعداد صحیح بدون علامت ۳۲ بیتیuint32
اعداد صحیح علامت‌دار ۶۴ بیتیint64
اعداد صحیح بدون علامت ۶۴ بیتیuint64
این نوع از داده‌های اعشاری، به فضای حافظه کمتری نسبت به نوع Double نیاز دارند و در عوض بازه اعداد کوچک‌تری را هم پوشش می‌دهند.3 * 10 38آرایه اعداد با دقت Singlesingle
آرایه‌های دو بعدی از این نوع نادر هستند. این نوع داده، نوع عددی پیش فرض در متلب است.۳ * ۱۰ ۳۰۰‎

۵ + ۶i

آرایه اعداد با دقت مضاعفdouble
این آرایه برای نشان دادن True و False منطقی مورد استفاده قرار می‌گیرد. آرایه‌های دوبعدی از این نوع هم نادر هستند. magic(4) > 10آرایه مقادیر صفر و یک منطقیlogical
مقادیر String به صورت برداری از کاراکترها نمایش داده می‌شوند. برای آرایه‌های شامل بیشتر از یک String، بهتر است از آرایه‌های سلولی استفاده شود.‘Hello’آرایه‌ای از کاراکترهاchar
این نوع داده، آرایه‌ای از سلول‌های اندیس‌دار است که هر سلول قادر است یک آرایه با ابعاد و نوع متفاوت داده را ذخیره کنند.a{1,1} = 12;
a{1,2} = ‘Red’;
a{1,3} = magic(4);
آرایه‌ای از سلول‌های اندیس‌دارcell array
هر ساختار در این آرایه، دارای فیلدهای نام‌‌گذاری شده است که می‌تواند آرایه با ابعاد و نوع مختلف داده را ذخیره کند.a.day = 12;
a.color = ‘Red’;
a.mat = magic(3);
آرایه‌ای از ساختارهای مشابه با cstructure
می‌توان یک function handle را به توابع دیگر پاس داد.$$ \text {@ sin} $$اشاره‌گر به یک تابعfunction handle
polynom ([0 -2 -5])ساخت اشیا از کلاس‌های تعریف‌شده توسط کاربرuser class
java.awt.Frameساخت اشیا از کلاس‌های جاواJava class

داده‌های عددی

همان طور که گفتیم، داده‌های عددی در متلب شامل اعداد صحیح علامت‌دار و بدون علامت و اعداد اعشاری با دقت Single و Double هستند. در حالت کلی، می‌توان گفت که آرایه‌های صحیح و اعشاری Single امکان ذخیره‌سازی بهینه‌تری را نسبت به آرایه‌های اعشاری Double ایجاد می‌کنند. تمام انواع داده‌های عددی، از توابع اساسی آرایه‌‌ای مانند تغییر شکل (Reshaping) و اندیس‌دهی پشتیبانی می‌کنند. تمام داده‌های نوع عددی به جز int64 و uint64 می‌توانند در عملیات ریاضی و عددی مورد استفاده قرار گیرند.

اعداد صحیح

در متلب چهار نوع داده صحیح علامت‌دار و چهار نوع داده صحیح بدون علامت وجود دارد. نوع علامت‌دار از داده‌های صحیح علاوه بر اعداد مثبت، امکان کار با اعداد صحیح منفی را نیز فراهم می‌کنند، اما نمی‌توانند بازه گسترده‌ای را مانند اعداد صحیح بدون علامت پوشش دهند. زیرا یک بیت همواره به نشان داده علامت مثبت یا منفی در عدد صحیح تخصیص می‌یابد. داده صحیح نوع بدون علامت، بازه بزرگ‌تری را پوشش می‌دهد، اما این نوع داده می‌تواند فقط مثبت یا منفی باشد.

در نرم‌افزار متلب، امکان ذخیره‌سازی داده‌های عددی با ۱، ۲، ۴ و ۸ بایت (۸ بیت) وجود دارد. اگر در هنگام برنامه‌نویسی از کوچک‌ترین نوع داده صحیح استفاده کنیم که قادر به ذخیره داده ما باشد، آن‌گاه در حافظه و نیز زمان اجرا صرفه‌جویی خواهیم کرد. به عنوان مثال، برای ذخیره‌سازی مقدار ۱۰۰ نیازی به عدد صحیح ۳۲ بیتی نداریم. در جدول زیر، هشت نوع داده عددی به همراه بازه اعداد هر نوع، نشان داده شده است.

بازه مقادیرنوع داده
$$ -2 ^ 7 $$ تا $$ 2 ^ 7 -1 $$عدد صحیح ۸ بیت علامت‌دار
$$ -2 ^ { 15 } $$ تا $$ 2 ^ { 15 } -1 $$عدد صحیح ۱۶ بیت علامت‌دار
$$ -2 ^ {  31 }  $$ تا $$ 2 ^ { 31 } -1 $$عدد صحیح ۳۲ بیت علامت‌دار
$$ -2 ^ { 63 }  $$ تا $$ 2 ^ { 63 } -1 $$عدد صحیح ۶۴ بیت علامت‌دار
$$ 0 $$ تا $$ 2 ^ 8 -1 $$عدد صحیح ۸ بیت بدون علامت
$$ 0 $$ تا $$ 2 ^ {16} -1 $$عدد صحیح ۱۶ بیت بدون علامت
$$ 0 $$ تا $$ 2 ^ {32} -1 $$عدد صحیح ۳۲ بیت بدون علامت
$$ 0 $$ تا $$ 2 ^ {64} -1 $$عدد صحیح ۶۴ بیت بدون علامت

ایجاد اعداد صحیح در متلب

نرم‌افزار متلب داده‌های عددی را به صورت پیش فرض از نوع اعشاری با دقت مضاعف ذخیره‌سازی می‌کند. برای ذخیره کردن داده‌ها به عنوان یک داده صحیح، باید از یکی از دستورات نشان داده شده در زیر استفاده کرد.

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

نتیجه به صورت زیر نمایش داده می‌شود.

Name      Size      Bytes      Class  

x        1x1        2        int16 array

همچنین برای تعیین کردن نوع خروجی می‌توانیم از تابع class مانند قطعه کد زیر استفاده کنیم.

در نتیجه داریم:

برای اینکه مشخص کنید آیا یک متغیر صحیح است یا خیر، می‌توان از تابع isinteger استفاده کرد.

خروجی این دستور به صورت زیر است.

توابع مربوط به داده‌های نوع صحیح

در مورد اعداد صحیح، توابع زیر وجود دارند:

  • int8 و int16 و int32 و int64: این توابع برای تبدیل به اعداد صحیح علامت‌دار ۱، ۲، ۴ یا ۸ بایتی مورد استفاده قرار می‌گیرند.
  • uint8 و uint16 و uint32 و uint64: این توابع برای تبدیل به اعداد صحیح بدون علامت ۱، ۲، ۴ یا ۸ بایتی مورد استفاده قرار می‌گیرند.
  • class: این تابع نوع داده مربوط به یک شی را باز می‌گرداند.
  • isa: با استفاده از این تابع می‌توان مشخص کرد که آیا یک مقدار ورودی، نوع داده خاصی دارد یا خیر.
  • isinteger: با استفاده از این تابع می‌توان مشخص کرد که آیا یک مقدار ورودی، آرایه صحیح است یا خیر.
  • isnumeric: با استفاده از این تابع می‌توان مشخص کرد که آیا یک مقدار ورودی، آرایه عددی است یا خیر.

اعداد اعشاری

نرم‌افزار متلب اعداد اعشاری را با دقت Double و Single نمایش می‌دهد. در حالت پیش فرض، دقت نمایش اعداد Double است، اما با استفاده از یک تابع تبدیل ساده می‌توان اعداد با دقت Single را ایجاد کرد.

اعداد اعشاری با دقت Double

نرم‌افزار متلب داده‌های اعشار Double را بر اساس استاندارد 754 IEEE ایجاد می‌کند. هر مقداری که به صورت Double ذخیره شود، به ۶۴ بیت نیاز دارد. این ۶۴ بیت به صورت زیر اختصاص داده می‌شوند.

کاربردبیت‌ها
علامت (0 = مثبت، 1 = منفی)63
توان (بایاس شده با ۱۰۲۳)52 تا 62
قسمت اعشار f از عدد $$ \text {1.f} $$0 تا 51

اعداد اعشاری با دقت Single

نرم‌افزار متلب داده‌های اعشار Single را بر اساس استاندارد 754 IEEE ایجاد می‌کند. هر مقداری که به صورت Single ذخیره شود، به 32 بیت نیاز دارد. این 32 بیت به صورت زیر اختصاص داده می‌شوند.

کاربردبیت‌ها
علامت (0 = مثبت، 1 = منفی)31
توان (بایاس شده با 127)23 تا 30
قسمت اعشار f از عدد $$ \text {1.f} $$0 تا 22

توابع مربوط به داده‌های نوع اعشاری

توابع زیر مربوط به اعداد اعشاری در متلب هستند.

  • double: این تابع مقادیر را به داده‌های اعشار با دقت Double تبدیل می‌کند.
  • single: این تابع مقادیر را به داده‌های اعشار با دقت Single تبدیل می‌کند.
  • class: این تابع نوع داده یک شی (object) را باز می‌گرداند.
  • isa: این تابع تعیین می‌کند که آیا داده ورودی از یک نوع مشخص‌شده است یا خیر.
  • isfloat: این تابع تعیین می‌کند که آیا داده ورودی یک آرایه اعشاری است یا خیر.
  • isnumeric: این تابع تعیین می‌کند که آیا داده ورودی یک آرایه عددی است یا خیر.
  • eps: این تابع دقت نسبی اعشاری را باز می‌گرداند. این مقدار، تلرانسی است که متلب در ارزیابی‌های خود از آن استفاده می‌کند.
  • realmax: این تابع بزرگ‌ترین عدد اعشاری که کامپیوتر شما قادر به نمایش آن است را در خروجی باز می‌گرداند.
  • realmin: این تابع کوچک‌ترین عدد اعشاری که کامپیوتر شما قادر به نمایش آن است را در خروجی باز می‌گرداند.

اعداد مختلط

اعداد مختلط از دو بخش حقیقی (Real) و موهومی (Imaginary) تشکیل می‌شوند. واحد موهومی اولیه برابر با ریشه دوم عدد 1- است و در متلب با دو حرف i یا j نمایش داده می‌شود.

ایجاد اعداد مختلط در متلب

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

در این دستور، یک عدد مختلط با مقدار حقیقی ۲ و مقدار موهومی ۳ به متغیر x نسبت داده شده است.

توابع مربوط به داده‌های عددی نوع مختلط

برای اعداد مختلط نیز در متلب تعدادی تابع خاص وجود دارند.

  • complex: با استفاده از این تابع می‌توان از المان‌های حقیقی و موهومی اعداد مختلط ساخت.
  • i or j: با استفاده از این دو تابع می‌توان واحد موهومی که در ساخت عدد مورد استفاده قرار می‌گیرد را باز گرداند.
  • real: این تابع قسمت حقیقی عدد مختلط ایجاد شده را باز می‌گرداند.
  • imag: این تابع قسمت موهومی عدد مختلط ایجاد شده را باز می‌گرداند.
  • isreal: این تابع تعیین می‌کند که یک عدد حقیقی است یا موهومی.

تبدیل انواع داده در متلب

با استفاده از دستورات زیر می‌توان انواع داده در متلب را به یکدیگر تبدیل کرد.

  • char: این دستور داده را به آرایه کاراکتر یا String تبدیل می‌کند.
  • int2str: این دستور داده‌های صحیح را به نوع String تبدیل می‌کند.
  • mat2str: این دستور قادر است یک ماتریس را به String تبدیل کند.
  • num2str: این دستور اعداد را به String تبدیل می‌کند.
  • str2double: این دستور قادر است String را به عدد اعشاری با دقت double تبدیل کند.
  • str2num: با استفاده از این تابع می‌توان مقادیر String را به اعداد تبدیل کرد.
  • native2unicode: این تابع بایت‌های عددی را به کاراکترهای Unicode تبدیل می‌کند.
  • unicode2native: این تابع کاراکترهای Unicode را به بایت‌های عددی تبدیل می‌کند.
  • base2dec: این تابع رشته اعداد مبنای N را به اعداد دسیمال (مبنای ده) تبدیل می‌کند.
  • bin2dec: این تابع رشته اعداد باینری را به اعداد دسیمال تبدیل می‌کند.
  • dec2base: این دستور اعداد دسیمال را به رشته اعداد مبنای N تبدیل می‌کند.
  • dec2bin: این دستور اعداد دسیمال را به رشته اعداد باینری تبدیل می‌کند.
  • dec2hex: این تابع اعداد دسیمال را به رشته اعداد هگزا دسیمال تبدیل می‌کند.
  • hex2num: این دستور اعداد هگزا دسیمال را به رشته اعداد اعشاری با دقت Double تبدیل می‌کند.
  • num2hex: این تابع اعداد اعشاری با دقت Single و Double را به رشته هگزا دسیمال IEEE تبدیل می‌کند.
  • cell2mat: این دستور قادر است آرایه‌های سلولی را به آرایه‌های عددی تبدیل کند.
  • cellstr: با این تابع می‌توان از آرایه‌های کاراکتری، رشته‌ای از آرایه‌های سلولی ایجاد کرد.
  • mat2cell: با این تابع می‌توان آرایه‌ها را به آرایه‌های سلولی تبدیل کرد که سلول‌ها اندازه متفاوتی داشته باشند.
  • num2cell: با این تابع می‌توان آرایه‌ها را به آرایه‌های سلولی تبدیل کرد که سلول‌ها اندازه ثابتی داشته باشند.
  • struct2cell: این تابع داده‌های نوع Structure را به داده‌های نوع آرایه سلولی تبدیل می‌کند.

مثال

در این قسمت می‌خواهیم چند مثال از نحوه تعریف کردن داده‌ها در متلب را بیان کنیم.

در قطعه کد زیر، چند نوع از داده‌ها را تعریف کرده‌ایم.

str='Hello World!'

n=2345

d=double(n)

un=uint32(789.50)

rn=5678.92347

c=int32(rn)

در زیر نتیجه حاصل از اجرای این قطعه کد را می‌توان مشاهده کرد.

str=Hello World!

n=  2345

d=  2345

un=790

rn=5678.9

c=  5679

همچنین در کد زیر از تعدادی توابع مربوط به انواع داده در متلب استفاده کرده‌ایم.

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=[123]

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

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

در این مطلب به بررسی انواع داده در متلب پرداختیم و دیدیم که در متلب ۱۵ نوع اساسی داده وجود دارد. یکی از انواع داده در متلب آرایه عددی است که خود دو نوع صحیح و اعشاری دارد. نوع صحیح خود شامل دو نوع علامت‌دار و بدون علامت و نوع اعشاری دارای دو نوع با دقت‌های Single و Double است. البته داده‌هایی مانند آرایه سلولی و آرایه ساختاری در مطالب دیگر به صورت مفصل‌تر بیان خواهند شد. همچنین در این مطلب با دستوراتی برای تبدیل انواع داده در متلب آشنا شدیم.

اگر این مطلب برایتان مفید بوده است، آموزش‌های زیر نیز به شما پیشنهاد می‌شوند:

^^

مرضیه آقایی (+)

«مرضیه آقایی» دانش‌آموخته مهندسی برق است. فعالیت‌های کاری و پژوهشی او در زمینه کنترل پیش‌بین موتورهای الکتریکی بوده و در حال حاضر، آموزش‌های مهندسی برق مجله فرادرس را می‌نویسد.

بر اساس رای 12 نفر

آیا این مطلب برای شما مفید بود؟

آیا این مطلب برای شما مفید بود؟


منبع: blog.faradars.org



ارسال نظر

نام


ایمیل


نظر