بر روی لینک های زیر کلیک نمایید
- دانلود رایگان کد های آماده MATLAB
- دانلود رایگان فیلم های آموزشی الگوریتم های بهینه سازی ، شبکه عصبی ، منطق فازی و ...
- انجام پروژه های برنامه نویسی MATLAB
- تدریس خصوصی ، دوره های آموزشی الگوریتم های بهینه سازی ، شبکه عصبی ، منطق فازی و ...
- دانلود رایگان فایل های آموزشی
عملیات ماتریسی مقدماتی
در ابتدا می توان بردار ساده ای با ۹ عنصر ساخت.
a = [1 2 3 4 6 4 3 4 5]
a =
1 2 3 4 6 4 3 4
حالا می شود ۲ را به هر یک از عناصر بردار اضافه و نتیجه را در یک بردار جدید ذخیره کنیم
b = a + 2
b =
3 4 5 6 8 6 5 6 7
یکی از زمینه های برتری مطلب محاسبه ماتریسی آن است ساختن یک ماتریس به سادگی ساختن یک بردار است با استفاده از سمیکالن می توان سطرهای یک ما تریس را جدا کرد .
A = [1 2 0;2 5 -1;4 10 -1]
A =
1 ۲ ۰
۲ ۵ -۱
۴ ۱۰ -۱
ما به سادگی می توانیم وارون(ترانهاده) ماتریس را بیابیم .
B = A’
B =
1 ۲ ۴
۲ ۵ ۱۰
۰ -۱ -۱
حال می توان این دو ماتریس را در هم ضرب کنیم. باز هم توجه کنید که نرم افزارمطلب حق ندارد ماتربس را به عنوان جمعی از اعداد در نظر بگیرد مطلب می داند شما چه وقت با ماتریس سروکار دارید واز این رو محاسبات شما را تطبیق می دهد .
C = A * B
C =
5 12 24 12 30 59 24 59 117
در هنگام ضرب ماتریس با استفاده از عملگر(*) می توان دو ماتریس یا دو بردار را در هم ضرب نمود .
C = A .* B
C =
1 4 0 4 25 -10 0 -10 1
بیایید معکوس ماتریس را پیدا کنیم .
X = inv(A)
X =
5 2 -2
-2 -1 1
0 -2 1
این واقعیت را که ضرب یک ماتریس در خودش ,ماتریس واحد است را نشان میدهیم .
I = inv(A) * A
I =
1 0 0 0 1 0 0
مطلب برای اکثر محاسبات عمومی ماتریس ,تابع دارد در اینجا توابعی برای بدست آوردن مقادیر ویژه وجود دارد .
eig(A)
ans =
3.7321 0.2679 1.0000
svd(A)
ans = 12.3171 0.5149 0.1577
ما به راحتی میتوانیم ریشه های یک کثیرالجمله ای را با استفاده از تابع”roots” پیدا کنیم .این در حقیقت مقادیر ویژه ماتریس اصلی هستند .
roots(p)
ans =
3.7321 1.0000 0.2679
نرم افزار “Matlab” کاربرد های زیادی ماورای محاسبات ماتریسی دارد .
برای محاسبه “کانولوشن”دو بردار:
q = conv(p,p)
q =
1 -10 35 -52 35 -10 1
یا به منظور بدست آوردن کانولوشن دوباره و رسم نتیجه محاسبه
r = conv(p,q)
r =
1 -15 90 -278 480 -480 278 -90 15 -1
در هر زمان ما می توانیم فهرستی از متغیرهای ذخیره شده در حافظه را با استفاده از دستور “whos”یا”who” بدست آوریم.
whos
Name Size Bytes Class
A ۳x3 ۷۲ double array
B ۳x3 ۷۲ double array
C ۳x3 ۷۲ double array
Grand total is 488 elements using 3904 bytes
شما می توانید مقدار یک متغیر خاص را با تایپ نمودن نام آن دریافت کنید.
A
A =
1 ۲ ۰
۲ ۵ -۱
۴ ۱۰ -۱
می توانید بیش از یک دستور را در یک خط با تفکیک نمودن هر دستور توسط کاما یا سمیکالن داشته باشیم .اگر شما یک متغیر را برای ذخیره شدن نتیجه یک عملیات انتخاب نکنید نتیجه در یک متغیر بنام ”ans” ذخیره می شود .
sqrt(-1), log(0)
ans =
0 + 1.0000i
Warning: Log of zero.
ans =
-Inf
در این مورد چون ما دستورات را با کاما تفکیک نمودیم نتیجه هر عملیات روی صفحه نمایش منعکس شده است همان طور که می بینیم نرم افزار مطلب براحتی با اعداد مختلط و بینهایت در محاسبات کار میکند.
sqrt(-1), log(0)
ans =
0 + 1.0000i
Warning: Log of zero.
ans = -Inf
امیدوارم این برنامه به شما برای شروع کار برنامه نویسی با matlab کمک کافی کرده باشه .
نمایش مقدار متغیر بدون نام متغیر با دستور disp
نرم افزار متلب، برای نمایش مقدار یک متغیر، ابتدا نام متغیر را می نویسد، سپس یک علامت تساوی (=) را نوشته و در زیر آن، مقدار متغیر را نمایش می دهد. ممکن است در مواردی بخواهیم که تنها مقدار متغیر، در پنجره Command ، نمایش داده شود و نام متغیر، نمایش داده نشود. در این صورت، باید از دستور disp استفاده کنیم. به مثال زیر توجه کنید :
مثال :
برای مقایسه، ابتدا روش معمولی برای نمایش مقدار متغیر را به کار می بریم :
A
نتیجه :
2
حال از دستور disp استفاده می کنیم :
disp(A)
نتیجه :
مشاهده می کنید که تنها مقدار متغیر A نمایش داده شده است و دیگر از نمایش نماد A و علامت تساوی (=) خبری نیست.
توابع داخلی در متلب
منظور از توابع داخلی، توابعی است که در نرم افزار متلب وجود دارند و هر یک عمل خاصی را انجام می دهند و چندین حرف برای نامگذاری آنها به کار رفته است.
به عنوان مثال می توان توابع sin ، cos و tan را نام برد که همان توابع مثلثاتی مشهور در ریاضیات می باشند. این توابع، یک عدد را دریافت کرده و به ترتیب، نتیجه سینوس، کسینوس و تانژانت آن را در خروجی نمایش می دهند.
باید توجه داشته باشید که چون نرم افزار متلب به هر یک از این توابع، یک دستور اختصاص داده است، بنابراین در مباحث دیگر ممکن است از لفظ دستور sin ، دستور cos و … استفاده کنیم و در واقع حجم زیادی از دستورات متلب را که به کار می بریم، توابع داخلی متلب می باشند که توسط تیم توسعه دهنده این نرم افزار، ساخته شده اند و ما با دستورات متلب از آنها استفاده می کنیم.
در جدول زیر، تعدادی از توابع داخلی matlab را برای نمونه آورده ایم :
تابع | عملکرد تابع | دستور در متلب |
sin | محاسبه سینوس | sin |
cos | محاسبه کسینوس | cos |
tan | محاسبه تانژانت | tan |
مثال :
نتیجه :
1
تعریف توابع در متلب با دستور inline
برای آن که بتوانیم توابع مورد نظر خود را در متلب تعریف کنیم، به شیوه های مختلفی می توانیم عمل کنیم که یکی از آنها استفاده از دستور inline می باشد. به مثال زیر توجه کنید :
مثال :
فرض کنید بخواهیم تابع f را به صورت یک چند جمله ای از x تعریف کنیم. می نویسیم :
نتیجه :
Inline function:
f(x) = x^2+2*x+1
درون پرانتز دستور inline ، عبارت اول برابر چندجمله ای و عبارت دوم، متغیر را مشخص می کند. در دستور فوق می توانیم عبارت ‘x’ را که متغیر را مشخص می کند، حذف کنیم، زیرا دستور inline می تواند آن را حدس بزند. به مثال زیر توجه کنید :
مثال :
فرض کنید بخواهیم تابع f را به صورت یک چند جمله ای از x تعریف کنیم. می نویسیم :
نتیجه :
Inline function:
f(x) = x^2+2*x+1
حال در مثال زیر نشان می دهیم که چگونه تابع تعریف شده، مقدار متغیر x را دریافت کرده و نتیجه را در خروجی نمایش می دهد :
مثال :
f(2)
نتیجه :
Inline function:
f(x) = x^2+2*x+1
ans =
9
تابع تعریف شده قبلی، تنها قادر است که در ورودی، یک مقدار را برای متغیر x دریافت کرده و سپس نتیجه را نمایش دهد. فرض کنید که بخواهیم تابع در ورودی، یک بردار را دریافت کرده و سپس مقدار تابع را برای هر عنصر آن بردار محاسبه کند، برای این منظور باید در عبارتی که برای تعریف تابع به کار می بریم، از vectorize استفاده کنیم. به مثال زیر توجه کنید :
مثال :
A=1:5
f(A)
نتیجه :
Inline function:
f(x) = x.^2+2.*x+1
A =
1 ۲ ۳ ۴ ۵
ans =
4 ۹ ۱۶ ۲۵ ۳۶
تعریف توابع شامل دو متغیر در متلب با دستور inline :
برای تعریف توابع دو متغیره، درون پرانتز دستور inline ، ابتدا باید عبارت تابع را نوشته و سپس نماد دو متغیر را به ترتیب مشخص کنیم. به مثال زیر توجه کنید :
مثال :
f(1,2)
نتیجه :
Inline function:
f(x,y) = x^2+2*y
ans =
5
ساخت تابع در متلب با استفاده از m-file
در متلب با استفاده از دستور inline نیز می توان تابع ساخت، اما ساخت تابع با استفاده از m-file انتخابی حرفه ای تر می باشد. معمولا برنامه نویسان حرفه ای، چارچوب برنامه را در یک فایل اصلی می نویسند و بخش های مختلف برنامه را به صورت تابع هایی می نویسند که یک یا چند ورودی را دریافت کرده و محاسبات لازم را انجام می دهند و سپس یک یا چند خروجی را بر می گردانند. برنامه نویس، عملکرد هر تابع را جداگانه چک می کند و سپس زمانی که از بابت آنها خیالش راحت شد، تمرکز اصلی خود را بر روی فایل اصلی که حاوی چارچوب برنامه می باشد، می گذارد و تنها در فایل اصلی، ارجاعاتی به توابع ساخته شده خواهد داد.
چنانچه شما هم از این شیوه استفاده کنید، پس از مدتی صاحب بانکی از توابع خواهید شد که در نوشتن برنامه های جدید، بسیار به شما کمک می کند.
با مثالی ساده، نحوه ساخت یک تابع با استفاده از m-file را شرح می دهیم :
مثال :
می خواهیم تابعی به نام add بسازیم که در ورودی، دو عدد را دریافت کرده و سپس مجموع آن دو عدد را در خروجی برگرداند. ابتدا یک m-file خالی باز می کنیم و کد زیر را در آن می نویسیم :
z=x+y;
در کد متلب بالا، کلمه function اعلام می کند که این m-file به صورت یک تابع می باشد. خروجی با نام z و دو ورودی با نام های x و y مشخص شده اند. کلمه ای که بعد از علامت تساوی قرار می گیرد (در اینجا کلمه add)، نام تابع را مشخص می کند و باید در مرحله بعد، m-file را دقیقا با همین نام ذخیره کنیم. بنابراین m-file را با نام add ذخیره می کنیم.
همان طور که مشاهده کردید، خط اول، ساختار تابع را مشخص می کند و در خط های بعدی، تنها کاری که باید انجام دهیم، این است که روابط بین ورودی ها و خروجی را تعریف کنیم که در این مثال، تنها یک جمع ساده می باشد.
پس از ذخیره کردن m-file ، دیگر کاری با آن نداریم. باید دقت کنید که اگر بخواهید این m-file را با گزینه Save and run در بالای پنجره، اجرا کنید، با یک خطا مواجه می شوید، زیرا این m-file یک تابع است و باید ورودی هایی برای آن تعریف کنیم.
اکنون باید تابع ساخته شده را تست کنیم. دستور زیر را در پنجره Command می نویسیم (و یا در یک m-file دیگر) :
C=3;
A=add(B,C)
نتیجه :
5
نکته :
باید m-file تابع درون Current folder و یا سایر مسیرهای مشخص شده برای نرم افزار متلب باشد. در غیر این صورت، متلب یک پیام خطا را نمایش می دهد. این پیام خطا، به این دلیل است که متلب نمی تواند m-file با نام add را پیدا کند.
نکته :
در دستور فوق مشاهده کردیم که نام هایی که برای ورودی و خروجی تابع add استفاده کردیم (A و B و C)، با نام های درون خود کدهای تابع add ، متفاوت است (x و y و z). بنابراین احتیاجی نیست که نگران نام های به کار رفته در ساختار تابع باشید و از هر نام دلخواهی برای ارجاع به تابع می توانید استفاده کنید.