متلب به معنی آزمایشگاه ماتریسها میباشد! ماتریسها نیز خود از چندین بردار تشکیل شدهاند. در این قسمت از دوره آموزش رایگان متلب در فنولوژی به صورت کامل در مورد انواع بردار در متلب و عملیاتهای مهم برداری در متلب صحبت میکنیم. با ما همراه باشید.
انواع بردار در متلب
بردار یک آرایه یک بعدی از اعداد است و متلب اجازه میدهد تا دو نوع بردار ایجاد کنید.
- بردارهای ردیفی
- بردارهای ستونی
بردارهای ردیفی در متلب
بردارهای ردیف با قرار دادن مجموعه ای از عناصر در کروشه [ ]، با استفاده از فاصله یا ویرگول برای تعیین درایهها استفاده میشود.
مثال:
1 |
r = [7 8 9 10 11] |
متلب عبارت فوق را اجرا کرده و نتیجه زیر را برمیگرداند:
1 2 3 |
r = 7 8 9 10 11 |
بردارهای ستونی در متلب
بردارهای ستون با محصور کردن مجموعه ای از عناصر در کروشه []، و از نقطه ویرگول برای جداسازی عناصر (درایهها) ایجاد میشوند.
مثال:
1 |
c = [7; 8; 9; 10; 11] |
متلب عبارت فوق را اجرا کرده و نتیجه زیر را برمیگرداند:
1 2 3 4 5 6 |
c = 7 8 9 10 11 |
ارجاع به عناصر یک بردار در متلب
شما میتوانید به چندین روش به یک یا چند عنصر بردار مراجعه کنید. مولفهی i ام یک بردار v به عنوان v(i) معرفی میشود. به عنوان مثال
1 2 |
v = [ 1; 2; 3; 4; 5; 6]; v(3) |
متلب عبارت فوق را اجرا کرده و نتیجه ans = 3 را برمیگرداند.
وقتی به یک بردار با علامت کالن « : » ، مانند (:)v اشاره میکنید، تمام مولفههای بردار برگردانده میشود. برای مثال:
1 2 |
v = [ 1; 2; 3; 4; 5; 6]; v(:) |
متلب عبارت فوق را اجرا کرده و نتیجه زیر را برمیگرداند:
1 2 3 4 5 6 7 |
ans = 1 2 3 4 5 6 |
متلب به شما امکان میدهد یک محدوده مشخص از مولفهها را از یک بردار انتخاب کنید.
به عنوان مثال یک بردار سطری به نام rv که شامل ۹ مولفه است را در نظر بگیرید. سپس به مولفههای سوم تا هفتم آن اشاره کرده و آنها را در متغیر جدیدی به نام sub_rv ذخیره میکنیم. به کد زیر توجه کنید:
1 2 |
rv = [1 2 3 4 5 6 7 8 9]; sub_rv = rv(3:7) |
متلب عبارت فوق را اجرا کرده و نتیجه زیر را برمیگرداند:
1 2 3 |
sub_rv = 3 4 5 6 7 |
انواع عملیات برداری در متلب
انواع عملیات بردار در متلب شامل موارد زیر است که در ادامه هریک را به طور کامل و به همراه مثال توضیح میدهیم.
- جمع و تفریق بردار در متلب
- ضرب اسکالر بردارها
- ترانهادهی بردار
- ترکیب بردارها
- اندازهی بردار
- ضرب نقطهای بردار
- بردارها با عناصری به فاصلههای یکسان
جمع و تفریق بردار در متلب
برای جمع یا تفریق بردارها باید دو بردار دیتاتایپهای یکسان و همچنین تعداد عناصر یکسان باشند. این جمع مولفه به مولفه صورت میگیرد.
مثال: قطعه کد زیر را در یک فایل اسکریپ بنویسید.
1 2 3 4 5 6 |
A = [7, 11, 15, 23, 9]; B = [2, 5, 13, 16, 20]; C = A + B; D = A - B; disp(C); disp(D); |
که نتیجه ی زیر حاصل میشود:
1 2 |
9 16 28 39 29 5 6 2 7 -11 |
ضرب اسکالر عدد در بردار
وقتی یک بردار را در یک عدد ضرب میکنیم، به این عملیات ضرب اسکالر میگوییم. ضرب اسکالر یک بردار جدید را نتیجه میدهد که از دیتاتایپ مشابه بردار ابتدائی به دست آمده و هریک از عناصر آن در عدد اسکالر ضرب شدهاند.
مثال: یک فایل اسکریپت مانند زیر ایجاد کنید.
1 2 |
v = [ 12 34 10 8]; m = 5 * v |
که نتیجه ی زیر حاصل میشود:
1 2 |
m = 60 170 50 40 |
نکته: میتوانید از این عملیات اسکالر روی بردارها به گونههای مختلف استفاده کنید. برای مثال میتوانید یک بردار را به صورت مولفه به مولفه با یک عدد اسکالر جمع، تفریق، تقسیم و یا ضرب کنید.
ترانهادهی بردار در متلب
عملیات ترانهاده، یک بردار ستونی را به یک بردار ردیفی و بالعکس تغییر میدهد. برای اعمال ترانهاده، از عملگر (‘) استفاده میشود.
مثال: یک فایل اسکریپت مانند زیر ایجاد کنید.
1 2 3 4 5 |
r = [ 1 2 3 4 ]; tr = r'; v = [1;2;3;4]; tv = v'; disp(tr); disp(tv); |
که نتیجه ی زیر حاصل میشود:
1 2 3 4 5 6 |
1 2 3 4 1 2 3 4 |
ترکیب دو بردار در متلب
در برنامه متلب میتوان چند بردار را باهم ترکیب کرد و بردار (یا ماتریس) بزرگتری ایجاد کرد. میتوان با استفاده از علامت (;) برای افزودن عناصر در سطر استفاده کرد و با علامت (,) میتوان عناصری به ستون افزود. توجه کنید که اگر بخواهیم دو بردار سطری یا ستونی را به انتهای هم متصل کنیم، میتوانند تعداد عناصر متفاوتی داشته باشند و در نهایت یک بردار سطری ([r1,r2]) یا ستونی ([c1; c2]) ایجاد میشود.
توجه کنید که اگر دو بردار سطری به صورت ستونی ترکیب شوند ([r1;r2])، حتما باید تعداد عناصر یکسانی داشت باشند و حاصل نهایی به صورت یک ماتریس میشود که دو سطر آن، بردارهای ابتدائی هستند. همچنین در مورد ترکیب بردارهای ستونی به صورت سطری ([c1, c2]) نیز همین موارد قابل تعمیم است.
برای درک کامل انواع ۴ ترکیب برداری در متلب، به مثالهای زیر توجه کنید.
1 2 3 4 5 6 7 8 9 |
r1 = [ 1 2 3 4 ]; r2 = [5 6 7 8 ]; r = [r1,r2] rMat = [r1;r2] c1 = [ 1; 2; 3; 4 ]; c2 = [5; 6; 7; 8 ]; c = [c1; c2] cMat = [c1,c2] |
خروجی متلب به شکل زیر است:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
r = Columns 1 through 7: 1 2 3 4 5 6 7 Column 8: 8 rMat = 1 2 3 4 5 6 7 8 c = 1 2 3 4 5 6 7 8 cMat = 1 5 2 6 3 7 4 8 |
اندازهی بردار در متلب
اندازهی یک بردار در متلب با عناصر v1، v2 تا vn به صورت زیر قابل محاسبه است:
$\left | v \right |=\sqrt{v1^{2}+v2^{2}+v3^{2}+ … +vn^{2}} $
برای محاسبهی اندازهی بردار در متلب باید مراحل زیر را دنبال کنید:
- با استفاده از ضرب درایه به درایه (*.) بردار v را در خودش ضرب میکنیم. (تا توانهای دو را بسازیم sv = v.*v; )
- با استفاده از تابع sum، جمع این توانهای دو را حساب میکنیم.
- در نهایت با تابع sqrt، از مجموع به دست آمده جذر میگیریم.
مثال: مراحل بالا را در کد زیر مشاهده میکنید:
1 2 3 4 5 6 |
v = [1: 2: 20]; sv = v.* v; %اعمال توان دو dp = sum(sv); % جمع توانهای دو mag = sqrt(dp); % گرفتن جذر از نتیجه disp('Magnitude:'); disp(mag); |
با اجرای فایل بالا به نتایج زیر خواهید رسید:
1 2 |
Magnitude: 36.469 |
نکته: اگر بردار به صورت آرایهای از بردارها یا ماتریس نباشد، میتوان به جای عملیات بالا از تابع norm نیز استفاده کرد. در این حالت خروجی دقیقا مانند خروجی بالا خواهد شد.
1 2 3 4 |
v = [1: 2: 20]; mag = norm(v); disp('Magnitude:'); disp(mag); |
ضرب نقطهای دو بردار در متلب
به صورت کلی ضرب نقطهای دو بردار a = (a1, a2, …, an) و b = (b1, b2, …, bn) به صورت زیر تعریف میشود:
$ a\cdot b = \sum ai*bi $
در متلب این عملیات با تابع dot انجام میشود. به مثال زیر توجه کنید:
1 2 3 4 5 |
v1 = [2 3 4]; v2 = [1 2 3]; dp = dot(v1, v2); disp('Dot Product:'); disp(dp); |
1 2 |
Dot Product: 20 |
بردارها با عناصری به فاصلههای یکسان
این بردارها برای ایجاد دامنههای مشخصی از توابع زمان یا مکان مفید هستند. مثلا میتوانید برداری از زمان از صفر تا ۱۰ ثانیه به فاصلهی نیم میلی ثانیه ایجاد کنید. برای این کار از سینتکس زیر در متلب میتوان بهره برد: (f اولین عنصر، n گام حرکتی که یک عدد حقیقی است و l عنصر آخر است.)
1 |
v = [f : n : l] |
1 2 3 4 |
v = [1: 2: 20]; sqv = v.^2; disp(v); disp(sqv); |
1 2 |
1 3 5 7 9 11 13 15 17 19 1 9 25 49 81 121 169 225 289 361 |