آموزش مقدماتي
Download
Report
Transcript آموزش مقدماتي
جزوه آموزش ی مطلب
()MATLAB
?What is MATLAB
•
)MATLAB (MATrix LABoratory
یک زبان برنامه نویس ی سطح با ال برای انجام برنامه های محاسباتی است.
•
دارای محیطی است که انجام محاسبات ،برنامه نویس ی او مشاهده نتایج آنها را به راحتی
ی نمود.
می توان پیاده ساز ا
•
یر اشاره نمود.
ااز مهمترین کاربردهای آن می توان به موارد ز ا
•
ریاضیات او محاسبات عددی
•
ی آلگوهای مختلف
پیاده ساز ا
•
ی
ی او نمونه ساز ا
مدل سازی ،شبیه ساز ا
•
ی
تحلیل داده های آمار ا
•
ی او مهندس ی
ترسیم نمودارهای مختلف آمار ا
•
پردازش تصویر
•
رباتیک
Matlab
High Level
Languages such as
C, Pascal etc.
Assembly
مطلب برنامه ای ترجمه شده ( )compileبا مزایا و معایب خاص خودش است.
اگرچه مترجم آن وجود دارد اما از نظر سرعت تعریفی ندارد.
مزایا
سرعت بالی نمونه سازی
یادگیری اسان به دلیل راهنمای بسیار کامل
کتابخانه کامل برای توابع پردازش تصویر
توانایی نمایش عالی
گستردگی استفاده در مراکز آموزش ی و صنعتی
معایب
سرعت کم برای برخی از انواع پردازش ها
مناسب نبودن برای پیاده سازی سیستم های مقیاس بزرگ
برخی از ویژگی های محیط مطلب
Matlab
Series of
Matlab
commands
m-files
Command
Line
mat-files
functions
Input
Output
capability
Command execution
like DOS command
window
Data
storage/
loading
مطلب یک برنامه برای انجام محاسبات عددی است.
در اوايل دهه 1980با زبان Cبازنويس ي شد.
در اوايل دهه 1970توسط Cleve Moler,به وجود آمد .ا
ا
در 1984شركت Mathworkتأسيس شد.
جبر خطی با استفاده ااز ماتریس طراحی شد.
بار این برنامه برای حل مسایل ا
نخستین ا
به همین دلیل نام آن مخفف آزمایشگاه ماتریس ( )MATrix LABoratoryاست.
ظیر تحلیل
بسیار گسترش یافته او شامل توابع ااز پیش ساخته بسیاریا برای حل مسایل مختلف ن ا
ا
امروزه این برنامه
دیگر محاسبات علمی است.
داده ها ،پردازش سیگنال ،بهینه سازیا او انواع ا
این برنامه همچنین شامل توابعی برای گرافیک دو و سه بعدی می باشد.
همه چیز در مطلب به صورت یک ماتریس است.
ظاهر شده او دستورا
ا
بر دستورا است .یک پرومپت روی صفحه
محیط مطلب شبیه سیستم عامل لینوکس مبتنی ا
نظر جلویا آن وارد می شود.
مورد ا
ظاهر می شود.
ا
وقتی که کلید > <Enterزده می شود دستورا وارد شده اجرا شده او پرومپت دیگریا
اگر جمله ای با سمیکالونا (;) تمام شود هیچ نتیجه ای نمایش داده نمی شود .بدونا آن قبل ااز پرومپت بعدی حاصل
ا
دستورا نمایش داده می شود.
.ظاهر می شود
یر ا
بار این برنامه اجرا می شود پنجره ز ا
هنگامی که برای اولین ا
• Current Directory
▫ View folders and m-files
• Workspace
▫ View program variables
▫ Double click on a variable
to see it in the Array Editor
• Command Window
• type commands
Command History
view past commands
save a whole session
Command window: Type your
instructions here and press
ENTER to execute them.
Example: Declare a column matrix with
values 1,2 and 3.
Command history: a list of instructions
executed by MATLAB is shown here.
Workspace: shows a list of
variables created by MATLAB.
As you can see, the value of ‘aaa’
is shown.
Another way to create a variable
Is to press this button.
MATLAB will prompt you to enter
the variable name.
As you can see, the variable
name has been changed to bbb.
2) Or by double clicking
on bbb.
To assign a value to bbb, you can do it in
two ways: 1) Using the command window.
When you click on bbb, the variable
editor window appears. You can type
in new values into bbb by filling in the
cells.
An example is shown here.
Try and do it yourself.
To display variables at the console,
you can type the variable name,
or you can type disp(variable_name).
To clear all variables from
memory and close all
figures, use the
clear, close all command.
As you can see, all workspace
variables are deleted when
you execute this command.
To clear the command window,
use the clc (clear console) command.
Example: search for
function mean
To create an m-file, 1) type edit at
the command window, or
2) Press this button.
The previous command will
display the editor window.
The editor creates an m-file
that can be used to write
your MATLAB programs.
To execute a program, press
the RUN button.
This window will appear. Press the
Change Directory button.
متغیرها
• در مطلب نیازی به پیش تعریف متغیرها و تعیین نوع آنها در ابتدای برنامه نیست.
;int a
;double b
;float c
• برای تعریف یک متغیر تنها کافی است که کمیت مورد نظر را به آن منسوب کنیم.
مثال
;>> x = 5
;>> x1 = 2
;’>> y = ‘hello
• پس از این انتساب ،هر یک از متغیر های تعریف شده یک ماتریس 1*1می باشند.
• مطلب بین حروف بزرگ و کوچک فرق قائل است.
>> X
Undefined function or variable 'X'.
بردارها و ماتریس ها
• برای تعریف یک بردار سطری مانند ] x=[1 2 5 1به یکی از روش های زیر عمل می کنیم.
;]>> x = [1 2 5 1
]>> x = [1,2,5,1
=x
1 2 5 1
• برای تعریف یک بردار ستونی به یکی از روش های زیر عمل می کنیم.
;]>> x1 = [1;2;5;1
;’]>> x1 = [1 2 5 1
• برای محاسبه ترانهاده یک ماتریس به روش زیر عمل می کنیم.
;)• y = transpose(x1
• با توجه به آن که بردار فوق مختلط نیست می توان عمل فوق را با دستور زیر انجام داد.
y=1
2
5
1
’• y = x1
‘ means complex conjugate of transposed :• دقت کنید
• مثال
>> z=[1+3i , 2-4i ; 2 , -5+10i];
>> z'
ans =
1.0000 - 3.0000i 2.0000
2.0000 + 4.0000i -5.0000 -10.0000i
>> transpose(z)
ans =
1.0000 + 3.0000i 2.0000
2.0000 - 4.0000i -5.0000 +10.0000i
. استفاده کنیم فاصله بین خطوط در نمایش پاسخ ها حذف می شودformat compact اگر از دستور
تعریف بردارها و ماتریس های طوالنی
• در صورتی که بخواهیم یک بردار طولنی دارای یک ریتم و آهنگ خاص تعریف کنیم می توانیم از روش زیر استفاده کنیم.
10
0 -0.5000 -1.0000
0
9
8
7
6
5
4
>> t = 1:10
=t
1 2 3
>> k =2:-0.5:-1
=k
2.0000 1.5000 1.0000 0.5000
>> phi = -pi:pi/6:pi
= phi
-3.1416 -2.6180 -2.0944 -1.5708 -1.0472 -0.5236
0.5236 1.0472 1.5708 2.0944 2.6180 3.1416
روش دیگر استفاده از دستور ) linspace(a,bیا ) linspace(a,b,nمی باشد.
این دستور برای تولید بردارهایی با فواصل خطی استفاده می شود .مثال:
)sai = linspace(-pi,pi,11
= sai
0 0.6283 1.2566 1.8850
-3.1416 -2.5133 -1.8850 -1.2566 -0.6283
2.5133 3.1416
;)A = linspace(1,36,12
در صورتی که nرا مشخص نکنیم به صورت اتوماتیک 100در نظر گرفته می شود.
]>> B = [1:4; 5:8
=B
4
8
3
7
2
6
1
5
. استفاده می کنیمwho برای مشاهده نام متغیرهای ایجاد شده از دستور
>> who
Your variables are:
B ans k phi sai t x z
. استفاده می کنیمwhos برای دیدن لیست متغیرها به همراه سایز و نوع آنها از دستور
>> whos
Name
Size
Bytes
Class
B
2x4
64
double
ans
1x100
800
double
k
1x7
56
double
phi
1x13
104
double
sai
1x11
88
double
t
1x10
80
double
x
1x5
10
char
z
2x2
64
double
Attributes
complex
تولید بردارها با استفاده از توابع از پیش تعریف شده مطلب
تولید یک ماتریس صفر به سایز :m*n
)zeros(m,n
)>> zeros(2,3
= ans
تولید ماتریس یک به سایز :m*n
0
0
0
0
0
0
)ones(m,n
)>> ones(1,3
= ans
1
تولید یک ماتریس تصادفی با توزیع یکنواخت روی بازه ):(0,1
1
1
)rand(m,n
)>> rand(1,4
= ans
0.9134
0.1270
0.9058
0.8147
تولید یک ماتریس مربعی یکه به سایز :n*n
)eye(n
)>> X = eye(3
=X
0
0
1
0
1
0
1
0
0
برخی از توابعی که روی آرایه ها عمل می کنند:
تمام مولفه های بردار xرا با هم جمع می کند:
)sum(x
;]>> A=[1 2 3
)>> sum(A
= ans
6
>> B
=B
4
3
2
1
8
7
6
5
)>> sum(B
= ans
12
10
8
6
))>> sum(sum(B
= ans
36
تمام مولفه های بردار xرا از اول تا آن مولفه با هم جمع می کند:
)cumsum(x
)>> cumsum(1:5
= ans
15
تمام مولفه های بردار xرا در هم ضرب می کند:
10
6
3
1
)prod(x
>> A
=A
3
2
1
)>> prod(A
= ans
>> B
=B
1 2 3 4
5 6 7 8
)>> prod(B
= ans
5 12 21 32
6
)max(x
بزرگترین مولفه بردار xرا پیدا می کند:
)>> max(A
= ans
3
در ماتریسها با این دستور بزرگترین مولفه هر ستون پیدا می شود.
)>> max(B
= ans
8
کوچکترین مولفه بردار xرا پیدا می کند:
7
6
5
)min(x
)sort(x
مولفه های xرا مرتب می کند:
;]>> C=[2,-2,1,0,5,1,7
)>> sort(C
= ans
7
5
2
1
1
0
-2
مقدار متوسط یا میانگین xرا پیدا می کند:
)mean(x
)>> mean(A
= ans
2
ماتریس تنک :ماتریس است که تنها تعداد کمی از درایه های آن مقدار دارد و بقیه عناصر آن صفر است.
برای صرفه جویی در میزان حافظه و افزایش سرعت از دستورات زیر استفاده می کنیم:
:Sparse(m,n) یک ماتریس تنک به سایز مشخص شده تولید می کند .تمام درایه های این ماتریس صفر است.
)>> zeros(2,3
= ans
0
0
0
0
0
0
)>> sparse(2,3
= ans
All zero sparse: 2-by-3
:Sparse(A) قالب تعریف ماتریس Aرا به حالت تنک تبدیل می کند.
)>> II=eye(3
)>> sparse(II
= II
= ans
0
0
1
1
)(1,1
0
1
0
1
)(2,2
1
0
0
1
)(3,3
:Speye(n) یک ماتریس یکه مربعی n*nرا به فرم تنک تبدیل می کند.
)>> speye(3
= ans
1
)(1,1
1
)(2,2
1
)(3,3
) :spones(Sبه جای تمام عناصر ماتریس Sعدد یک می گذارد.
برای نمایش یک ماتریس تنک به فرم معمولی از دستور fullاستفاده می کنیم.
)>> full(II
= ans
1 0 0
0 1 0
0 0 1
نحوه نامگذاری (ایندکس) درایه های ماتریس
• اندیس های یک ماتریس در مطلب از 1شروع می شوند( .نه مانند Cاز صفر)
• اندیس ماتریس ها در مطلب اعداد مثبت می باشند.
)A(-2), A(0
Error: ??? Subscript indices must either be real positive integers or logicals.
)A(4,2
Error: ??? Index exceeds matrix dimensions.
نحوه اتصال ماتریس ها
• x = [1 2], y = [4 5], z=[ 0 0]
A = [ x y]
1 2 4 5
B = [x ; y]
12
C = [x y ;z]
4 5 Error:
??? Error using ==> vertcat CAT arguments dimensions are not consistent.
برای این منظورا می توان ااز دستورهای
vertcat یاhorzcat یاcat
.استفاده کرد
• تعیین تعداد سطر و ستون های یک ماتریس
)size(A
>> B
=B
)>> size(B
= ans
4
3
2
1
2
8
7
6
5
4
• تعیین طول یک بردار
)length(A
>> A
=A
)>> length(A
= ans
3
3
2
1
)flipud(A
• چرخش درایه های یک ماتریس از بال به پایین
]>> A=[1 2;3 4;-1 0
=A
)>> B=flipud(A
=B
-1 0
3 4
1 2
• چرخش درایه های یک ماتریس از چپ به راست
2
1
4
3
0
-1
)fliplr(A
]>> A=[1 2;3 4;-1 0
)>> C=fliplr(A
=C
2 1
4 3
0 -1
=A
2
1
4
3
0
-1
عملگرهای ماتریس ی
+
*
^
جمع
ضرب
توان
/
تفریق
تقسیم
اعمال عملگرها به صورت عضو به عضو
A = [1 2 3; 5 1 4; 3 2 1]
A=
1 2 3
5 1 4
3 2 -1
x = A(1,:)
x=
.*
تقسیم هر درایه بر درایه متناظر
./
به توان رساندن نظیر به نظیر
.^
b = x .* y
c=x./y
d = x .^2
b=
c=
0.33 0.5 -3
d=
y = A(3 ,:)
y=
1 2 3
ضرب درایه در درایه
3 8 -3
3 4 -1
K= x^2
Erorr:
??? Error using ==> mpower Matrix must be square.
B=x*y
Erorr:
??? Error using ==> mtimes Inner matrix dimensions must agree.
1 4 9
برخی از توابع ماتریس ی عبارتند از:
دترمینان ماتریس مربعی
)det(a
محاسبه وارون ماتریس
)inv(a
مقادیر و بردار ویژه ماتریس مربعی
)eig(a
تولید یک بردار از درایه های روی قطر اصلی یک ماتریس مربعی
تولید ماتریس مربعی قطری
)diag(a
)diag(v
کاربردهای دستور format
این دستور فقط نحوه نمایش داده ها در صفحه نمایش را مشخص می کند و تاثیری روی دقت نگه داری آنها در حافظه
ندارد.
))>> v=exp(-10*(1:5
اگر format shortیا همان formatانتخاب شود (اعداد بعد از نقطه اعشار)4 :
=v
* 1.0e-04
0.4540 0.0000 0.0000 0.0000 0.0000
اگر format short eانتخاب شود
=v
4.5400e-05 2.0612e-09 9.3576e-14 4.2484e-18 1.9287e-22
اگر format longانتخاب شود (اعداد بعد از نقطه اعشار)14 :
=v
* 1.0e-04
0.453999297624848 0.000020611536224 0.000000000935762 0.000000000000042
0.000000000000000
اگر format long eانتخاب شود
=v
4.539992976248485e-05 2.061153622438558e-09 9.357622968840175e-14
4.248354255291589e-18 1.928749847963918e-22
اگر format rationalانتخاب شود ،نمایش به صورت کسر متعارفی
>> eps
><Enter
= ans
1/4503599627370496
عملیات منطقی
در مطلب عالمت های زیر برای مقایسه اعداد و حروف به کار می روند.
==
=~
=>
=<
<
>
حاصل همه عملیات صفر (نادرست) و یک (درست)است.
>> 3<5
= ans
1
]>> [1 2]>=[0,3
= ans
0
1
;]>> x=[1 2 -1 0 -5 4 -1.5 3 2.5 -.5
)>> x(x>0
مولفه های مثبت بردار را نشان می دهد.
= ans
2.5000
3.0000
4.0000
2.0000
1.0000
x((x>=0)&(x<=3))
ans =
1.0000 2.0000
0 3.0000 2.5000
>> length(x((x>=0)&(x<=3)))
ans =
5
&
|
>> m=[1 2 4; -2 3 -1];
>> ~(m>0)
ans =
0 0 0
1 0 1
>> (m>0)|(m<=2)
ans =
1 1 1
1 1 1
>> (m>0)&(m<=2)
ans =
1 1 0
0 0 0
xor
.عملگرهای منطقی به صورت زیر مشخص می شوند
~
آیا در بردار (ماتریس) مورد نظر مقداری با شرط مورد نظر وجود دارد؟
)any(A>3
آیا در بردار (ماتریس) مورد نظر تمام مقادیربا شرط مورد نظر را دارند؟
)all(A>3
در بردار (ماتریس) مورد نظر کدام مقدارها شرط مورد نظر را دارند؟
)>> find(v>3
= ans
4
)find(A>3
;]>> v=[-2 1 3 5
)>> any(v<1
= ans
1
)>> any(v>6
= ans
0
)>> all(v<1
= ans
0
)>> all(v<6
= ans
1
توابع سمبلیک در مطلب
توابع سمبلیک در مطلب از نسخه MATLAB 6.0در دسترس قرار گرفت.
(برای تعیین ورژن برنامه از دستور verاستفاده کنید).
مباحث تحت پوشش
امکانات ارائه شده
حساب دیفرانسیل و انتگرال
مشتق ،انتگرال ،حد ،سری ،بسط تیلورا
جبر خطی
معکوس ،دترمینان ،مقدار ویژه
ساده سازیا
ساده کردن عبارات جبریا
حل معادلت
راه حل های سمبلیک و عددی معادلت جبریا و دیفرانسیل
توابع ریاض ی خاص
توابع ریاض ی خاص
تبدیل ها
فوریه ،لپالس ،تبدیل zو تبدیل های معکوس آنها
معرفی توابع نمادین :برای هرنوع عملیات نمادین باید ابتدا متغیرهای مورد استفاده را معرفی نمود .این کار با دستورهای
symو symsانجام می شود.
ans =(a + b)^2
>> (a+b)^2
>> syms a b
. یک چند جمله ای را به حاصلضرب چند عبارت چند جمله ای تجزیه می کند، این تابع:factor
>> syms x
>> n=(1:9)';
>> p=x.^n-1;
>> f=factor(p);
>> [p,f]
ans =
[ x - 1,
x - 1]
[ x^2 - 1,
(x - 1)*(x + 1)]
[ x^3 - 1,
(x - 1)*(x^2 + x + 1)]
[ x^4 - 1,
(x - 1)*(x + 1)*(x^2 + 1)]
[ x^5 - 1,
(x - 1)*(x^4 + x^3 + x^2 + x + 1)]
[ x^6 - 1,
(x - 1)*(x + 1)*(x^2 + x + 1)*(x^2 - x + 1)]
[ x^7 - 1,
(x - 1)*(x^6 + x^5 + x^4 + x^3 + x^2 + x + 1)]
[ x^8 - 1,
(x - 1)*(x + 1)*(x^2 + 1)*(x^4 + 1)]
[ x^9 - 1,
(x - 1)*(x^2 + x + 1)*(x^6 + x^3 + 1)]
)factor (عکس. برای بسط دادن عبارات سمبلیک به صورت سمبلیک به کار می رود، این تابع:expand
>> expand((x-2)*(x-4))
ans =
x^2 - 6*x + 8
>> expand(cos(x+y))
ans =
cos(x)*cos(y) - sin(x)*sin(y)
)substitution (مخفف. از این تابع برای جایگزاری یک عدد به جای متغیر سمبلیک به کار می رود:subs
>> a=cos(x+y)
a=
cos(x + y)
>> subs(a,x,0)
ans =
-cos(y)
>> subs(a,y,0)
ans =
cos(x)
>> subs(a,{x,y},[pi,0])
ans =
-1
ی
حل معادلت جبر ا
. را پیدا می کندS=0 یک عبارت سمبلیک باشد تابع روبرو جوابهای معادلهS اگر:solve(S)
>> syms a b c x
>> S=a*x^2+b*x+c;
>> solve(S)
ans =
-(b + (b^2 - 4*a*c)^(1/2))/(2*a)
-(b - (b^2 - 4*a*c)^(1/2))/(2*a)
>> pretty (ans)
+-+
|
2
1/2 |
| b + (b - 4 a c)
|
| - ------------------- |
|
2a
|
|
|
|
2
1/2 |
| b - (b - 4 a c)
|
| - ------------------- |
|
2a
|
+-+
>> subs(ans,{a,b,c},[1,1,1])
ans =
-0.5000 - 0.8660i
-0.5000 + 0.8660i
>> solve('cos(2*x)+sin(x)=1')
ans =
0
pi/6
(5*pi)/6
>> ss=x^2+1
ss =
x^2 + 1
>> x=sym(0)
x=
0
>> eval(ss)
ans =
1
>> solve(cos(2*x)+sin(x)-1)
ans =
0
pi/6
(5*pi)/6
مشتق گیری از توابع سمبلیک در مطلب
) :diff(fاز تابع سمبلیک fمشتق می گیرد( .متغیر پیش فرض xمی باشد)
برای تغییر متغیر به این صورت عمل می کنیم
)>> diff(f,a
= ans
)x*cos(a*x
>> syms a x
;)>> f=sin(a*x
)>> diff(f
= ans
)a*cos(a*x
این تابع از درایه های یک ماتریس هم مشتق می گیرد.
])>> A=[cos(a*x),sin(a*x),-sin(a*x),tan(a*x
=A
])[ cos(a*x), sin(a*x), -sin(a*x), tan(a*x
)>> diff(A
= ans
])[ -a*sin(a*x), a*cos(a*x), -a*cos(a*x), a*(tan(a*x)^2 + 1
حل معادلت دیفرانسیل
. دستور زیر برای حل معادله دیفرانسیل معمولی با شرایط اولیه به کار می رود: S = dsolve(eqn,cond)
بدون شرط اولیهdy/dx=1+y^2 حل معادله دیفرانسیل
>> dsolve('Dy=1+y^2')
ans =
tan(C3 + t)
>> x=dsolve('Dx^2+x^2=1','x(0)=0')
x=
cosh((pi*i)/2 + t*i)
cosh((pi*i)/2 - t*i)
y(0)=1 حل همان معادله با شرط اولیه
>> dsolve('Dy=1+y^2','y(0)=1')
ans =
tan(pi/4 + t)
x(0)=0 وdy/dx(0)=0 با شرایط اولیهd2y/dx2=cos2x-y حل معادله دیفرانسیل مرتبه دوم
>> y=dsolve('D2y=cos(2*x)-y','y(0)=1','Dy(0)=0','x')
y=
(5*cos(x))/3 + sin(x)*(sin(3*x)/6 + sin(x)/2) - (2*cos(x)*(6*tan(x/2)^2 - 3*tan(x/2)^4
+ 1))/(3*(tan(x/2)^2 + 1)^3)
>> simplify(y)
ans =
1 - (8*(cos(x)/2 - 1/2)^2)/3
انتگرال گیری از توابع سمبلیک در مطلب
) :int(fاگر fیک تابع سمبلیک باشد این دستور انتگرال نامعین آن را حساب می کند.
برای محاسبه انتگرال معین ،ابتدا و انتهای بازه را می نویسیم.
)>> int(x^n
= ans
)])piecewise([n == -1, log(x)], [n ~= -1, x^(n + 1)/(n + 1
))>> int(sin(2*x
= ans
sin(x)^2
))>> int(exp(n*x
= ans
exp(n*x)/n
))>> int(exp(n*x^2
= ans
))(pi^(1/2)*erf((-n)^(1/2)*x))/(2*(-n)^(1/2
)>> int(exp(-x),0,inf
= ans
1
)>> int(x^2,0,1
= ans
1/3
>> syms x
>> ac=cos(x);
>> ezplot(ac)
به صورت پیش فرض در محدوده. را رسم می کندf(x) نمودار تابع:ezplot(f)
.[ رسم می کند-pi,pi]
cos(x)
>> ezplot(ac,[0,2*pi])
1
cos(x)
1
0.5
0.5
0
0
-0.5
-0.5
-1
-6
-4
-2
0
x
2
4
6
-1
0
1
2
3
4
x
5
6
tan(x)
>> ezplot('tan(x)')
6
4
2
0
-2
x 2+y 2-36 = 0
6
-4
4
-6
-4
-2
0
x
2
4
6
y
-6
>> fc='x^2+y^2-36';
>> ezplot(fc)
>> axis equal; % طول محورها يکسان مي شود
2
0
-2
-4
-6
-6
-4
-2
0
x
2
4
6
exp(-x 2/2)
1
>> syms x
>> k=sym(1/sqrt(2));
>> f=exp(-(k*x)^2);
>> ezplot(f)
0.8
0.6
0.4
1/(4 cos(x) + 5)
0.2
1
0.9
0
0.8
-3
-2
-1
0
x
1
2
3
0.7
0.6
0.5
>> syms x
>> f=1/(5+4*cos(x));
>> ezplot(f)
0.4
0.3
0.2
0.1
-6
-4
-2
0
x
2
4
6
رسم نمودار
)’ :plot(x,y,’oاین دستور برای رسم بردار yبر حسب xبه کار می رود.
;>> x=-10:0.5:10
;>> y=-x.^3+3*x.^2+1
)'>> plot(x,y,'o
)>> plot(x,y
10
8
6
4
2
0
-2
-4
-6
-8
1500
1500
1000
1000
500
500
0
0
-500
-500
-1000
10 -10
8
6
4
2
0
-2
-4
-6
-8
-1000
-10
. با این دستور می توان نمودارهای دیگر را هم بر روی یک نمودار رسم کرد:hold on/off
>> x=0:0.1:2*pi;
>> x1=sin(x);
>> x2=cos(x);
>> x3=sin(x).^2-cos(2*x);
>> plot(x,x1)
>> hold on;
>> plot(x,x2,'r')
>> hold on;
>> plot(x,x3,'.-k')
>> legend('x_1','x_2','x3')
2
x1
x2
1.5
x3
1
0.5
0
-0.5
-1
0
1
2
3
4
5
6
7
>> hr=0:2:24;
>> temp=[-2 -2 -1 0 .5 3 7 10 12 16 10 3 1];
>> bar(hr,temp,1)
>> xlabel('Hours of The Day')
>> ylabel('Temp, Celcius')
16
Voltage (V)
:برچسب ها
>> title('Plotting Test Program (PTP)')
>> xlabel('Time (\mus)')
>> ylabel('Voltage (V)','fontsize',18)
14
Plotting Test Program (PTP)
2
x1
x2
1.5
x3
1
0.5
0
-0.5
12
-1
Temp, Celcius
10
0
1
2
3
4
Time (s)
5
6
8
6
به صورت نمودارx را بر حسبy :bar(x,y,w)
. رسم می کندw میله ای با عرض
4
2
0
-2
0
2
4
6
8 10 12 14
Hours of The Day
16
18
20
22
24
7
>> p=[10 3 6 5 2];
>> w=[0.5 1 1 0.5 1];
>> m={'Tehan','Shiraz','Esfahan','Tabriz','Ahvaz'}
m=
'Tehan' 'Shiraz' 'Esfahan' 'Tabriz' 'Ahvaz'
>> pie(p,w,m)
Ahvaz
Tabriz
Tehan
Esfahan
Shiraz
>> x=linspace(-2*pi,2*pi,20);
>> figure(1); plot(x,tan(x),x,sin(x),x,cos(x))
>> fs='[tan(t) sin(t) cos(t)]';
>> figure(2), fplot(fs,[-2*pi 2*pi -5 5])
15
10
5
5
4
0
3
2
-5
1
0
-10
-1
-15
-8
-6
-4
-2
0
2
4
6
8 -2
-3
-4
-5
-6
-4
-2
0
2
4
6
رسم نمودارهای سه بعدی
می توان نمودارهای سه بعدی راsurf(x,y,z) وmesh(x,y,z) وplot3 (x,y,z) با استفاده ااز توابع
.رسم نمود
>> alfa=linspace(0,10*pi,400);
>> x1=cos(alfa);
>> y1=sin(alfa);
>> z1=linspace(0,40,400);
>> plot3(x1,y1,z1)
40
30
20
10
0
1
0.5
1
0.5
0
0
-0.5
-0.5
-1
-1
>> x=-10:0.5:10;
>> y=x;
>> z=-2*x.^3+x+3*y.^2-1;
>> plot3(x,y,z)
>> grid
3000
2000
1000
0
-1000
-2000
10
5
10
5
0
0
-5
-5
-10
100
-10
zp
50
>> [xp,yp]=meshgrid(-6:6,-4:4);
>> zp=xp.^2+yp.^3;
>> mesh(xp,yp,zp)
>> xlabel('xp')
>> ylabel('yp')
>> zlabel('zp')
0
-50
-100
4
2
10
5
0
0
-2
yp
-5
-4
-10
xp
mesh plotting for Z=X2+Y2
18
16
20
14
15
12
10
10
8
5
6
0
4
4
2
4
2
0
2
0
-2
-2
-4
-4
>> [X,Y]=meshgrid(-3:0.1:3);
>> Z=X.^2+Y.^2;
>> mesh(X,Y,Z)
>> colorbar
>> title('mesh plotting for
Z=X^{2}+Y^{2}')
0
>> [x,y,z]=peaks(30);
>> surf(x,y,z)
>> surf(x,y,z,'facecolor','red','edgecolor','none'); light
10
5
0
-5
-10
4
2
4
2
0
0
-2
-2
-4
-4
رسم کره با دستور sphere
;>> [X,Y,Z]=sphere
)>> mesh(X,Y,Z
;>> axis equal
گراف را متقارن مي کند %
;>>axis off
محورها را محو مي کند% .
;>>hidden off
قسمت هاي مخفي نمودار را نمايان مي کند% .
برنامه نویس ی در مطلب
• برای نوشتن برنامه (توالی چند دستور که در صورت اجرای آنها می توان به هدف مشخص ی رسید) باید از محیط
دیگری موسوم به ادیتور ام-فایل ( )m-fileاستفاده نمود.
• برای باز کردن ادیتور ام-فایل از دکمه ) New script (Ctrl+Nاز نوار ابزار بالی صفحه یا از منوی File
New Scriptاز منوهای بالی صفحه استفاده نمود.
• هر برنامه را باید با نام دلخواه و با پسوند ( .mبدون خط فاصله) ذخیره نمود.
• برای اجرای برنامه می توان به یکی از دو روش زیر عمل نمود.
-1با تایپ نام آن در محیط دستور و فشردن کلید Enter
-2با فشردن دکمه Runدر محیط ادیتور ام-فایل
انواع برنامه:
-1برنامه اصلی ( :)script m-fileبرنامه اصلی است که اجرای آن باعث انجام عملیات مورد نظر می شود.
-2تابع ( :)function m-fileتابع است و از داخل برنامه اصلی یا توابع دیگر صدا زده می شود.
مسیر فعال ( )Active directoryچیست؟
در هر لحظه مطلب دایرکتوری فعال خود را چک می کند و تمامی توابع و برنامه های موجود در آن شاخه قابل اجرا
هستند .این مسیر در پنجره Commandدر قسمت نوار بالی صفحه قابل مشاهده است.
البته مطلب غیر از مسیر فعال دنبال توابع پیش فرض خود در سایر دایرکتوری ها هم می گردد.
با استفاده از دستور pathمی توان تمامی این مسیرها را مشاهده کرد.
:pwdبا استفاده از این دستور مسیر فعال نمایش داده می شود.
دقت داشته باشید که نام متغیرهای استفاده شده در برنامه با متغیرهای پیش فرض یکسان نباشد.
دقت داشته باشید که نام برنامه با توابع پیش فرض مطلب یکسان نباشد.
;x = pi/100:pi/100:10*pi
;y = sin(x)./x
)plot(x,y
grid
• مثال :نمونه ای از یک برنامه ساده
• مثال :برنامه ای با نام bank.mبنویسید که جدول سرمایه نهایی بر حسب سرمایه اولیه (به تومان) را با نرخ سود
rپس از nسال برای 5نمونه از سرمایه به دست دهد.
format bank
;]A=[75000 100000 300000 500000 1000000
;r=0.09
;n=10
;B=A*(1+r)^n
]'nama=[A' B
= nama
177552.28
236736.37
710209.10
1183681.84
2367363.67
75000.00
100000.00
300000.00
500000.00
1000000.00
در غیر این صورت ادامه برنامه به. در صورتی که شرط مورد نظر درست باشد وارد آن می شود:if • دستور شرطی
. منتقل می شودend بعد از
if condition 1
Statements
elseif condition 2
a=input('please enter a number: ');
Statements
if a==2
Else
Statements
end
disp('your entered number is 2')
elseif a==3
disp('your entered number is 3')
elseif a==4
disp('your entered number is 4')
else
disp('your entered number is not 2, 3 or 4')
end
clc
. را حل کرد2 برنامه ای بنویسید که توسط آن بتوان معادله درجه:• مثال
clear all;
% This program solves equation
a=input('Enter a (ax^2_bx+c) : ');
b=input('Enter b (ax^2_bx+c) : ');
c=input('Enter c (ax^2_bx+c) : ');
if a==0 && b~=0
x=-c/b;
answer=[x,x];
elseif a~=0
delta=b^2-4*a*c;
x1=(-b+sqrt(delta))/(2*a);
x2=(-b-sqrt(delta))/(2*a);
answer=[x1,x2];
elseif a==0 && b==0
disp ('this is not an equation')
answer =[];
end
answer
% Evaluation of Z
• برنامه ای که اعداد مختلط را به صورت
% the complex numbers are entered
Z1 = 3+4*j;
.• قطبی تبدیل می کند
Z2 = 5+2*j;
theta = (60/180)*pi; % angle in radians
Z3 = 2*exp(j*theta);
Z4 = 3+6*j;
Z5 = 1+2*j;
% Z_rect is complex number Z in rectangular form
disp('Z in rectangular form is'); % displays text inside brackets
Z_rect = Z1*Z2*Z3/(Z4+Z5);
Z_rect
Z_mag = abs (Z_rect); % magnitude of Z
Z_angle = angle(Z_rect)*(180/pi); % Angle in degrees
disp('complex number Z in polar form, mag, phase'); % displays text
%inside brackets
Z_polar = [Z_mag, Z_angle]
function y=fact(n)
% FACT – Display factorials of integers 1..n
if isempty(n)
error('No input argument assigned')
elseif n < 0
error('Input must be non-negative')
elseif abs(n-round(n)) > eps
error('Input must be an integer')
else
for k=1:n
kfac=prod(1:k);
disp([num2str(k),' ',num2str(kfac)])
y(k)=kfac;
end;
end
.• تابعی فاکتوریل اعداد را محاسبه می کند
% maximum power transfer
vs = 10; rs = 10e3;
rl = 0:1e3:50e3;
k = length(rl); % components in vector rl
% Power dissipation calculation
for i=1:k
curr(i) = vs/(rs+rl(i));
pl(i) = rl(i)*curr(i)^2;
end
% Derivative of power is calculated using backward difference
dp = diff(pl)./diff(rl);
rld = rl(2:length(rl)); % length of rld is 1 less than that of rl
% Determination of critical points of derivative of power
prod = dp(1:length(dp) - 1).*dp(2:length(dp));
crit_pt = rld(find(prod < 0));
max_power = max(pl); % maximum power is calculated
% print out results
fprintf('Maximum power occurs at %8.2f Ohms\n',crit_pt)
fprintf('Maximum power dissipation is %8.4f Watts\n', max_power)
% Plot power versus load
plot(rl/1000,pl*1000,'+')
title('Power delivered to load')
xlabel('load resistance in K Ohms')
ylabel('power in mili watts')
% Charging of an RC circuit
c = 10e-6;
r1 = 1e3;
tau1 = r1*c;
t = 0:0.002:0.05;
v1 = 10*(1-exp(-t/tau1));
r2 = 10e3;
tau2 = r2*c;
v2 = 10*(1-exp(-t/tau2));
r3 = .1e3;
tau3 = r3*c;
v3 = 10*(1-exp(-t/tau3));
plot(t,v1,‘:k',t,v2,‘.-b', t,v3,‘-rs')
axis([0 0.06 0 12])
title('Charging of a capacitor with three
time constants')
xlabel('Time, s')
ylabel('Voltage across capacitor')
text(0.03, 5.0, '+ for R = 1 Kilohms')
text(0.03, 6.0, 'o for R = 10 Kilohms')
text(0.03, 7.0, '* for R = 0.1 Kilohms')
رسم نمودار شارژ خازنا
function v = ideal(t,p)
% ideal: Calculation of ideal gas specific volume
% v=ideal(t,p) takes the vector of temperature (t) in K
% and the vector of pressure (p) in Pa and returns the
% matrix of specific volume (v) in m3/kmol.
% Start of calculations
R = 8314;
% Gas constant (J/kmol.K)
for k = 1:length(p)
v(k,:) = R*t/p(k);
% Ideal gas law
end
» p=1:10; t=300:10:400;
» vol=ideal(t,p);
» surf(t,p,vol)
» view(135,45), colorbar
H = zeros(5);
for k=1:5
for l=1:5
H(k,l) = 1/(k+l-1);
end
end
H
H=
1.0000 0.5000 0.3333 0.2500 0.2000
0.5000 0.3333 0.2500 0.2000 0.1667
0.3333 0.2500 0.2000 0.1667 0.1429
0.2500 0.2000 0.1667 0.1429 0.1250
0.2000 0.1667 0.1429 0.1250 0.1111