ماتریس در MATLAB چیست؟
ماتریس یکی از مهمترین ساختارهای داده در محیط MATLAB است. بسیاری از محاسبات عددی، مهندسی و علمی در این محیط با استفاده از آرایهها و ماتریسها انجام میشوند.
یکی از ویژگیهای مهم MATLAB این است که امکان انجام محاسبات روی مجموعهای از دادهها را با دستورات کوتاه فراهم میکند. به همین دلیل، کاربر میتواند به جای پردازش تکتک عناصر، عملیات موردنظر را روی یک آرایه یا ماتریس اجرا کند.
در این مقاله با مفهوم ماتریس در متلب، ماتریسهای ویژه، عملیات اسکالر روی آرایهها، عملیات عنصری بین دو آرایه، عملیات ماتریسی و اجرای توابع ریاضی روی آرایهها آشنا میشویم.
ماتریسها و آرایهها در MATLAB
در MATLAB، آرایه یکی از ساختارهای پایه برای ذخیره و پردازش دادهها است. یک ماتریس را میتوان مجموعهای از عناصر سازمانیافته در سطرها و ستونها در نظر گرفت.
برای مثال، ماتریس زیر دارای سه سطر و سه ستون است:
A = [1 2 3;
4 5 6;
7 8 9];
در این مثال، متغیر A یک ماتریس ۳×۳ است.
یکی از دلایل محبوبیت MATLAB در محاسبات علمی، امکان انجام عملیات مختلف روی چنین آرایههایی با استفاده از دستورات نسبتاً ساده است.
ماتریسهای ویژه در MATLAB
MATLAB تعدادی تابع آماده برای ایجاد ماتریسهای پرکاربرد دارد. استفاده از این توابع باعث میشود نیازی به وارد کردن دستی تمام عناصر ماتریس نباشد.
از جمله مهمترین این توابع میتوان به موارد زیر اشاره کرد:
|
تابع |
کاربرد |
|
eye |
ایجاد ماتریس یکه |
|
ones |
ایجاد ماتریسی با عناصر یک |
|
zeros |
ایجاد ماتریسی با عناصر صفر |
|
rand |
ایجاد ماتریس با اعداد تصادفی |
|
randn |
ایجاد ماتریس با اعداد تصادفی با توزیع نرمال |
این توابع در بسیاری از پروژههای برنامهنویسی، محاسبات عددی و مهندسی مورد استفاده قرار میگیرند.
تابع ones در MATLAB
تابع ones ماتریسی ایجاد میکند که تمام عناصر آن برابر با یک هستند.
برای مثال:
A = ones(2,3)
خروجی:
A =
1 1 1
1 1 1
در این مثال، یک ماتریس دو سطری و سه ستونی ایجاد شده است.
همچنین میتوان برای ایجاد یک ماتریس مربعی از یک مقدار واحد استفاده کرد:
A = ones(2)
خروجی:
A =
1 1
1 1
تابع zeros در MATLAB
اگر به یک ماتریس نیاز داشته باشیم که تمام عناصر آن صفر باشند، میتوانیم از zeros استفاده کنیم.
برای مثال:
A = zeros(2,3)
نتیجه:
A =
0 0 0
0 0 0
این تابع در مقداردهی اولیه آرایهها و بسیاری از الگوریتمهای محاسباتی کاربرد دارد.
تابع eye برای ایجاد ماتریس یکه
تابع eye برای ایجاد ماتریس یکه استفاده میشود.
برای مثال:
I = eye(3)
خروجی:
I =
1 0 0
0 1 0
0 0 1
در ماتریس یکه، عناصر قطر اصلی برابر یک هستند و سایر عناصر صفر هستند.
توابع rand و randn در MATLAB
برای تولید دادههای تصادفی نیز میتوان از توابع آماده MATLAB استفاده کرد.
تابع rand آرایهای از اعداد تصادفی با توزیع یکنواخت تولید میکند:
A = rand(2,3)
در مقابل، randn برای تولید اعداد تصادفی با توزیع نرمال استفاده میشود:
A = randn(2,3)
این توابع در شبیهسازی، آزمایش الگوریتمها و تولید دادههای نمونه کاربرد دارند.
عملیات ریاضی روی آرایهها در MATLAB
یکی از قابلیتهای مهم MATLAB امکان انجام عملیات ریاضی روی آرایهها است.
بهصورت کلی، میتوان عملیات را در چند گروه بررسی کرد:
• عملیات اسکالر ـ آرایه
• عملیات عنصری بین دو آرایه
• عملیات ماتریسی
شناخت تفاوت این عملیات برای کار با MATLAB اهمیت زیادی دارد.
عملیات اسکالر ـ آرایه در MATLAB
در عملیات اسکالر ـ آرایه، یک مقدار اسکالر با عناصر یک آرایه وارد محاسبه میشود.
برای مثال:
x = [1 2 3;
4 5 6;
7 8 9];
y = 2*x + 4;
در این محاسبه، مقدار 2 در تمام عناصر آرایه ضرب شده و سپس مقدار 4 به عناصر حاصل اضافه میشود.
نتیجه:
y =
6 8 10
12 14 16
18 20 22
این ویژگی باعث میشود انجام محاسبات روی مجموعهای از دادهها بسیار سادهتر شود.
عملیات عنصری بین دو آرایه در MATLAB
گاهی لازم است دو آرایه را عنصر به عنصر با یکدیگر مقایسه یا محاسبه کنیم.
در این شرایط، MATLAB از عملگرهای نقطهدار استفاده میکند.
برای مثال:
c = a .* b;
در این حالت، هر عنصر از a در عنصر متناظر خود در b ضرب میشود.
برای تقسیم عنصری نیز میتوان از:
c = a ./ b;
استفاده کرد.
همچنین توان عنصری با:
c = a .^ 2;
انجام میشود.
نقطه قبل از عملگر اهمیت زیادی دارد؛ زیرا نوع عملیات را از عملیات ماتریسی جدا میکند.
دو آرایه برای عملیات عنصری باید چه شرایطی داشته باشند؟
در آموزش پایه MATLAB، برای عملیات عنصری بین دو آرایه، هماندازه بودن آرایهها اهمیت دارد.
برای مثال، اگر a و b هر دو ماتریس ۳×۳ باشند، میتوان عملیات عنصری را به شکل زیر انجام داد:
c = a .* b;
در نسخههای جدید MATLAB، برخی عملیات میتوانند با قواعد implicit expansion روی آرایههایی با ابعاد سازگار نیز انجام شوند. بنابراین هنگام کار با پروژههای جدید، باید ابعاد آرایهها و قواعد سازگاری آنها را بررسی کرد.
عملیات ماتریسی در MATLAB
عملیات ماتریسی با عملیات عنصری یکسان نیستند.
برای مثال، عملگر* در MATLAB برای ضرب ماتریسی استفاده میشود:
C = A * B;
در ضرب ماتریسی، ابعاد دو ماتریس باید با قواعد ضرب ماتریسی سازگار باشند.
در مقابل، برای ضرب عنصر به عنصر از:
C = A .* B;
استفاده میشود.
بنابراین تفاوت میان * و .* یکی از نکات مهمی است که دانشجویان هنگام یادگیری MATLAB باید به آن توجه کنند.
محاسبه ترانهاده ماتریس در MATLAB
برای محاسبه ترانهاده یک ماتریس میتوان از عملگر' استفاده کرد.
برای مثال:
A = [2 1 7;
1 5 4;
0 6 6];
B = A';
در این حالت، سطرهای ماتریس A به ستونهای ماتریس B تبدیل میشوند.
ترانهاده در بسیاری از محاسبات ماتریسی، جبر خطی و الگوریتمهای عددی کاربرد دارد.
اعمال توابع ریاضی روی آرایهها
یکی از قابلیتهای مهم MATLAB این است که بسیاری از توابع ریاضی را میتوان مستقیماً روی آرایهها اعمال کرد.
برای مثال، اگر آرایهای به نام A داشته باشیم:
A = [2 4 6;
3 5 6;
10 -1 0];
میتوان تابع سینوس را روی عناصر آرایه اعمال کرد:
SinA = sin(A/10);
MATLABنتیجه را برای عناصر آرایه محاسبه میکند و یک آرایه خروجی ایجاد میکند.
این قابلیت باعث میشود کاربر مجبور نباشد تابع را برای هر عنصر بهصورت جداگانه اجرا کند.
چرا کار با آرایهها در MATLAB اهمیت دارد؟
MATLAB اساساً برای انجام محاسبات عددی و کار با دادههای ماتریسی طراحی شده است.
به همین دلیل، یادگیری آرایهها و ماتریسها پایه مهمی برای مباحث پیشرفتهتر محسوب میشود.
دانشجویانی که قصد دارند در زمینههایی مانند محاسبات مهندسی، تحلیل داده، شبیهسازی یا پردازش عددی فعالیت کنند، بهتر است ابتدا مفاهیم پایه آرایهها را بهخوبی یاد بگیرند.
تفاوت عملیات ماتریسی و عنصری
یکی از مهمترین نکات آموزشی این مبحث، تشخیص تفاوت عملیات ماتریسی و عنصری است.
|
عملیات |
عملگر نمونه |
مفهوم |
|
ضرب ماتریسی |
A * B |
ضرب طبق قواعد جبر ماتریسی |
|
ضرب عنصری |
A .* B |
ضرب عناصر متناظر |
|
تقسیم عنصری |
A ./ B |
تقسیم عناصر متناظر |
|
توان عنصری |
A .^ 2 |
توان هر عنصر |
|
جمع ماتریسی |
A + B |
جمع عناصر متناظر در آرایههای سازگار |
به همین دلیل، وجود یا نبودن نقطه قبل از بعضی عملگرها میتواند نتیجه محاسبه را کاملاً تغییر دهد.
اشتباهات رایج در کار با ماتریس در MATLAB
هنگام یادگیری MATLAB چند اشتباه رایج ممکن است رخ دهد.
اشتباه اول؛ اشتباه گرفتن * و .*
* در ضرب ماتریسی و .* برای ضرب عنصری استفاده میشود.
اشتباه دوم؛ بیتوجهی به ابعاد آرایه
پیش از انجام عملیات، باید ابعاد آرایهها و سازگاری آنها را بررسی کرد.
اشتباه سوم؛ اشتباه در ایجاد ماتریس
هنگام تعریف دستی ماتریس باید تعداد عناصر سطرها و ستونها با ساختار موردنظر سازگار باشد.
اشتباه چهارم؛ استفاده نادرست از توابع تصادفی
rand و randn توزیعهای متفاوتی دارند و نباید بدون توجه به کاربردشان جایگزین یکدیگر شوند.
جمعبندی؛ یادگیری ماتریس در MATLAB
ماتریسها و آرایهها بخش جداییناپذیر محیط MATLAB هستند. بسیاری از محاسبات علمی و مهندسی در این محیط بر پایه همین ساختارها انجام میشوند.
در این مقاله با چند تابع مهم مانند eye، ones، zeros، rand و randn آشنا شدیم. همچنین عملیات اسکالر ـ آرایه، عملیات عنصری و عملیات ماتریسی را بررسی کردیم.
یکی از مهمترین نکات این مبحث، تشخیص تفاوت میان عملیات ماتریسی و عنصری است. برای مثال، A * B با A .* B عملکرد یکسانی ندارد.
همچنین MATLAB این امکان را فراهم میکند که بسیاری از توابع ریاضی مانند sin را مستقیماً روی آرایهها اعمال کنیم.
اگر در ابتدای مسیر یادگیری MATLAB هستید، تسلط بر آرایهها و ماتریسها میتواند پایه مناسبی برای ورود به مباحث پیشرفتهتر این محیط ایجاد کند.
یادگیری MATLAB را کاربردی شروع کنید
اگر میخواهید MATLAB را از مفاهیم پایه تا کاربردهای عملی یاد بگیرید، شرکت در یک دوره یا وبینار برنامهنویسی MATLAB میتواند مسیر یادگیری شما را ساختارمندتر کند.
برای ثبتنام در وبینار برنامهنویسی MATLAB پژواک دانش، اقدام کنید.