ﺎﻫ ﻪﯾارآ دﺎﺠﯾاresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile...1 Slide deck...
Transcript of ﺎﻫ ﻪﯾارآ دﺎﺠﯾاresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile...1 Slide deck...
1
Slide deck byDr. Greg Reese
Miami University
MATLAB An Introduction With Applications, 6th EditionDr. Amos GilatThe Ohio State University
ایجاد آرایه ها
2
2.0
ساختارهاي اصلی داده ها در آرایه ها MATLABهستند
.می توانند هر تعداد بعد داشته باشند•:رایج ترین آنها عبارتند از
یک ستون یا یک ردیف(یک بعدي –بردار( دو بعدي یا بیشتر–ماتریس
آرایه ها می توانند شامل اعداد یا حروف باشند•
3
2.1 CREATING A ONE-DIMENSIONAL ARRAY (VECTOR)
از اعداد داده شده، نام براي ایجاد یک بردار سطريمتغیر، سپس عالمت مساوي، و سپس در داخل
یا کاما از هم جدا /کروشه اعداد که با فاصله و. شده اند را تایپ کنید
variable_name = [ n1, n2, n3 ]
>> yr = [1984 1986 1988 1990 1992 1994 1996]yr =
1984 1986 1988 1990 1992 1994 1996
بردار سطري را به صورت افقی نمایش میدهدMATLABدقت کنید که
کاما اختیاري است
4
2.1 CREATING A ONE-DIMENSIONAL ARRAY (VECTOR)
براي ایجاد یک بردار ستونی از اعداد داده :شده
مانند بردار سطري، ولی بین اعداد –1روش •نقطه ویرگول بگذارید
variable_name = [ n1; n2; n3 ]
>> yr = [1984; 1986; 1988 ]yr =
1984 1986 1988
بردار ستونی را به صورت عمودي نمایش میدهدMATLABدقت کنید که
5
2.1 CREATING A ONE-DIMENSIONAL ARRAY (VECTOR)
مانند بردار سطري، ولی پس از بستن –2روش •بگذارید) '(آپوستروف کروشه
بعداً . آپوستروف جاي سطر و ستون را عوض میکندخواهیم خواند
variable_name = [ n1 n2 n3 ]'>> yr = [1984 1986 1988 ]'
yr =
1984
1986
1988
6
2.1 CREATING A ONE-DIMENSIONAL ARRAY (VECTOR)
رایه هابراي ایجاد یک بردار با اختالف ثابت بین دvariable_name = m:q:n
• m عدد اول است• n عدد آخر است• q تفاضل دو عدد متوالی است
v = m:q:n یعنیv = [ m m+q m+2q m+3q ... n ]
7
2.1 CREATING A ONE-DIMENSIONAL ARRAY (VECTOR)
را حذف کنیم، اختالف یک خواهد بودqاگر v = m:n
یعنیv = [ m m+1 m+2 m+3 ... n ]
>> x = 1:2:13
x = 1 3 5 7 9 11 13
>> y = 1.5:0.1:2.1
y = 1.5000 1.6000 1.7000 1.8000 1.9000 2.0000 2.1000
تفاضل غیر صحیح
8
2.1 CREATING A ONE-DIMENSIONAL ARRAY (VECTOR)
>> z = -3:7
z = -3 -2 -1 0 1 2 3 4 5 6 7
>> xa = 21:-3:6
xa = 21 18 15 12 9 6
اختالف منفی
9
2.1 CREATING A ONE-DIMENSIONAL ARRAY (VECTOR)
براي ایجاد یک بردار با تعداد مشخصی درایه v = linspace( xi, xf, n )
• xi عدد اول است• xf عدد آخر است• n اگر نوشته نشود100(=تعداد درایه ها است(
10
2.1 CREATING A ONE-DIMENSIONAL ARRAY (VECTOR)
>> va = linspace( 0, 8, 6 )
va = 0 1.6000 3.2000 4.8000 6.4000 8.0000
>> va = linspace( 30, 10, 11 )
va=30 28 26 24 22 20 18 16 14 12 10
m:q:nامکان تعیین اختالف را می دهد .Linspace() امکان تعیین تعداد درایه ها را
.می دهد
شش درایه
درایه هاي نزولی
T I P
11
2.2 CREATING A TWO-DIMENSIONAL ARRAY (MATRIX)
یک ماتریس دو بعدي را اینگونه ایجاد کنیدm = [ 1اعداد ردیف 2اعداد ردیف ; [اعداد ردیف آخر; ... ;
هر ردیف با نقطه ویرگول جدا می شود دارند) درایه(همه ردیف ها تعداد یکسانی ستون
>> a=[ 5 35 43; 4 76 81; 21 32 40]
a =
5 35 43
4 76 81
21 32 40
12
2.2 CREATING A TWO-DIMENSIONAL ARRAY (MATRIX)
>> cd=6; e=3; h=4;
>> Mat=[e, cd*h, cos(pi/3);... h^2 sqrt(h*h/cd) 14]
Mat =3.0000 24.0000 0.5000
16.0000 1.6330 14.0000
کاما اختیاري
13
2.2 CREATING A TWO-DIMENSIONAL ARRAY (MATRIX)
براي ()linspaceیا m:q:nمیتوانید از ایجاد ردیفها استفاده کنید
) درایه(مطمئن شوید هر ردیف تعداد یکسانی ستون •دارد
>> A=[1:2:11; 0:5:25;... linspace(10,60,6); 67 2 43 68 4 13]
A =
1 3 5 7 9 11
0 5 10 15 20 25
10 20 30 40 50 60
67 2 43 68 4 13
14
2.2 CREATING A TWO-DIMENSIONAL ARRAY (MATRIX)
ه متفاوت باشد چ) درایه ها(اگر تعداد ستون ها می شود؟
>> B= [ 1:4; linspace(1,4,5) ]
??? Error using ==> vertcat
CAT arguments dimensions are not consistent.
چهار ستون پنج ستون
15
2.2.1 The zeros, ones and, eye Commands
zeros(m,n)- ماتریسی باm ردیف وn ستونمی سازد که همه درایه هایش صفر هستند
ones(m,n)- ماتریسی باm ردیف وn ستونیک هستندمی سازد که همه درایه هایش
eye(n)- ماتریسی مربعی باn سطر و ستون میدرایه هاي روي قطر اصلی همه یک و بقیه . سازد
) ماتریس واحد(درایه ها صفر هستند
16
2.2.1 The zeros, ones and, eye Commands
>> zr=zeros(3,4)zr = 0 0 0 0
0 0 0 00 0 0 0
>> ne=ones(4,3)ne = 1 1 1
1 1 11 1 11 1 1
>> idn=eye(5)
idn = 1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1
17
2.2.1 The zeros, ones and, eye Commands
ی براي ایجاد یک ماتریس که با عدد مشخصرا در آن عدد ones(m,n)پر شده باشد،
ضرب کنید>> z=100*ones(3,4)
z =
100 100 100 100
100 100 100 100
100 100 100 100
T I P
18
2.3 NOTES ABOUT VARIABLES IN MATLAB
همه متغیرها آرایه هستند• آرایه اي با یک درایه–اسکالر آرایه اي با یک سطر یا ستون–بردار آرایه اي با چند سطر و ستون–ماتریس
مقدار دهی یک متغیر ابعاد آن را مشخص میکند•ه بر خالف بسیاري از زبانهاي برنامه نویسی، نیازي ب
تعیین اندازه متغیر پیش از مقدار دهی آن نیستمقدار دهی مجدد یک متغیر، ابعاد آن را به ابعاد •
آنچه به آن تخصیص دهید تغییر می دهد
19
2.4 THE TRANSPOSE OPERATOR
ترانهاده یک متغیر را با قرار دادن آپوستروف'xمثالً . پس از آن به دست آورید
در ریاضیات ترانهاده معموالً با قرار دادنT در بااليxTمثالً . متغیر مشخص میشود
بدیل یک بردار ستونی را به بردار سطري و بر عکس ت•می کند
. جاي سطر و ستون هاي یک ماتریس را عوض میکند•یعنی سطر اول ماتریس اولیه به ستون اول
تون ماتریس اولیه به سدوم ، سطر ماتریس ترانهاده.تبدیل می شود... ترانهاده و ماتریس دوم
20
2.4 THE TRANSPOSE OPERATOR
>> aa=[3 8 1]
aa = 3 8 1
>> bb=aa'
bb = 3
8
1
21
2.4 THE TRANSPOSE OPERATOR
>> C=[2 55 14 8; 21 5 32 11; 41 64 9 1]
C = 2 55 14 8
21 5 32 11
41 64 9 1
>> D=C'
D = 2 21 41
55 5 64
14 32 9
8 11 1
22
2.5 ARRAY ADDRESSING
بردار یا (می توان به درایه هاي یک آرایه رسی به صورت تکی یا چند تایی دست) ماتریس)آنها را خواند یا نوشت(داشت
براي تغییر زیر مجموعه اي از درایه ها مناسب است•براي ایجاد یک متغیر جدید از زیر مجموعه اي از •
درایه ها مناسب است
23
2.5.1 Vector
یک درایه موقعیت آن در بردار استنشانی نامیده می شوداندیسنشانی معموالً •)0نه (شروع میشوند 1نشانی ها همیشه از •
یک بردار سطري درایه سمت چپ است1نشانی باالیی استدرایه ستونی یک بردار 1نشانی
براي دسترسی به درایه خاصی از یک بردار که در یک •ر متغیر ذخیره شده است، پس از نام متغیر نشانی را د
را vدرایه دوم بردار v(2)=20مثالً . پرانتز بنویسید. تعیین می کند20
24
2.5.1 Vector
>> VCT=[35 46 78 23 5 14 81 3 55]VCT = 35 46 78 23 5 14 81 3 5>> VCT(4)ans = 23>> VCT(6)=273VCT = 35 46 78 23 5 273 81 3 5>> VCT(2)+VCT(8)ans = 49>> VCT(5)^VCT(8)+sqrt(VCT(7))ans = 134
25
2.5.2 Matrix
ف نشانی یک درایه در یک ماتریس با شماره ردیالً نشانی معمو. و شماره ستون مشخص میشود
.نامیده میشوداندیس)0نه (شروع میشوند 1نشانی ها همیشه از •
باالترین ردیف است1ردیف ستون سمت چپ است1ستون
ma(k,p)یک ماتریس باشد، maاگر متغیر •ام استpو ستون امkدرایه سطر
همیشه عدد نشانی سمت چپ به MATLABدر رد ردیف و عدد نشانی سمت راست به ستون اشاره دا
T I P
26
2.5.2 Matrix
>> MAT=[3 11 6 5; 4 7 10 2; 13 9 0 8]
MAT = 3 11 6 54 7 10 213 9 0 8
>> MAT(3,1)ans = 13>> MAT(3,1)=20MAT = 3 11 6 5
4 7 10 220 9 0 8
>> MAT(2,4)-MAT(1,2)ans = -9
درایه ستون یکم و ردیف سوم
1و ستون 3تخصیص مقداري جدید به درایه ردیف
فقط این درایه تغییر می کند
1ستون
3ردیف
27
2.6 USING A COLON : IN ADDRESSING ARRAYS
براي آدرس دهی گروهی از درایه ها به کار میرود(:) دو نقطه • )سطري یا ستونی(بردار va(:) – همه درایه ها va(m:n) – n تا m درایه هاي
• ماتریس A(:,n) – n همه ردیف هاي ستون A(m,:) – m همه ستون هاي ردیف A(:,m:n) - n تا m همه ردیف هاي ستون هاي A(m:n,:) - n تا m همه ستون هاي ردیف هاي A(m:n,p:q) - n تا m ردیف هاي q تا p ستون هاي
28
2.6 USING A COLON : IN ADDRESSING ARRAYS
>> A=[1:2:11; 2:2:12; 3:3:18; 4:4:24; 5:5:30]
A = 1 3 5 7 9 11
2 4 6 8 10 12
3 6 9 12 15 18
4 8 12 16 20 24
5 10 15 20 25 30
>> B=A(:,3)
B = 5
6
9
12
15
3همه ردیف هاي ستون
29
2.6 USING A COLON : IN ADDRESSING ARRAYS
>> C=A(2,:)
C = 2 4 6 8 10 12
>> E=A(2:4,:)
E = 2 4 6 8 10 12
3 6 9 12 15 18
4 8 12 16 20 24
>> F=A(1:3,2:4)
F = 3 5 7
4 6 8
6 9 12
2همه ستون هاي ردیف
4تا 2همه ستون هاي ردیف هاي
3تا 1ردیف هاي 4تا 2ستون هاي
30
2.6 USING A COLON : IN ADDRESSING ARRAYS
می توان اندیس هاي بردارها یا ماتریس ها را با بردار جایگزین کرد تا درایه هاي مشخصی را جدا
mو ماتریس vمثالً براي بردار . نمود•v([a b c:d]) به درایه هايa وb وc تاd
اشاره دارد•m([a b],[c:d e]) به ستون هايc تاd و
اشاره داردbو aردیف هاي eستون
31
2.6 USING A COLON : IN ADDRESSING ARRAYS
>> v=4:3:34
v = 4 7 10 13 16 19 22 25 28 31 34
>> u=v([3, 5, 7:10])
u = 10 16 22 25 28 31
32
2.6 USING A COLON : IN ADDRESSING ARRAYS
>> A=[10:-1:4; ones(1,7); 2:2:14; zeros(1,7)]
A = 10 9 8 7 6 5 4
1 1 1 1 1 1 1
2 4 6 8 10 12 14
0 0 0 0 0 0 0
>> B=A([1 3],[1 3 5:7])
B = 10 8 6 5 4
2 6 10 12 14
33
2.7 ADDING ELEMENTS TO EXISTING VARIABLES
دو راه براي اضافه کردن درایه به متغیرهاي موجودمقدار دادن به اندیس هایی که وجود ندارند1.
MATLAB آرایه را گسترش می دهد تا اندیس ها را شاملشود، مقادیر مشخص شده را در درایه هاي مورد نظر قرار
میدهد، درایه هاي جدیدي که مقداري براي آن ها در نظر گرفته نشده را با صفر پر می کند
اضافه کردن مقادیر به انتهاي متغیرها2. نامیدهالحاق کردن اضافه کردن مقادیر به انتهاي متغیرها
میشود»تونی ي بردار، سمت راست بردار سطري یا پایین بردار س»انتها
است»تي ماتریس، ستون سمت راست یا ردیف انتهایی اس»انتها
34
2.7 ADDING ELEMENTS TO EXISTING VARIABLES
مقدار دادن به اندیس هاي تعریف نشده بردارها>> DF=1:4
DF = 1 2 3 4
>> DF(5:10)=10:5:35
DF = 1 2 3 4 10 15 20 25 30 35
>> AD=[5 7 2]
AD = 5 7 2
>> AD(8)=4
AD = 5 7 2 0 0 0 0 4
>> AR(5)=24
AR = 0 0 0 0 24درایه هاي مشخص نشده صفر در نظر گرفته می شوند
35
2.7 ADDING ELEMENTS TO EXISTING VARIABLES
الحاق به بردارهانی تنها می توان بردارهاي سطري را به سطري و ستو•
را به ستونی الحاق کرد اگرr1 وr2 ،دو بردار سطري دلخواه باشند
r3 = [r1 r2] یک بردار سطري خواهد بود کهو قسمت سمت راستش r1قسمت سمت چپ آن
r2است اگرc1 وc2 دلخواه باشندستونی دو بردار ،
c3 = [c1; c2] خواهد بود که ستونی بردار یکاستc2پایینش و قسمت c1باالي آن قسمت
36
2.7 ADDING ELEMENTS TO EXISTING VARIABLES
>> RE=[3 8 1 24];>> GT=4:3:16;>> KNH=[RE GT]KNH = 3 8 1 24 4 7 10 13 16>> KNV=[RE'; GT']KNV = 3
812447101316
37
2.7 ADDING ELEMENTS TO EXISTING VARIABLES
مقدار دادن به اندیس هاي تعریف نشده ماتریس ها>> AW=[3 6 9; 8 5 11]
AW = 3 6 9
8 5 11
>> AW(4,5)=17
AW = 3 6 9 0 0
8 5 11 0 0
0 0 0 0 0
0 0 0 0 17
>> BG(3,4)=15
BG = 0 0 0 0
0 0 0 0
0 0 0 15
AWردیف چهارم یا ستون پنجم ندارد
!حاال دارد
مقادیر مشخص نشده صفر در نظر گرفته میشوند
38
2.7 ADDING ELEMENTS TO EXISTING VARIABLES
الحاق کردن به ماتریس هااگر بخواهید ماتریسی را به سمت راست یک •
انی ماتریس دیگر الحاق کنید، هر دو باید تعداد یکسردیف داشته باشند
دیگر ماتریسپایین یک اگر بخواهید ماتریسی را به •شته داستون الحاق کنید، هر دو باید تعداد یکسانی
باشند
39
2.7 ADDING ELEMENTS TO EXISTING VARIABLES
>> A2=[1 2 3; 4 5 6]
A2 = 1 2 3
4 5 6
>> B2=[7 8; 9 10]
B2 = 7 8
9 10
>> C2=eye(3)
C2 = 1 0 0
0 1 0
0 0 1
40
2.7 ADDING ELEMENTS TO EXISTING VARIABLES
>> Z=[A2 B2]
Z = 1 2 3 7 8
4 5 6 9 10
>> Z=[A2; C2]
Z = 1 2 3
4 5 6
1 0 0
0 1 0
0 0 1
>> Z=[A2; B2]
??? Error using ==> vertcat
CAT arguments dimensions are not consistent.
41
2.8 DELETING ELEMENTS
براي حذف درایه هاي یک بردار یا ماتریس، یک دکروشه خالی به محدوده مورد نظر تخصیص دهی
>> kt=[2 8 40 65 3 55 23 15 75 80]
kt = 2 8 40 65 3 55 23 15 75 80
>> kt(6)=[]
kt = 2 8 40 65 3 23 15 75 80
>> kt(3:6)=[]
kt = 2 8 15 75 80
)55(حذف درایه ششم
حذف شد55
تغییر یافته، نه اولیهktحذف درایه هاي سوم تا ششم
42
2.8 DELETING ELEMENTS
براي حذف درایه هاي یک بردار یا ماتریس، یک دکروشه خالی به محدوده مورد نظر تخصیص دهی
>> mtr=[5 78 4 24 9; 4 0 36 60 12; 56 13 5 89 3]
mtr = 5 78 4 24 9
4 0 36 60 12
56 13 5 89 3
>> mtr(:,2:4)=[]
mtr = 5 9
4 12
56 3
43
2.9 BUILT-IN FUNCTIONS FOR HANDLING ARRAYS
MATLABاردتوابع داخلی بسیاري براي کار با آرایه ها د .:بعضی از پرکاربردترین آن ها
• length(v) – تعداد درایه هاي یک بردار• size(A) – تعداد ردیف ها و ستون هاي یک ماتریس یا
بردار• reshape(A,m,n) – تعداد ردیف ها و ستون هاي یک ماتریس یا بردار را، با ثابت نگه داشتن تعداد درایه ها تغییر
8*2را به یک ماتریس 4*4مثالً، یک ماتریس . می دهدتبدیل می کند
44
2.9 BUILT-IN FUNCTIONS FOR HANDLING ARRAYS
• diag(v) – یک ماتریس مربعی می سازد که بردار مورد نظر قطر اصلی آن باشد و سایر درایه ها صفر باشند
• diag(A) – برداري می سازد که معادل قطر اصلی ماتریس مورد نظر باشد
را کلیک کنید، Helpبراي توابع بیشتر، آیکن را کلیک کنید، MATLABسپس در پنجره راهنما
را ”By Category“، سپس ”functions“سپس انتخاب کنید، بعد از آن پایین بیایید تا به
“Matrices and Arrays” برسید
45
2.10 STRINGS AND STRINGS AS VARIABLES
آرایه اي از کاراکترها است)string(رشته دارندMATLABرشته ها کاربردهاي بسیاري در
نمایش خروجی متنی•تعیین مشخصات ظاهري ترسیم ها•ورودي بعضی توابع هستند•ورود متن توسط کاربر یا از فایل هاي داده•
46
2.10 STRINGS AND STRINGS AS VARIABLES
وسترف یک رشته با تایپ کاراکترها در بین دو آپ•ایجاد می شود ) ‘) (یا نقل قول تکی(رشته بسیاري از زبانهاي برنامه نویسی از گیومه براي
این طور نیستMATLAB. ها استفاده می کننددر زمان تایپ رشته•
ه رنگ نوشته ها پس از تایپ اولین آپوستروف بخرمایی تغییر می کند
ه آپوستروف بدومین رنگ نوشته ها پس از تایپتغییر می کندبنفش
47
2.10 STRINGS AND STRINGS AS VARIABLES
ه رشته می تواند شامل حروف، اعداد، عالئم و فاصل•باشدبراي تایپ آپوستروف در یک رشته، از دو آپوستروف
Greg’s carمثالً براي ایجاد رشته . متوالی استفاده کنیدGreg''s'تایپ کنید car'
مثال: 'ad ef', '3%fr2', 'edcba:21!', 'MATLAB'
48
2.10 STRINGS AND STRINGS AS VARIABLES
می توان یک رشته را به یک متغیر تخصیصداد، درست مثل اعداد
>> name = 'Sting'
name =
Sting
>> police = 'New York''sfinest'
police =
New York's finest
49
2.10 STRINGS AND STRINGS AS VARIABLES
در متغیرهاي رشته اياعداد به عنوان آرایه ذخیره می شوند•یک رشته تک خطی، یک بردار سطري است•
تعداد درایه هاي بردار برابر تعداد کاراکترهاي رشته است
>> name = 'Howard the Duck';
>> size( name )
ans =
1 15
50
2.10 STRINGS AND STRINGS AS VARIABLES
اندیس گذاري رشته ها مشابه بردارها و ماتریس ها است
می شود بر اساس اندیس خواند•نوشتمی شود بر اساس اندیس •حذف کردمی شود بر اساس اندیس •
51
2.10 STRINGS AND STRINGS AS VARIABLES
مثال>> word = 'dale';
>> word(1)
ans = d
>> word(1) = 'v'
word = vale
>> word(end) = []
word = val
>> word(end+1:end+3) = 'ley'
word = valley
52
2.10 STRINGS AND STRINGS AS VARIABLES
MATLAB رشته هاي چند خطی را به عنوانبه این معنی که هر سطر . آرایه ذخیره می کند
ه باشدداشت) کاراکتر(باید تعداد یکسانی ستون >> names = [ 'Greg'; 'John' ]
names =
Greg
John
>> size( names )
ans =
2 4
53
2.10 STRINGS AND STRINGS AS VARIABLES
سؤال>> names = [ 'Greg'; 'Jon' ]??? Error using ==> vertcat
CAT arguments dimensions are not consistent.
اضافه )معموالً فاصله(باید کاراکترهاي بیشتري ه کرد تا هر سطر تعداد یکسانی کاراکتر داشت
باشد>> names = [ 'Greg'; 'Jon ' ]
Greg
Jon
کاراکتر4کاراکتر3
فاصله اضافه
54
2.10 STRINGS AND STRINGS AS VARIABLES
ی اطمینان از این که هر سطر متن تعداد یکساناین مشکل با . کاراکتر دارد مشکل است
حل MATLABدر charاستفاده از تابع مت این تابع به تعداد الزم فاصله در س. میشود
راست هر سطر اضافه می کند، تا سطرها داراي .تعداد کاراکتر برابر باشند
char('string 1', 'string 2', 'string 3')
55
2.10 STRINGS AND STRINGS AS VARIABLES
مثال>> question=char('Romeo, Romeo,',...
'Wherefore art thou', 'Romeo?' )
question =
Romeo, Romeo,
Wherefore art thou
Romeo?
>> size( question )
ans =
3 18
56
2.10 STRINGS AND STRINGS AS VARIABLES
ذخیره شده اند3*18سه سطر متن در یک آرایه MATLAB هر سطر را به طول بلندترین سطر
میرساندردیف هاي اول و سوم در آرایه باال داراي تعداد فاصله •
ه کافی در انتهاي سمت راست خود هستند تا هر سطر بکاراکتر برسد18طول
R o m e o , R o m e o ,
W h e r e f o r e a r t t h o u
R o m e o ?
57
شماره تمرین هاي منتخب•40•43•44
•11•12•15•19•26•29•30•32•37