آموزش مقدماتی متلب در چند بخش تهیه شده و می توانید در ویلاگ متلبی از آن بهره ببرید.
توابع ریاضی موجود در متلب:

Sin,cos,tan,cot

Log(x)

که همان

ln(x)

است.
Log10(x) که همان log در پایه ی 10 است.
Log2(x) که همان log در پایه ی 2 است.

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)

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

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
این مستطیل برای معماری کاربرد دارد.در این مستطیل نسبت طول به عرض برابر است با:

1+sqrt(5))/2)

که حاصل آن برابر است با تقریبا 1/6
اگر بنا ها با این نسبت ساخته شوند خیلی زیبا تر به چشم می آیند.
اگر از مستطیل طلایی یک مربع جدا کنیم، شکل باقیمانده خود یک مستطیل طلایی است.
طریقه ی ایجاد :
یک مربع میکشیم و وسط یک ضلع را مییابیم به اندازه ی فاصله ی این نقطه ی وسط تا ضلع روبرویش یک کمان میزنیم و سپس ادامه می دهیم
ابتدا یک 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’)


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

رسم چند plot در یک figure :

Subplot(n,m,x)

که در این جا n تعداد سط ها ، m تعداد ستون ها x شماره ی plot است.
برای title و یا label گذاشتن در اینجا باید بعد از هر plot این کار را انجام بدهیم.
در یک figure 6 قسمتی، در plot پنجم سینوسی و در plot دوم لگاریتمی و در plot سوم tan رسم کنید:

clc

clear all

close all

fs=100;

t=-1:1/fs:1;

y1=sin(2*pi*t);

subplot(2,3,5)

plot(t,y1),xlabel(‘time’)

y2=log(t)

subplot(2,3,2)

plot(t,y2)

y3=tan(t)

subplot(2,3,3)

plot(t,y3)


اگر بخواهیم یکی از subplot ها مثلا به اندازه ی 2 subplot باشد یعنی بزرگتر از subplot های دیگر باشد، از روش زیر استفاده میکنیم.در مثال پایین plot سومی در دو جایگاه سوم و چهارم قرار میگیرد و به اندازه ی دو برابر سایر plot هاست.

clc

clear all

close all

fs=100;

t=0:1/fs:1;

x1=sin(2*pi*t);

x2=exp(-t);

x3=(x1.*x2);

subplot(2,2,1)

plot(t,x1)

subplot(2,2,2)

plot(t,x2)

subplot(2,2,3:4)

plot(t,x3)

نمودار میله ای:
bar(x,f(x))

نمودار گسسته:

Stem(x,f(x))

نمودار پلکانی:

Stairs(x,f(x))

نمودار هیستوگرام:

Hist(f(x),x)

توابع سمبولیک یا آنالوگ:
چندجمله ای: polynomial
A=[2 4 6 8] معرف چند جمله ای درجه 3 است.

A=[an,a(n-1),a(n-2),…,a0]

معرف ضرایب چند جمله ای درجه n است.
X=roots(a) که در آن a یک بردار است، ریشه ها را به ما می دهد.
Poly(x) ضرایب را به ما میدهد.
به طوری که roots و poly برعکس هم عمل میکنند.
هر گاه از poly استفاده کنیم، همیشه ضریب an را 1 میگیرد و بقیه را تقسیم بر ضریب an میکند تا ضریب an 1 شود.

برای تبدیل polynomial به سمبولیک:
poly2sym()

A=[2 4 6 8]

Poly2sym(a)

Ans=

2*x^3+4*x^2+6*x+8

Syms x بعد از نوشتن این عبارت enter میزنیم و x را به عنوان یک سمبل در نظر میگیرد.
حالا میتوان از این سمبل استفاده کرد و سمبل های دیگر ساخت.

Y=sin(x)

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

Ezplot(y)

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

Syms x

Y=sin(x)

Ezplot(y)

به صورت پیش فرض بین -2pi و 2pi رسم میکند.
اگر بخواهیم پیش فرضش را تغییر بدهیم:

Ezplot(y,[-10,10])


اگر متغیر قبلا سمبولیک نشده باشد میتوانیم داخل ” قرار بدهیم.

Ezplot(‘z^3’)


که در این حالت میتوانیم برای y هم مختصات تعریف بکنیم.

Pretty(a)

به حالت دست نویس نشان میدهد.

Simple(y) بسط ها را نشان می دهد.
Factor(a) اگر سمبلی قابل فاکتور گرفتن باشد از آن فاکتور میگیرد.

Conv(a,b) که در آن a و b ضرائب چند جمله ای هستند، ضرب convolution انجام می دهد.
Convolution وقتی به حوزه ی فرکانس برود به ضرب تبدیل میشود. برای فیلتر کاربرد دارد.
Deconv(a,b) تقسیم است.
مشتق چند جمله ای در بحث چند جمله ای:
Polyder(a)
که در این جا a ضرایب چند جمله ای ست.

Polyder(a,b)

مشتق ضرب چند جمله ای است.

[A B]=polyder(a,b)

مشتق تقسیم چند جمله ای است.
ارزیابی چند جمله ای ها:

Polyval(a,x0)

عدد با بردار x0 را در چند جمله ای a مقدار دهی میکند.

مقدار دهی در حالت سمبولیک:

Subs(f,’x’,a)

عدد a را در تابع f به جای x قرار می دهد.

می توانیم به جای یک متغیر چند مقدار مختلف بگذاریم:
مثلا :

F=x^z-sin(x+z)

Subs(f,'[x y z]’,[1 pi/2 2])

آموزش مقدماتی متلب در چند بخش تهیه شده و می توانید در ویلاگ متلبی از آن بهره ببرید.
اعداد تصادفی: rand
Rand بین صفر و یک است.

Rand(n,m)

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

9*rand(n,m)

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

Round

مثلا:

Round(rand(5,9))

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

Min<rand<max

Min+(max-min)*rand

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

Randperm(n)

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

Ex:
( randperm(13

Ans=

1 12 9 6 3 5 8 10 13 2 11 7 4

اعداد تصادفی با توزیع نرمال:
randn(x)

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

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 شود).
باید توجه داشت که mfile ها را با نام عدد ذخیره نکنیم و همچنین با اسم توابع نیز ذخیره نشود.
توابع رسم:
ایجاد یک سری نقاط با گام های مختلف:
T=0:10 0 1 2 3 4 5 6 7 8 9 10 گام پیش فرض

T=0:2:10 0 2 4 6 8 10

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

Linspace(a,b)

که a عدد ابتدا و b عدد انتهاست.
پیش فرض این است که 100 نقطه تعریف ند.
Linspace(1,5,5) 1 2 3 4 5 5 نقطه می دهد، با فواصل یکسان.
زمان 0 تا 1 با فرکانس نمونه برداری 100 یعنی در هر ثانیه 100 تا نمونه به ما بدهد.

Fs=100

T=0:1/fs:1

Sin()

Sin ورودی را رادیان می بیند.
Sind() ورودی را درجه می بیند.
اگر یک 2*pi ضرب کنیم، از 0 تا 1 را میبرد به 0 تا 180.
رسم:

Plot(x,fx)


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

plot(t,y,’.’)

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

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

Plot(t,y,’x’)

Plot(t,y,’+’)


و همچنین رنگ plot نیز میتواند تغییر کند:
R قرمز b آبی k مشکی g سبز y زرد m صورتی c لاجوردی

Plot(t,y,’vc)

به رنگ صورتی و شکل مثلثی (v)

آموزش مقدماتی متلب در چند بخش تهیه شده و می توانید در ویلاگ متلبی از آن بهره ببرید.
در این آموزش متلب قصد داریم با دستورات متداول نرم افزار Matlab بیشتر آشناتون کنیم. تا پایان با ما باشید:
توضیح مختصر از پنجره های موجود در صفحه ی اصلی متلب:

Command window

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

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

به صورت پیش فرض در متلب اعداد تا 4 رقم اعشار نمایش داده می شوند . اگر بخواهیم به فرمت طولانی تر تبدیل کنیم، که تعداد ارقام بیشتری را نشان دهد: Format long
اگر بخواهیم به فرمت قبل برگردد: Format short
هر بار که برنامه ی متلب را ببندیم و باز کنیم به فرمت قبل خود که همان 4 رقم اعشار است بر می گردد .
برای نمایش اعداد تا 4 رقم اعشار :

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

2011 9 2 4 15 3223/87

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

format long

>> clock

ans =

1.0e+003 *

2.01100000000000 0.00900000000000 0.00200000000000 0.00400000000000 0.01700000000000 0.04654600000000

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

Ex:

[1 2 3 4 5 6 7 8 9]

ans =

1 2 3 4 5 6 7 8 9

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

[1 2 3 ;4 5 6 ;7 8 9]

ans =

1 2 3

4 5 6

7 8 9

نماد ; دو کاربرد دارد یکی در همینجا که سطر های یک ماتریس را به وسیله ی آن مشخص می کنیم و دیگری در برنامه ها است که اگر در آخر هر دستور از ; استفاده کنبم، نتیجه ی آن خط دستور نمایش داده نمی شود.
برای یافتن تعداد سطر و ستون ماتریس از تابع 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)

1 0 0 0 0

0 1 0 0 0

0 0 1 0 0

Ones(a,b)

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

Zeros(a,b)

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

Ex:

Zeros(3)

ans=

0 0 0

0 0 0

0 0 0

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

X(n,m)

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

Ex:

Ones(3)

Ans=

1 1 1

1 1 1

1 1 1

Ans(1,3)=4

Ans=

1 1 4

1 1 1

1 1 1

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

A(1:2,3:6)

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

A(:)

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

A(1:3,4)=[]