آموزش متلب

تقسیم اعداد و چگونگی رند کردن حاصل آن در متلب

تقسیم کردن (Division) اعداد، با برگرداندن نتیجه به صورت اعداد صحیح (Integer) و با امکان تعیین گزینه هایی برای چگونگی گرد کردن (رند کردن – Round) نتیجه، با دستور idivide ، در متلب (MATLAB)

دستور idivide در متلب (MATLAB)، برای تقسیم کردن (Division) اعداد به کار می رود و همچنین بخش اعشاری نتیجه را حذف می کند تا نتیجه تقسیم به صورت یک عدد صحیح (Integer) باشد.

دستور idivide برای تقسیم A بر B ، به صورت زیر به کار می رود (که A و B می توانند هر کدام یک عدد و یا هر کدام یک ماتریس با اندازه مشابه باشند و در حالت ماتریس بودن، عنصرهای متناظر از دو ماتریس A و B بر یکدیگر تقسیم می شوند) :

C = idivide(A, B)

که در واقع معادل کد زیر می باشد، تنها با این تفاوت که بخش اعشاری آن حذف می شود (با گرد کردن) :

C = A./B

ما می توانیم تعیین کنیم که وقتی دستور idivide ، نتیجه را گرد (رند – Round) می کند (برای حذف قسمت اعشاری آن)، از چه دستوری (مرتبط با گرد کردن) استفاده نماید. برای این منظور، می توانیم هر یک از 4 مورد (دستور) زیر را برای نوع گرد (رند – Round) کردن، انتخاب نماییم :

fix
round
floor
ceil

یعنی دستور idivide می تواند به شکل های زیر به کار رود :

C = idivide(A, B, ‘fix’)
C = idivide(A, B, ’round’)
C = idivide(A, B, ‘floor’)
C = idivide(A, B, ‘ceil’)

به مثال زیر توجه کنید :

مثال
clear all
close all
clc

A = 4;
B = 3;
C = A./B

A = int32(A);
B = int32(B);
C = idivide(A, B)

3 خط اول کدها، برای عدم تداخل برنامه فعلی با برنامه های قبلی اجرا شده در متلب (MATLAB) می باشد.

اگر از دستور int32 برای تبدیل اعداد استفاده نکنیم، با پیام خطا روبرو خواهیم شد (دستور int32 ، عدد دریافت شده را به عدد صحیح (Integer) از نوع int32 تبدیل می کند، یعنی تبدیل به عدد صحیح (Integer) ذخیره شده بر مبنای تعریف 32 بیتی (32-bit)).

نتیجه :

C =

    1.3333

C =

           1

مثال
clear all
close all
clc

A = [4 6 5 8 7];
B = [3 4 1 3 7];
C = A./B

A = int32(A);
B = int32(B);
C = idivide(A, B)

نتیجه :

C =

    1.3333    1.5000    5.0000    2.6667    1.0000

C =

           1           1           5           2           1

مثال
clear all
close all
clc

A = [4 6 5 8 7];
B = [3 4 1 3 7];
C = A./B

A = int32(A);
B = int32(B);
C = idivide(A, B)

C_fix = idivide(A, B, ‘fix’)
C_round = idivide(A, B, ’round’)
C_floor = idivide(A, B, ‘floor’)
C_ceil = idivide(A, B, ‘ceil’)

نتیجه :

C =

    1.3333    1.5000    5.0000    2.6667    1.0000

C =

           1           1           5           2           1

C_fix =

           1           1           5           2           1

C_round =

           1           2           5           3           1

C_floor =

           1           1           5           2           1

C_ceil =

           2           2           5           3           1

نکته

اگر از دو متغیر A و B ، یکی ماتریس و دیگری تنها یک عدد (Scalar) باشد، آنگاه آن متغیری که تنها یک عدد (Scalar) بوده، برابر ماتریسی با اندازه متغیر دیگر و با عنصرهای برابر همان عدد تنها، در نظر گرفته می شود و عملیات تقسیم بر روی عناصر متناظر از دو ماتریس، اجرا می گردد.

به مثال زیر توجه کنید :

مثال
clear all
close all
clc

A = 4;
B = [3 4 1 3 7];
C = A./B

A = int32(A);
B = int32(B);
C = idivide(A, B)

نتیجه :

C =

    1.3333    1.0000    4.0000    1.3333    0.5714

C =

           1           1           4           1           0

مثال
clear all
close all
clc

A = [4 6 5 8 7];
B = 3;
C = A./B

A = int32(A);
B = int32(B);
C = idivide(A, B)

نتیجه :

C =

    1.3333    2.0000    1.6667    2.6667    2.3333

C =

           1           2           1           2           2

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *