آشنایی با نرم افزار متلب – بخش یکم

این پست، بخشی از ضمیمه ب کتاب واقعیت مجازی و انیمیشن برای کاربران MATLAB و Simulink است که از سوی مولف این کتاب برای انتشار در اختیار متلب سایت قرار گرفته است. برای آشنایی بیشتر با این کتاب و کسب اطلاعات بیشتر، می توانید به این لینک(+) مراجعه نمایید.

توضیح مختصر از پنجره های موجود در صفحه ی اصلی متلب

این پست، بخشی از ضمیمه ب کتاب واقعیت مجازی و انیمیشن برای کاربران MATLAB و Simulink است که از سوی مولف این کتاب برای انتشار در اختیار متلب سایت قرار گرفته است. برای آشنایی بیشتر با این کتاب و کسب اطلاعات بیشتر، می توانید به این لینک(+) مراجعه نمایید.

توضیح مختصر از پنجره های موجود در صفحه ی اصلی متلب

Command window

 

پنجره ی فرمان
هرگونه محاسبه مثل ۴ عمل اصلی را در این پنجره میتوانیم مشاهده کنیم . هم چنین میتوانیم حاصل این اعمال را نیز در یک متغیر بریزیم.

Current directory

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

work space

تمام متغیر هایی که در command window معلوم کردیم را در این جا نشان می دهد.

Command history

تمام دستورات قبلی که اجرا کرده ایم در اینجا ذخیره می شود . همچنین میتوانیم با استفاده از کلید های جهت نما به دستورات قبلی برویم.
اگر در work space بر روی هر کدام از متغیر ها click کنیم، مشخصات آن را نشان میدهد . مثلا از جنس ماتریس است.
در این قسمت برخی دستورات ساده و مقدماتی گفته می شود :

Clc :

این دستور کل پنجره ی command window را پاک میکند .

اگر بخواهیم یکی از متغیر های موجود در work space را پاک کنیم، به صورت دستور زیر:

Clear  a

متغیرa  از work space پاک میشود .

Clear   a   b

 
متغیر a  و متغیر b را پاک میکند.
پاک کردن کلیه ی متغیر ها از work space:

Clear all         یا       clear

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

 
متلب حروف یونانی را پشتیبانی نمیکند . فقط در قسمت ترسیم ها (plot) می توان برای عنوان گذاری از حروف یونانی استفاده کرد . که در مباحث بعدی توضیح داده می شود .

Pi=3.1416

به صورت پیش فرض در متلب اعداد تا ۴ رقم اعشار نمایش داده می شوند . اگر بخواهیم به فرمت طولانی تر تبدیل کنیم، که تعداد ارقام بیشتری را نشان دهد:  

Format   long

اگر بخواهیم به فرمت قبل برگردد:    

Format    short

هر بار که برنامه ی متلب را ببندیم و باز کنیم به فرمت قبل خود که همان ۴ رقم اعشار است بر می گردد .
برای نمایش اعداد تا ۴ رقم اعشار :        

Format bank

اگر جلوی هر کدام  بگذاریم     به صورت نماد علمی نشان می دهد

.Format longe

 

فرمت کسری

Format rat

Ex:
Format rat
Pi
Ans
355/113

برای فرمت هگزا دسیمال:

Format hex

*****فرمت فشرده :

Format compact

برای حذف کردن خط اضافه ی بین هر دو خط . یعنی خطوط فشرده تر می شوند.
برای بازگشت به حالت قبل:

Format loose

برای تعیین دقت محاسبه از تابع زیر استفاده می کنیم:

Vpa:                        variable precision arithmetic

همه ی توابع در متلب ورودی میخواهند که این ورودی باید داخل پرانتز نوشته شود.

Vpa(pi,n)

عدد π را تا n رقم اعشار نمایش می دهد.

برای محاسبه زمان دستورات از دستور tic   toc استفاده می کنیم بدین صورت که قبل از دستوراتی که میخواهیم زمانش را بفهمیم، tic و در آخر مجموعه دستورات toc مینویسیم .
و همچنین با تایپ دستور clock زمان کامپیوتر را به ما میدهد.
به عنوان مثال:

Format rat

 

Clock

 

Ans

۲۰۱۱              ۹              ۲              ۴             ۱۵           ۳۲۲۳/۸۷

و یا با فرمت دیگر

format long

>> clock

ans =

  ۱٫۰e+003 *

   ۲٫۰۱۱۰۰۰۰۰۰۰۰۰۰۰   ۰٫۰۰۹۰۰۰۰۰۰۰۰۰۰۰   ۰٫۰۰۲۰۰۰۰۰۰۰۰۰۰۰   ۰٫۰۰۴۰۰۰۰۰۰۰۰۰۰۰   ۰٫۰۱۷۰۰۰۰۰۰۰۰۰۰۰   ۰٫۰۴۶۵۴۶۰۰۰۰۰۰۰۰

ماتریس
برای وارد کردن ماتریس در برنامه ، باید از کروشه استفاده کنیم:

Ex:
[1 2 3 4 5 6 7 8 9]

ans =

     ۱     ۲     ۳     ۴     ۵     ۶     ۷     ۸     ۹

برای جدا کردن سطر ها باید مطابق زیر عمل کنیم :

[۱ ۲ ۳ ;۴ ۵ ۶ ;۷ ۸ ۹]

 

 

ans =

 

     ۱     ۲     ۳
     ۴     ۵     ۶
     ۷     ۸     ۹  

نماد ;  دو کاربرد دارد یکی در همینجا که سطر های یک ماتریس را به وسیله ی آن مشخص می کنیم و دیگری در برنامه ها است که اگر در آخر هر دستور از ;  استفاده کنبم، نتیجه ی آن خط دستور نمایش داده نمی شود.
برای یافتن تعداد سطر و ستون ماتریس از تابع size استفاده میشود.

Size(a)

تعداد سطر و ستون ماتریس A را نمایش می دهد.
اگر به شکل زیر تعریف کنیم، تعداد سطر ها میردو در a و تعداد ستون ها میرود در b

[a b]=size(q)

برای فهمیدن تعداد سطر ها یا همان طول ماتریس از تابع length استفاده می کنیم:

Length(a)

تابع دترمینان:

Det(a)

برای استفاده از این تابع، ماتریس حتما باید مربعی باشد.
اگر مربعی نباشد با error زیر مواجه میشویم:

 

??? Error using ==> det

Matrix must be square.

معکوس یک ماتریس:

Inv(a)

اگر دترمینان یک ماتریس، صفر باشد معکوس آن ماتریس تعریف نشده است.
برای اعمال یک سری تغییرات در ماتریس از دستورات زیر استفاده می کنیم:

Triu(a) 

  :   
بالا مثلثی

Trid(a) 

   :   
پایین مثلثی

Diag(a) 

   :  
قطر اصلی

Flipud(a) 

   :
چرخش از بالا به پایین

Fliplr(a)

    :
چرخش از چپ به راست
برای یافتن قطر فرعی میتوانیم دو تابع را ادغام کنیم :

diag(fliplr(a))

 

ماتریس های خاصی که در متلب تعریف شده اند:

Eye(n,m)  

ماتریس واحد به ما می دهد.
N تعداد سطر
M  تعداد ستون
اگر ماتریس واحد مربعی بخواهیم eye(n)  ، ماتریس n*n واحد میدهد .

 

Ex: eye(3,5)

 

۱ ۰ ۰ ۰ ۰
۰ ۱ ۰ ۰ ۰
۰ ۰ ۱ ۰ ۰

Ones(a,b)

یک ماتریس  n*m که همه ی درایه هایش ۱ است.

Zeros(a,b)

یک ماتریس  n*m که همه ی درایه هایش صفر است.

Ex:

 

Zeros(3)

ans=

 

     ۰     ۰     ۰
     ۰     ۰     ۰
     ۰     ۰     ۰

مثلا وقتی میخواهیم اول برنامه قالب ماتریس را معلوم کنیم و بعد درایه ها را تغییر بدهیم.

آدرس دهی ماتریس:

X(n,m)

برای مقدار دهی درایه و یا تغییر مقدار آن:

Ex:

 

 Ones(3)

Ans=
1 1 1

۱ ۱ ۱
۱ ۱ ۱
Ans(1,3)=4

Ans=
1 1 4
1 1 1

۱ ۱ ۱

برای اینکه یک قسمت از یک ماتریس را برداریم :

A(1:2,3:6)

یعنی سطر اول تا دوم و ستون سوم تا ششم

A(:)

همه ی عناصر را ستونی نشان می دهد .
برای حذف یک قسمت از ستون ها یا سطر ها آن ها را برای تهی قرار می دهیم :

A(1:3,4)=[]

اعداد تصادفی: rand
Rand بین صفر و یک است.

Rand(n,m)

یک ماتریس تصادفی n*m می دهد.
اگر مثلا بخواهیم اعداد تصادفی بین صفر تا نه باشند:

۹*rand(n,m)

اگر بخواهیم اعشار نداشته باشد :

Round

مثلا:

Round(rand(5,9))

 

اگر بخواهیم اعداد تصادفی بین range دلخواه خودمان باشد،

 

Min<rand<max

 

Min+(max-min)*rand

جایگشت های تصادفی اعداد: permutation

Randperm(n)

از یک تا n به صورت تصادفی جایگشت مینویسد:

 

Ex:

 

( randperm(13

 

Ans=

 

     ۱    ۱۲     ۹     ۶     ۳     ۵     ۸    ۱۰    ۱۳     ۲    ۱۱     ۷     ۴

اعداد تصادفی با توزیع نرمال:

randn(x)

ماتریس x*x میدهد که با توزیع نرمال همه ی اعداد در اطراف ۱ هستند اعداد خیلی بزرگ یا خیلی کوچک ندارد.
اگر بخواهیم اعداد تصادفی با میانگین و واریانس دلخواه داشته باشیم:

M+s^2(randn(x))

که s^2 همان واریانس و m میانگین است.

Sum(a)

از ماترس a از هر ستون جمع میگیرد.

Sum(a(:))

 

جمع همه ی درایه ها
Prod(a) از هر ستون همه ی درایه ها را ضرب می کند.
ضرب همه ی درایه ها

: prod(a(:))

اگر بخواهیم از هر سطری بگیرد و جمع  یا ضرب کند، از A’ استفاده میکنیم.

Sqrt جذر میگیرد.
Nthroot(x,n)  n امین ریشه ی x را میگیرد.
برای اینکه بخواهیم از کاربر مقداری دریافت شود، از input استفاده میکنیم . مثلا میخواهیم مقداری مثل a وارد شود سپس بر روی مقدار عددی a اعمالی انجام شود:

A=input(‘please insert a=’)

 

مثال:
برنامه ای بنویسید که کاربر یک ماتریس را به طور دلخواه وارد کرده و برنامه، حاصل جمع تمام درایه ها و سایز آن ماتریس را نمایش دهد.
برای شروع برنامه نویسی ابتدا باید یک mfile باز کنیم:
بعد از نوشتن برنامه f5 میزنیم تا run  شود( اول باید save شود).

1

باید توجه داشت که mfile  ها را با نام عدد ذخیره نکنیم و همچنین با اسم توابع نیز ذخیره نشود.

توابع رسم:

ایجاد یک سری نقاط با گام های مختلف:

T=0:10       ۰ ۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰ گام پیش فرض
T=0:2:10          ۰ ۲ ۴ ۶ ۸ ۱۰

ایجاد نقاط با فواصل خطی:

Linspace(a,b)

که a عدد ابتدا و b  عدد انتهاست.
پیش فرض این است که ۱۰۰ نقطه تعریف ند.
Linspace(1,5,5)     ۱ ۲ ۳ ۴ ۵       ۵ نقطه می دهد، با فواصل یکسان.

زمان ۰ تا ۱ با فرکانس نمونه برداری ۱۰۰ یعنی در هر ثانیه ۱۰۰ تا نمونه به ما بدهد.

Fs=100

T=0:1/fs:1

Sin()

Sin ورودی را رادیان می بیند.

Sind() ورودی را درجه می بیند.

اگر یک ۲*pi ضرب کنیم، از ۰ تا ۱ را میبرد به ۰ تا ۱۸۰٫
رسم:

Plot(x,fx)

 

 2

تغییراتی در شکل ظاهری نمودار های رسم شده:

plot(t,y,’.’)   

شکل را بدون اینکه نقاط را به هم وصل کند رسم می کند.

3

اگر به جای . از o  استفاده کنیم به شکل دایره دایره نمایش می دهد.
و اشکال دیگر به صورت زیر می باشند:

Plot(t,y,’x’)

 

4

 

Plot(t,y,’+’)

 

 5

و همچنین رنگ  plot نیز میتواند تغییر کند:

R  قرمز  b آبی   k مشکی g سبز y زرد m صورتی c لاجوردی

Plot(t,y,’vc)    به رنگ صورتی و شکل مثلثی (v)

 

6

توابع ریاضی موجود در متلب:

Sin,cos,tan,cot

Log(x) که همان ln(x) است.
Log10(x) که همان log در پایه ی ۱۰ است.
Log2(x) که همان log  در پایه ی ۲ است.

Exp(x)=e^x

و توابع مثلثاتی بر حسب درجه: sind,cosd,sinh,cosh
اگر بعد از هر plot از Hold on استفاده کنیم ، تصویر plot را نگه می دارد .

اگر بخواهیم یک figure جدید باز کند میتوانیم قبل از plot بنویسیم figure و نام مورد نظر را هم جلوی آن بنویسیم که اگر نام را ننویسیم به صورت پیش فرض با عدد شماره گذاری می شود.
اگر اول برنامه close all  بنویسیم، تمام پنجره های قبلی بسته می شود.
اعمالی که میتوان بر روی plot ها انجام داد:

Title(‘onvan’)

عنوان مورد نظر به شکل اضافه می شود.

Xlabel(‘   ‘)

 

Ylabel(‘   ‘)

برای محور ها برچسب گذاشته میشود.
Axis off    &    axis on محور های مختصات را خاموش و روشن میکند.
Grid on      & grid off        شکل را به صورت شبکه ای نمایش می دهد.
Axis equal زمان محور های مختصات x و y را مساوی میگیرد.
Axis normal به حالت عادی بر میگرداند .
Axis tight مختصات را به روی شکل fit  میکند.
استفاده از دستور legend برای هر نمودار یک برچسب مشخص می کند .

Legend(‘     ‘,’     ‘)

اگر بخواهیم داخل plot و در مختصات خاصی ه مورد نظر ما است یک متنی نوشته شود:

Text(x,y,’matn’)

که x و y همان مختصات مورد نظرماست.
اگر از دستور gtext(‘matn’) استفاده کنیم ، بر روی figure   که می رویم هر جا کلیک کنیم متن را برایمان مینویسد.

Rem      reminder  باقیمانده ی تقسیم a بر b       rem(a,b)
Floor(a)            به سمت عدد کوچکتر گرد می کند . همان براکت است.

Fix(a) قسمت اعشار را    حذف میکند.
Min(a) مینیموم هر ستون را می دهد.
Max(a) برای هر ستون یک متکسیمم می دهد.
اگر بخواهیم مقادیر ی ماترس را نرمالیزه کنیم برای این کار ابتدا باید max همه ی مقادیر را به دست بیاوریم و بعد تمام مقادیر را تقسیم بر آن max میکنیم.
Sort(a) تمام ستون ها را از کوچک به بزرگ مرتب می کند.
Mean(A) میانگین تمتم ستون ها را به ما می دهد.
Meanz(a) میانگین تمام درایه ها را به ما می دهد.
Dot(a,b) ضرب داخلی که نتیجه ی آن یک عدد است.
Cross(a,b) ضرب خارجی که نتیجه ی آن یک بردار است.

Gcd(a,b)                  Greatest common divisor

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

Lcm(a,b)                     least common multiplier

کوچکترین مضرب مشترک دو عدد را نمایش می دهد.
اگر روی یک تابع راست کلیلک کنیم و open selection را بزنیم کل دستورات mfile که نوشته شده تا این تابع انجام پذیرد را می بینیم.
برای اینکه در کار با ماتریس ها بخواهیم ضرب یا تقسیم درایه ها را نظیر به نظیر انجام بدهیم باید از .*   و    ./   استفاده بکنیم.

Isprime(b)

آیا عدد اول هست یا نه
اگر یک بدهد یعنی عدد مورد نظر اول بوده است و اگر صفر بدهد یعنی عدد اول نبوده است.
مثال:    
اعداد اول ۱ تا ۱۰۰۰ را مشخص کنید:

Clc
Clear all
T=1:1000;
A=isprime(t);
r=t.*A;
r’

علامت ‘     میگذاریم تا ستونی نمایش دهد و راحت تر ببینیم.

اعداد مختلط:

اعداد مختلط در متلب به صورت  a+b*j و یا    a+b*i نمایش داده میشوند. (باید i و j به عنوان متغیر قبلاً استفاده نشده باشند)

Z=complex(a,b)   عدد مختلط را می خواند.
Real(z) برای مشاهده ی قسمت حقیقی
Imag(z) برای مشاهده و قسمت موهومی
Abs(z) اندازه ی عدد مختلط را به ما می دهد.
Angle(z) زاویه ی عدد مختلط را به ما می دهد . بر حسب زاویه
X*(180/pi)   رادیان را به زاویه میبرد.

مثال:رسم مستطیل طلایی:  

 

golden rectangle

این مستطیل برای معماری کاربرد دارد.در این مستطیل نسبت طول به عرض برابر است با:

۱+sqrt(5))/2)

که حاصل آن برابر است با تقریبا ۱/۶
اگر بنا ها با این نسبت ساخته شوند خیلی زیبا تر به چشم می آیند.
اگر از مستطیل طلایی یک مربع جدا کنیم، شکل باقیمانده خود یک مستطیل طلایی است.
طریقه ی ایجاد :
 یک مربع میکشیم و وسط یک ضلع را مییابیم به اندازه ی فاصله ی این نقطه ی وسط تا ضلع روبرویش یک کمان میزنیم و سپس ادامه می دهیم
ابتدا یک mfile باز می کنیم:

clc
clear all
phi=(1+sqrt(5))/2;
x=[0 phi phi 0 0]
y=[0 0 1 1 0]
plot(x,y)
x1=[1 1]
y1=[0 1]
hold on
plot(x1,y1)
axis off
text(-0.05,0.5,’1′)
text(0.5,-0.05,’1′)
text(phi/2,1.05,’\phi’)
text(1+(phi-1)/2,-0.05,’\phi-1′)
text(1.05,0.5,’1′)
set(gcf,’color’,’w’)

 

7
برای نمایش حروف فقط در  plot ها میتوانیم با استفاده از نام انگلیسی آن ها به همراه \ این کار را انجام دهیم.
مطابق phi در رسم مستطیل بالا.

مطالب پیشنهادی‎

پاسخی بگذارید

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