امتیاز موضوع:
  • 4 رأی - میانگین امتیازات: 2.75
  • 1
  • 2
  • 3
  • 4
  • 5
آموزش MATLAB
نویسنده پیام
aminsotudeh غایب
كاربر دو ستاره
**

ارسال‌ها: 179
موضوع‌ها: 19
تاریخ عضویت: اردیبهشت ۱۳۸۶

تشکرها : 1357
( 1331 تشکر در 343 ارسال )
ارسال: #1
آموزش MATLAB
سلام

برای شروع برنامه زیر رو اجرا کنید

کد:
L = 40*membrane(1,25);

logoFig = figure('Color',[0 0 0]);
logoax = axes('CameraPosition', [-193.4013 -265.1546  220.4819],...
    'CameraTarget',[26 26 10], ...
    'CameraUpVector',[0 0 1], ...
    'CameraViewAngle',9.5, ...
    'DataAspectRatio', [1 1 .9],...
    'Position',[0 0 1 1], ...
    'Visible','off', ...
    'XLim',[1 51], ...
    'YLim',[1 51], ...
    'ZLim',[-13 40], ...
    'parent',logoFig);
s = surface(L, ...
    'EdgeColor','none', ...
    'FaceColor',[0.9 0.2 0.2], ...
    'FaceLighting','phong', ...
    'AmbientStrength',0.3, ...
    'DiffuseStrength',0.6, ...
    'Clipping','off',...
    'BackFaceLighting','lit', ...
    'SpecularStrength',1.1, ...
    'SpecularColorReflectance',1, ...
    'SpecularExponent',7, ...
    'Tag','TheMathWorksLogo', ...
    'parent',logoax);
l1 = light('Position',[40 100 20], ...
    'Style','local', ...
    'Color',[0 0.8 0.8], ...
    'parent',logoax);
l2 = light('Position',[.5 -1 .4], ...
    'Color',[0.8 0.8 0], ...
    'parent',logoax);

توبه گرگ مرگه!
۱۸-شهریور-۱۳۸۸, ۰۳:۰۲:۳۹
ارسال‌ها
پاسخ
تشکر شده توسط : t3r!p3000, HoseinVig, mvig, rs22ay, pari70, shima20164, orange signal, nematullah
t3r!p3000 آفلاین
         
*****

ارسال‌ها: 5,050
موضوع‌ها: 83
تاریخ عضویت: اردیبهشت ۱۳۸۵

تشکرها : 34447
( 17423 تشکر در 5116 ارسال )
ارسال: #2
RE: آموزش MATLAB
مهندس فکر نمی کنی برای شروع یکم سخت باشه !

الان اینو تو M-FILE بنویسیم یا نه تو محیط COMMAND متلب !

بعد این برنامه چی کار می کنه !؟

ممنون مهندس !
۱۸-شهریور-۱۳۸۸, ۰۳:۳۳:۴۱
ارسال‌ها
پاسخ
تشکر شده توسط : HoseinVig, mvig, aminsotudeh, pari70, orange signal, oqebapawic
mvig آفلاین
كاربر دو ستاره
**

ارسال‌ها: 123
موضوع‌ها: 15
تاریخ عضویت: مرداد ۱۳۸۸

تشکرها : 609
( 298 تشکر در 104 ارسال )
ارسال: #3
RE: آموزش MATLAB
آقا اينجورى نميشه.
بايد pdf بذارى.

وقت خودتم كمتر گرفته ميشه.
پول تلفن خونتونم كمتر مياد.

سيد محمد سادات كيايى
[تصویر:  emunderline.png]
۱۸-شهریور-۱۳۸۸, ۱۱:۳۱:۱۲
ارسال‌ها
پاسخ
تشکر شده توسط : aminsotudeh, t3r!p3000, orange signal, oqebapawic
aminsotudeh غایب
كاربر دو ستاره
**

ارسال‌ها: 179
موضوع‌ها: 19
تاریخ عضویت: اردیبهشت ۱۳۸۶

تشکرها : 1357
( 1331 تشکر در 343 ارسال )
ارسال: #4
RE: آموزش MATLAB
(۱۸-شهریور-۱۳۸۸, ۰۳:۳۳:۴۱)t3r!p3000 نوشته است: مهندس فکر نمی کنی برای شروع یکم سخت باشه !

الان اینو تو M-FILE بنویسیم یا نه تو محیط COMMAND متلب !

بعد این برنامه چی کار می کنه !؟

ممنون مهندس !

من هنوز آموزش رو شروع نکردم!
هم می تونی تو mfile بذاری هم تو command window.
برای باز کردن mfile برید به file و در قسمت new گزینه mfile رو انتخاب کن. بعد برنامه رو تو صفحه ش paste کن.بعد تو پوشه matlab تو my documents باید save کنی. و اجرا کنی. حالا میتونی با وارد کردن نام mfile در command window و زدن Enter اجراش کنی. تو ورژن های جدید متلب در پنجره mfile گزینه اجرا وجود داره که قبل از اجرا اول باید برای save کردن آدرس بدی تا اینکه اجرا بشه.
ولی فعلا راحت تره که کل برنامه رو تو محیط command window کپی کنی و Enter بزنی.
خروجی این برنامه لوگوی نرم افزار متلب هست که همون آواتار منه!



(۱۸-شهریور-۱۳۸۸, ۱۱:۳۱:۱۲)mvig نوشته است: آقا اينجورى نميشه.
بايد pdf بذارى.

وقت خودتم كمتر گرفته ميشه.
پول تلفن خونتونم كمتر مياد.

من الان بیشتر آموزش رو آماده کردم. هر وقت کامل شد pdf هم میکنم برای دانلود میذارم.
کتاب هایی که قبلا معرفی کردم کمکت میکنه.
http://forum.iranled.com/showthread.php?tid=13750
ضمنا من تو اینترنت که تایپ نمیکنم!
میام بیرون سر فرصت Biggrin

توبه گرگ مرگه!
(آخرین ویرایش در این ارسال: ۱۸-شهریور-۱۳۸۸, ۱۲:۵۴:۵۲، توسط aminsotudeh.)
۱۸-شهریور-۱۳۸۸, ۱۲:۴۸:۱۲
ارسال‌ها
پاسخ
تشکر شده توسط : t3r!p3000, lord_viper, mvig, pari70
aminsotudeh غایب
كاربر دو ستاره
**

ارسال‌ها: 179
موضوع‌ها: 19
تاریخ عضویت: اردیبهشت ۱۳۸۶

تشکرها : 1357
( 1331 تشکر در 343 ارسال )
ارسال: #5
RE: آموزش MATLAB
سلام
بالاخره تونستم آموزش متلب رو آماده کنم. البته فعلا کامل نیست.
من چند روز اخیر داشتم کتاب زیر رو ترجمه می کردم (شاید هم تفسیر!) . تو این پست خلاصه فصل اول این کتاب رو قرار میدم.
این هم مشخصات کتاب:
A Guide to MATLAB
for Biginners and Experienced Users
نوشته
Brian R. Hunt & Ronald L. Lipsman & Jonathan M. Rosenberg


--- مثال ها و دستورات متلب در خطوطی است که ابتدای آن با >> شروع شده است. اگر خط را به طور کامل در محیط command window کپی کنید علامت >> کپی نمی شود. تا زمانی که آموزش به مرحله برنامه نویسی نرسیده توصیه می کنم از طریق command window دستورات را اجرا کنید.( خطوط دستور را به طور کامل کپی کنید و در command window قرلر دهید و Enter بزنید)

--- گرفتن توضیح در متلب
برای گرفتن توضیح درباره هر تابع باید نام تابع را در مقابل کلمه help قرار دهید. برای مثال برای مشاهده نحوه گرفتن توضیح در متلب دستور زیر را در محیط command window کپی کنید و آنرا اجرا کنید.
کد:
>> help help
و به عنوان مثالی دیگر توضیحات متلب درباره تابع رادیکال را بدست می آوریم.
کد:
>> help sqrt
که این اطلاعات به دست میاد.

کد:
SQRT   Square root.
    SQRT(X) is the square root of the elements of X.
Complex results are produced if X is not positive.

پس اگر احیانا در مورد تابعی توضیح داده نشد از متلب کمک بگیرید.
همچنین در help متلب میتوانید توضیحات بیشتری بدست آورید.

--- متوقف کردن برنامه
اگر اجرای برنامه ای زیاد طول کشید یا باعث هنگ کردن کامپیوتر شد , با نگه داشتن کلید CTRL و زدن کلید C اجرا را متوقف کنید.


--- در آموزشی که آماده کردم (به جز دستورات گرافیکی ) نتیجه دستورات را قرار ندادم . پس سعی کنید حتما نرم افزار متلب رو تهیه کنید .

--- اگر انتقاد یا پیشنهادی داشتید حتما مطرح کنید.

توبه گرگ مرگه!
(آخرین ویرایش در این ارسال: ۲۲-شهریور-۱۳۸۸, ۲۱:۵۲:۲۶، توسط aminsotudeh.)
۲۲-شهریور-۱۳۸۸, ۲۱:۳۹:۵۸
ارسال‌ها
پاسخ
تشکر شده توسط : t3r!p3000, lord_viper, mvig, mjbbest, sasparatan, nematullah, iyevaneeh
aminsotudeh غایب
كاربر دو ستاره
**

ارسال‌ها: 179
موضوع‌ها: 19
تاریخ عضویت: اردیبهشت ۱۳۸۶

تشکرها : 1357
( 1331 تشکر در 343 ارسال )
ارسال: #6
RE: آموزش MATLAB
فصل دوم

مقدمات متلب

عملیات محاسباتی

از نرم افزار متلب می توان به عنوان یک ماشین حساب استفاده کرد. مثال زیر را در نظر بگیرید.

کد:
>> 3^2 - (5 + 4)/2 + 6*3

اگر در سمت چپ عبارت بالا متغیری تعریف نکنیم , متلب آنرا در متغیری به نام ans قرار می دهد.

کد:
>> ans^2 + sqrt(ans)

همانطور که میبینید متلب مقدار جدیدی را به متغیر ans اختصاص داد.
می توانیم مقدار محاسبه شده را در متغیر خاصی قرار دهیم.

کد:
>> u = cos(10)

توابع مثلثاتی با رادیان کار می کنند.
و مثالی دیگر

کد:
>> v = sin(10)

از دو متغیر حاصله میتوان در محاسبات بعدی استفاده کرد.

کد:
>> u^2 + v^2

متلب به صورت پیش فرض با format short کار می کند. برای تغییر فرمت و افزایش دقت خروجی عبارت زیر را تایپ کنید.

کد:
>> format long

حالا با دستور زیر دقت برنامه را ببینید.

کد:
>> 1/3

برای بازگشت به فرمت قبلی دستور زیر را وارد کنید.

کد:
>> format short

مسائل جبری

برای اینکه بتوانیم با متغیر ها به صورت سمبلیک رفتار کنیم , باید ابتدا متغیر را سمبلیک کنیم.
کد:
>> syms x y
>> (x - y)*(x - y)^2
و نتیجه حاصله را بسط می دهیم.

کد:
>> expand(ans)

و دوباره آنرا فاکتور گیری می کنیم.

کد:
>> factor(ans)

متلب تابعی دارد که می توانید ساده ترین فرمول ممکن را بدست اورید.

کد:
>> simplify((x^3 - y^3)/(x - y))

متلب تابع دیگری دارد که یک عبارت ریاضی را به همه شکل های ممکن ساده می کند.

کد:
>> simple((x^3 - y^3)/(x - y))

عبارات پارامتری و محاسبات دقیق

در متلب عدد پی با pi نشان داده می شود. جواب عبارت زیر را ببینید.

کد:
>> cos(pi/2)

جواب باید صفر شود. ولی به دلیل دقیق نبودن عدد پی کمی با صفر فاصله دارد. تابع sym این عدد را به عددی سمبلیک و دقیقا برابر pi/2 تبدیل می کند.

کد:
>> cos(sym('pi/2'))

به این نکته دقت کنید که عبارت syms x معادل عبارت ('x=sym('x است. با این تفاوت که sym تاثیر موقت دارد ولی syms تاثیر دائم دارد.
به نحوه جمع کردن دو عدد 1/2 و 1/3 به صورت سمبلیک توجه کنید.

کد:
>> sym('1/2') + sym('1/3')

حالا ببینید چگونه می توان عدد رادیکال 2 را تا 50 رقم اعشار بدست آورد.

کد:
>> vpa('sqrt(2)', 50)

تابع vpa برای گرفتن دقت بیشتر بکار می رود. برای مثال نتیجه عبارتهای (vpa(3^45 و ('vpa('3^45 را با هم مقایسه کنید. در کاربرد های تجربی بین این دو مقدار فرقی وجود ندارد ولی بعضی مواقع به عدد دقیق نیاز است که باید عبارت دوم را بکار برد.

مدیریت متغیر ها

در متلب سه طبقه متفاوت داده وجود دارد. عدد و رشته و اعداد سمبلیک. با استفاده از دستور whos می توان خلاصه ای از اسامی و متغیر هایی که تا به حال تعریف شده مشاهده کنیم.

کد:
>> whos

تا حالا 5 متغیر تعریف کردیم. X و y به دلیل به کار بردن syms سمبلیک هستند. متغیر ans هم به دلیل این که جمع دو متغیر سمبلیک است سمبلیک شده است. متغیر های u و v هم اسکالر هستند. در قسمت سایز هم از سمت چپ به ترتیب تعداد سطر ها و ستون های ماتریس را نشان می دهد.
بنویسید u=pi و 'v='pi و ('w=sym('pi و سپس دستور whos را وارد کنید تا تفاوت این داده ها را ببینید.
برای مشاهده مقدار هر متغیر نام آن را در پنجره command window بنویسید و Enter بزنید.
شما باید تشخیص دهید که هر تابع به چه نوع ورودی ای نیاز دارد. وگرنه دادن ورودی نا مناسب به آن منجر به پیام eror می شود.
برای پاک کردن همه متغیر ها از حافظه دستور clear یا clear all را وارد کنید. شما همچنین می توانید بنویسید clear x y برای این که بتوانید فقط متغیر های x و y را پاک کنید. شما معمولا باید قبل از شروع محاسبات جدید متغیر های قبلی را پاک کنید.
توجه کنید که اطلاعات مشاهده شده از طریق دستور whos در پنجره workspace هم قابل مشاهده است.
می توانیم متغیر هایی که تا به حال در حافظه موقت ذخیره شده است را ذخیره کنیم. برای این کار در قسمت workspace روی گزینه save کلیک کنید و برای ذخیره آن آدرس دهید تا با فرمت mat. ذخیره شود. بعد از بسته شدن نرم افزار متلب , هر وقت خواستید دوباره آموزش را ادامه دهید , نرم افزار را باز کنید و در قسمت workspace به بخش import data بروید و فایل ذخیره شده را انتخاب و گزینه finish را بزنید.

خطا در ورودی

یکی از رایج ترین خطا ها در ورودی که منجر به دریافت پیام eror می شود , خطای ضرب است. به مثال زیر توجه کنید.

کد:
>> 3u^2

در نتیجه متلب eror می دهد. خطا به دلیل فقدان اپراتور ضرب * است.
یکی دیگر از خطا های معمول به پرانتز مربوط می شود که معمولا پرانتز باز می شود و بسته نمی شود.
عدم تشخیص نوع ورودی مورد نیاز هم یکی خطاهای رایج در متلب است. در ادامه توضیحات بیشتری ارائه می شود.

متغیر ها و نام گذاری آنها

به مثال زیر توجه کنید.
کد:
>> x = 7
>> syms y
>> z = x^2 - 2*x*y + y
همان طور که می بینید به x عدد دادیم و y را سمبلیک کردیم. برای محاسبه z , متلب به جای متغیر x مقدار 7 قرار می دهد.
کد:
>> clear x; syms x y
>> z = x^2 - 2*x*y + y
در اینجا متغیر قبلی x را حذف کردیم و دوباره x را سمبلیک کردیم.
کد:
>> 5*y*z
همان طور که دیدید به جای z مقدار حاصل از دستورات قبلی را قرار داد.

حل معادلات

می توانیم عبارات شامل متغیر ها را با استفاده از دستورات solve و fzero حل کنیم. به مثال زیر توجه کنید.
کد:
>> solve('x^2 - 2*x - 4 = 0')
این دستور ریشه های معادله درجه دوم مورد نظر را بدست می دهد. جواب به صورت سمبلیک است. برای مشاهده اسکالر باید دستور (double(ans یا برای رقم های بیشتر دستور (vpa(ans را وارد کنید.
دستور solve همچنین می تواند چند جمله ای های درجه بالاتر را هم حل کند. همچنین می تواند معادلاتی با بیش از یک متغیر را حل کند. اگر تعداد معادلات کمتر از تعداد متغیر ها باشد باید مشخص کنیم کدام متغیر ها باید حل شوند. دستور زیر y را بر حسب متغیر x بدست می دهد.
کد:
>> solve('2*x - log(y) = 1', 'y')
می توانیم با استفاده از دستور solve بیش از یک معادله را حل کنیم.
کد:
>> [x, y] = solve('x^2 - y = 2', 'y - 2*x = 5')
این سیستم معادلات , دو جواب دارد. جواب اول x با جواب اول y همزمان رخ می دهند. جواب دوم هم به همین صورت.
می توانیم جواب اول x و y را با استفاده از دستورات زیر بگیریم.
کد:
>> x(1)
>> y(1)
در دستور بالا ابتدا ans به x اختصاص می یابد و سپس به y. جواب دوم می تواند با دستورات (x(2 و (y(2 بدست آید.
توجه کنید که اگر در سمت چپ دستور solve بردار تعریف نکنیم متلب نتیجه را نمایش تخواهد داد.
برای مثال
کد:
>> sol = solve('x^2 - y = 2', 'y - 2*x = 5')
در اینجا برای بدست آوردن بردار x تایپ کنید x=sol.x و همچنین برای y تایپ کنید y=sol.y . برای گرفتن مقادیر اول تایپ کنید (sol.x(1 .
در بعضی معادلات جواب نمی تواند سمبلیک باشد. به همین دلیل متلب جواب اسکالر می دهد.برای مثال
کد:
>> solve('sin(x)=2-x')
گاهی اوقات جواب بیشتر از یکی است و جواب دلخواهمان را نمی گیریم.برای مثال
کد:
>> solve('exp(-x) = sin(x)')
جواب ,یک عدد مختلط است. حرف i در انتهای عدد دوم نمایانگر رادیکال (1-) است. با وجودی که این یک جواب معتبر برای این معادله است , این معادله جواب های حقیقی هم دارد.
نمودار برخورد (sin(x و (exp(-x در شکل زیر نشان داده شده است. نحوه رسم این نمودار در ادامه توضیح داده می شود.

[تصویر:  1.JPG]

هر کدام از نقاط برخورد یکی از جواب های معادله است.
با تابع fzero می توان جواب های معادله را بصورت عددی بدست آورد. در واقع جواب معادله بالا , صفر های معادله (exp(-x)-sin(x است. دستور زیر این عبارت را بصورت تابعی بر حسب x تبدیل می کند.
کد:
>> inline('exp(-x) - sin(x)')
در مورد دستور inline به طور کامل توضیح داده خواهد شد. دستور fzero برای اجرا در اولین آرگومان به تابع نیاز دارد.
در دستور fzero در اولین آرگومان یک تابع وجود دارد و در دومین آرگومان عددی که نزدیک یکی از ریشه های معادله است. در نتیجه برای بدست آوردن ریشه های دقیق ابتدا باید مکان تقریبی ریشه ها را بدست آوریم. این کار را می توان از طریق ترسیم معادله انجام داد. در معادله بالا برای بدست آوردن جواب معادله در نزدیکی 0.5 دستور زیر را بنویسید.
کد:
>> fzero(inline('exp(-x) - sin(x)'), 0.5)
برای یافتن ریشه بعدی , باید جواب را در نزدیکی عدد 3 جست و جو کنید.


بردار ها

یک بردار دنباله ای از اعداد است. در متلب می توانیم برداری به طول دلخواه با نوشتن مجموعه ای از اعداد با فاصله در داخل براکت ایجاد کنیم. برای مثال

کد:
>> Z = [2,4,6,8]

و

کد:
>> Y = [4 -3 5 -2 8 1]

فرض کنید که می خواهید برداری از اعداد صحیح 1 تا 9 ایجاد کنیم. در زیر روش این کار بدون تایپ اعداد را نشان می دهد.

کد:
>> X = 1:9

در دستور بالا مقدار استپ 1 بود. حالا اگر بخواهیم به فرض استپ را 2 قرار دهیم باید یک آرگومان جدید به آن اضافه کنیم.

کد:
>> X = 0:2:10

نمو همچنین میتواند کسری و یا منفی باشد. برای مثال 0:0.1:2 و ( 0 : منفی 1 : 10 ) .
آرایه های بردار X میتواند به صورت (X(1 و (X(2 و ... از بردار استخراج شود. برای مثال

کد:
>> X(3)

برای تغییر بردار X از یک بردار سطری به یک بردار ستونی , بعد از X علامت پریم (') قرار دهید.

کد:
>> X'

می توانیم روی مولفه های بردار عملیات ریاضی انجام دهیم. برای مثال همه ی آرایه های بردار X را به توان 2 می رسانیم.

کد:
>> X.^2

نقطه بکار برده شده در دستور بالا خیلی اهمیت دارد. این دستور کاری می کند که اعداد بردار X درایه به درایه و جدا گانه مربع شوند. اگر تایپ می کردیم X^2 به متلب دستور می داد که از ضرب ماتریسی استفاده کند و بردار X را در خودش ضرب می کرد و در این مورد پیام eror می داد. (در ادامه در مورد ماتریس ها بطور کامل بحث می شود. )
به طریق مشابه برای ضرب و تقسیم درایه به درایه باید به ترتیب تایپ کنید *. و /. . فقط به یاد داشته باشید که طول بردار ها باید مساوی باشد. برای مثال برای ضرب کردن مولفه های بردار X با مولفه های نظیر از بردار Y تایپ کنید.

کد:
>> X.*Y

بیشتر دستورات در متلب به صورت مولفه به مولفه به ورودی اعمال می شوند. برای مثال در عملیات جمع و تفریق نقطه نمی گذاریم. مثلا می توانیم تایپ کنیم (exp(X تا نمایی همه اعداد بردار X را بدست آوریم.

ماتریس ها

ماتریس یک آرایه مستطیلی از اعداد است . بردار های سطری و ستونی که در بالا روی آنها بحث شد نمونه ای از ماتریس بودند.ماتریس 3×4 زیر را ملاحظه کنید.

[تصویر:  5.JPG]

این ماتریس می تواند در متلب با دستور زیر وارد شود.

کد:
>> A = [1, 2, 3, 4; 5, 6, 7, 8; 9, 10, 11, 12]

توجه کنید که مولفه های هر سطر با کاما و سطر ها توسط سمی کالن از هم جدا شده اند.
اگر بین مولفه های هر سطر کاما نگذاریم هم فرقی نمی کند. ولی فاصله نباید فراموش شود.
اگر دو ماتریس A و B دارای سایز برابر باشند , جمع مولفه با مولفه آنها با نوشتن A+B بدست می آید. همچنین می توان یک عدد اسکالر را به تک تک مولفه های یک ماتریس اضافه کرد. به طریق مشابه A-B تفاضل دو ماتریس A و B را به دست می دهد. همچنین A-c یک عدد اسکالر را از همه مولفه های ماتریس A کم می کند.
اگر A قابلیت ضرب ماتریسی در B را داشته باشد ( یعنی اگر A ماتریسی n×m و B ماتریسی m×l باشد .) سپس حاصل ضرب ماتریسی A*B یک ماتریس n×l خواهد بود. یاد آوری می کنم که مولفه ماتریس A*B در i مین سطر و j مین ستون برابر است با مجموع حاصل ضرب مولفه های سطر i ام از A در ستون j ام از B . به عبارتی دیگر

[تصویر:  6.JPG]

ضرب عدد اسکالر c در بردار A به صورت c*A نوشته می شود و دستور 'A ماتریس ترانهاده مزدوج A را به دست می دهد.
ضرب ماتریس 3×4 A در بردار 'Z که 4×1 است می تواند مثال خوبی باشد.

کد:
>> A*Z'

که حاصل دستور بالا , یک ماتریس ستونی 3×1 است.
متلب دستورات دیگری نیز در این زمینه دارد که در فصل های بعدی به آن اشاره خواهد شد.

متوقف کردن خروجی

تایپ علامت سمی کالن ( ; ) در انتهای خط ورودی , مانع چاپ خروجی خواهد شد. زمانی که بخواهیم بردار یا ماتریس بزرگی تعریف کنیم از سمی کالن استفاده می کنیم. برای مثال بردار (x = -1:0.1:2) چاپ نشود بهتر است. همچنین در هر جایی که نیازی به چاپ شدن خروجی نباشد می توانیم از سمی کالن استفاده کنیم.

توابع

در متلب هم می توانید از توابع پیش فرض و هم از توابع ساخت خودتان استفاده کنید.

توابع پیش فرض
متلب تعداد زیادی تابع غیر قابل تغییر دارد. از جمله آنها توابع sqrt و sin و cos و tan و log و exp و atan (برای arctan) همچنین تعدادی تابع ریاضی خاص مثل gamma و erf و besselj. متلب همچنین تعداد زیادی ثابت پیش فرض دارد. از جمله pi (عدد پی) و i (رادیکال منفی یک) و inf (∞). در زیر چند مثال می زنیم

کد:
>> log(exp(3))

تابع log لگاریتم طبیعی می گیرد و در ریاضیات با نماد " ln " نشان داده می شود.

کد:
>> sin(2*pi/3)

در بالا برای گرفتن جواب دقیق باید از آرگومان سمبلیک استفاده کنید

کد:
>> sin(sym('2*pi/3'))

توابع تعریف شده توسط کاربر
در این بخش نشان می دهیم که چگونه می توان از تابع inline برای تعریف یک تابع استفاده کرد.
به نحوه تعریف تابع چند جمله ای (f(x توجه کنید

کد:
>> f = inline('x^2 + x + 1', 'x')

آرگومان دوم بکار برده شده در inline , متغیر مستقل را مشخص می کند. می توانیم این قسمت را حذف کنیم. متلب از طریق قوانین متغیر مستقل حدس می زند که چه باید باشد. در ادامه در این مورد بیشتر بحث خواهد شد.
وقتی که تابع را تعریف کردیم , میتوانیم به ازای ورودی های مختلف از آن خروجی بگیریم.

کد:
>> f(4)

تابع تعریف شده در بالا فقط می تواند به عدد اسکالر اعمال شود. برای این که بتواند برای بردار هم به کار رود از تابع vectorize متلب استفاده می کنیم.
تابع زیر تابع برداری شده معادله f است.

کد:
>> f1 = inline(vectorize('x^2 + x + 1'), 'x')

توجه کنید که ^ باید با ^. جایگزین می شد. حالا می توانیم به f1 ورودی بردار دهیم.

کد:
>> f1(1:5)

می توانیم f1 را از طریق بخش گرافیک متلب از راه های مختلف رسم کنیم. این بخش را با اشاره به این نکته که می توان تابعی با چند متغیر تعریف کرد به پایان می رسانیم.

کد:
>> g = inline('u^2 + v^2', 'u', 'v')

گرافیک

در این بخش دو دستور رسم مقدماتی متلب را تعریف می کنیم و نحوه استفاده از آنها را توضیح خواهیم داد.

رسم نمودار با استفاده از ezplot

ساده ترین راه رسم یک تابع تک متغیره استفاده از ezplot است. برای رسم معادله "x2+x+1" در بازه 2- تا 2 داریم

کد:
>> ezplot('x^2 + x + 1', [-2 2])

نمودار در پنجره جدیدی به نام " Figure 1" نشان داده می شود.
قابل ذکر است که ezplot هم آرگومان رشته ای (مانند بالا) و هم عبارت سمبلیک را قبول می کند.
نمودار گرفته شده در مثال قبل را از طریق دستور زیر نیز می توان مشاهده کرد.
کد:
>> syms x
>> ezplot(x^2 + x + 1, [-2 2])

[تصویر:  2.JPG]

نمودار ها می توانند گمراه کننده باشند اگر به محور ها توجه نکنیم.
برای مثال نمودار "x2+x+3" نیز دقیقا مانند نمودار بالا است با این تفاوت که اعداد روی محور فرق می کند.

تغییر دادن نمودار

به چند طریق می توانیم نمودار ها را تغییر دهیم. برای تغییر عنوان بالای نمودار قبلی در زیر دستورات قبلی تایپ کنید

کد:
>> title 'A Parabola'

و اجرا کنید. در نتیجه عبارت بالای نمودار تغییر می کند.
می توانیم روی محور افقی نمودار توسط اضافه کردن دستور xlabel به دستورات قبلی برچسب ایجاد کنیم. برای این کار باید جلوی xlabel اسم دل خواه خود را قرار دهیم. برای محور عمودی نیز از دستور ylabel استفاده کنید. به این نکته توجه کنید که عبارت مقابل title حتما باید با علامت آپوستروف بسته شود ولی برای گذاشتن برچسب محور ها نیازی نیست.
همچنین می توانیم محدوده محور ها را به دلخواه تنظیم کنیم. مثلا در مثال فوق می توانیم محدوده نمایش روی محور عمودی را از 1 تا 4 محدود کنیم.

کد:
>> axis([-2 2 1 4])

دو عدد اول محدوده محور افقی را مشخص می کنند. در دستور بالا محدوده هر دو محور باید مشخص شود.
در فصل پنجم توضیحات بیشتری در این زمینه داده می شود.

رسم نمودار با استفاده از plot
دستور plot به داده های برداری عددی اعمال می شود. ساده ترین ترکیب این تابع (plot(X,Y است که در آن X و Y بردار هایی با طول یکسان هستند. برای مثال
کد:
>> X = [1 2 3];
>> Y = [4 6 5];
>> plot(X, Y)
این دستور نقطه (1,4) را با یک خط به نقطه (2,6) وصل می کند و به همین صورت برای نقطه بعدی.

[تصویر:  3.JPG]

برای ترسیم نمودار "X2+X+1" در بازه -2 تا 2 ابتدا باید برداری از مقادیر X تعریف کنیم . تعداد نقاط تعریف شده باید به حدی باشد که نمودار شکسته شکسته نباشد. برای مثال زیر از استپ 0.1 استفاده می کنیم.
کد:
>> X = -2:0.1:2;
>> plot(X, X.^2 + X + 1)

[تصویر:  4.JPG]

توجه کنید که برای جلو گیری از چاپ شدن 41 مولفه بردار X از سمی کالن استفاده کردیم.
همچنین توجه کنید که دستور زیر همان نتیجه را خواهد داشت. زیرا قبلا تابع f1 را تعریف کرده ایم.
کد:
>> plot(X, f1(X))
در فصل پنجم دستورات گرافیکی بیشتری را توضیح خواهیم داد.

رسم منحنی های چندگانه

وقتی یک نمودار جدید را رسم می کنیم , متلب نمودار قدیمی را پاک می کند و به جای آن نمودار جدید را قرار می دهد. اگر بخواهیم دو یا تعداد بیشتری نمودار را روی هم رسم کنیم از دستور hold on استفاده می کنیم. این عبارت به متلب فرمان می دهد که نمودار قبلی را نگه دارد و نمودار های جدیدی که رسم می شود بر روی همان نمودار قدیمی رسم کند. این حالت تا وقتی که دستور hold off را وارد کنیم ادامه می یابد. در اینجا مثالی از به کار گیری تابع ezplot می آوریم.
کد:
>> ezplot('exp(-x)', [0 10])
>> hold on
>> ezplot('sin(x)', [0 10])
>> hold off
>> title 'exp(-x) and sin(x)'
نتیجه قبلا در همین بخش نمایش داده شده بود. دستورات hold on و hold off با همه دستورات گرافیکی دیگر نیز به کار می رود.
با دستور plot می توان مستقیما چند نمودار را روی هم رسم کرد.
کد:
>> X = 0:0.1:10;
>> plot(X, exp(-X), X, sin(X))
فقط با این تفاوت که رنگ نمودار ها را متفاوت انتخاب می کند.

توبه گرگ مرگه!
(آخرین ویرایش در این ارسال: ۲۳-شهریور-۱۳۸۸, ۰۰:۵۷:۱۱، توسط aminsotudeh.)
۲۲-شهریور-۱۳۸۸, ۲۲:۵۴:۴۲
ارسال‌ها
پاسخ
تشکر شده توسط : t3r!p3000, lord_viper, mvig, hamed_Arfaee, mahdi20, h0x00i, fabienmartin, pari70, omid_phoenix, orange signal
aminsotudeh غایب
كاربر دو ستاره
**

ارسال‌ها: 179
موضوع‌ها: 19
تاریخ عضویت: اردیبهشت ۱۳۸۶

تشکرها : 1357
( 1331 تشکر در 343 ارسال )
ارسال: #7
RE: آموزش MATLAB
فصل دوم رو pdf کردم پیوست کردم. قابلیت کپی رو آزاد گذاشتم تا مجبور نباشید همه دستورات رو تایپ کنید.

روی فصل سوم هم دارم کار می کنم. هر وقت آماده شد می ذارم. راستش فصل سوم بیشترش متنه و ترجمه کردنش یک کم سخت تره.


فایل‌(های) پیوست شده
.pdf   MATLAB---training---2.pdf (اندازه: 187.5 KB / تعداد دفعات دریافت: 640)

توبه گرگ مرگه!
۲۶-شهریور-۱۳۸۸, ۰۲:۲۴:۲۶
ارسال‌ها
پاسخ
تشکر شده توسط : mjbbest, fabienmartin, pari70, omid_phoenix, orange signal
aminsotudeh غایب
كاربر دو ستاره
**

ارسال‌ها: 179
موضوع‌ها: 19
تاریخ عضویت: اردیبهشت ۱۳۸۶

تشکرها : 1357
( 1331 تشکر در 343 ارسال )
ارسال: #8
RE: آموزش MATLAB
فصل 3

تعامل با متلب

در این فصل به توصیف روش موثری برای کار با متلب و تهیه و ارائه نتایج خواهیم پرداخت. به طور خاص به برخی از ویژگی های رابط کاربری متلب و نحوه استفاده از scrip M-file و function M-file می پردازیم.همچنین چند راهنمایی ساده برای اشکال زدایی از M-file ارائه خواهیم کرد.

رابط متلب

Desktop

به طور پیش فرض رابط متلب دارای 4 قسمت است. Command window در سمت راست و current directory و workspace در سمت چپ بالا که با تب از هم جدا شده اند. در سمت چپ پایین command history قرار دارد. همچنین در سمت چپ پایین دکمه start قرار دارد که مانند محیط ویندوز از طریق آن می توانید به shortcut های متلب دسترسی داشته باشید. از طریق مسیر desktop > desktop layout می توانید شکل های مختلف چینش پنجره ها را امتحان کنید. همچنین می توانید به طور دستی پنجره ها را مرتب کنید.
Command window جایی است که در آن دستورات را تایپ می کنید تا متلب بتواند نتایج را محاسبه , ارزیابی و یا به صورت نمودار رسم کند.
دستوراتی که در command window اجرا می کنیم در command history بایگانی می شود. از مزایای این بخش می توان به دو مورد اشاره کرد. 1- یک دید کلی از دستوراتی که قبلا اجرا کرده اید بدست می آورید. 2- زمان اجرای دستورات را نیز ذخیره می کند.
می توانید در آن روی هر دستور کلیک راست کرده , گزینه کپی را انتخاب , در command window قرار داده و اجرا کنید. یا با دبل کلیک روی دستور آن را اجرا کنید. به طور نمونه برای اجرای دستوری به ماتریسی نیاز دارید که از طریق محاسبات قبلی بدست آمده و اکنون از حافظه پاک شده است. می توانید آن دستور را سریعا از طریق command history اجرا کنید تا داده مورد نیاز در workspace ذخیره شود. البته نباید فراموش کرد که هنگام اتمام کار متغییر ها باید ذخیره شوند.
در مورد workspace در فصل 2 توضیحاتی داده شد که توصیه می شود آنرا مرور کنید. تنها نکته ای که گفته نشد این است که می توانید با دبل کلیک کردن بر روی متغیر های تعریف شده , تک تک مولفه های آنها را ویرایش کنید. همچنین اگر بر روی متغیر ها کلیک راست کنید می توانید هر متغیر را به شکل های مختلف رسم کنید. از این طریق می توانید با توابع گرافیکی بیشتری آشنا شوید. سرگرمی جالبی است البته در مورد این توابع در فصل های بعد به طور کامل بحث می شود.
فایل های جدیدی که در متلب ساخته می شوند در current directory ذخیره می شوند.
ممکن است بخواهیم آدرس curret drectoy را تغییر دهیم یا فایلی را از آدرسی دیگر اجرا کنیم. برای ایجاد یک current directry جدید چند روش وجود دارد. می توانید از تطریق پنجره current directory مانند پنجره های محیط ویندوز عمل کنید. می توانید در قسمت toolbar در قسمت curret directory روی دکمه "..." کلیک کنید و آدرس دهید. همچنین می توانید دستور مربوطه را در command window تایپ کنید که ضرورتی به گفتن دستور نیست. Current directory جایی است که می توانید فایل ها را هم اجرا و هم تغییر دهید. ولی فرضا اگر بخواهیم فایلی را فقط اجرا کنیم باید آدرس آن را add کنیم.
برای add کردن یک directory ازدستور زیر استفاده کنید.من در درایو c پوشه ای با نام matlab درست کردم و آدرس آن را add کردم.

کد:
>> addpath C:\matlab

فقط نباید در اسامی پوشه های تو در تو فاصله وجود داشته باشد.
می توانید با اجرای دستور editpath , مسیر هایی که متلب سرچ می کند بیابیم. در پنجره باز شده می توانیم پنجره های دلخواه خود را ذخیره یا بعضی از مسیر ها را حذف کنیم. فقط نباید مسیرهای پیشفرض متلب را حذف کنیم. زیرا باعث ایجاد مشکل در اجرای توابع پیش فرض خواهد شد. البته یکی از راه های افزایش سرعت متلب حذف کردن toolbox هایی است که نیاز ندارید.

بکارگیری command window

در فصل های 1 و 2 درباره چگونگی وارد کردن دستورات در command window متلب شرح دادیم.اگر بخواهیم پاسخ عبارت ریاضی sin(0.1)/0.1 و sin(0.01)/0.01 و sin(0.001)/0.001 را بدست آوریم دستورات زیر را تایپ کنید.

کد:
>> x = [0.1, 0.01, 0.001];
>> y = sin(x)./x

که بعد از اتمام محاسبات خواهید دید که دقت نتایج مورد انتظار شما نیست. نتیجه بالا تا پنج رقم اعشار را نشان می دهد نه پانزده رقم. برای مشاهده نتایج با 15 رقم اعشار ابتدای دستورات بالا باید تایپ کنیم format long. اگر دستورتان دارای خطا بود به جای تایپ دوباره دستور می توانید از command history دستور را دوباره وارد کنید و تغییرات لازم را انجام دهید. همچنین برای سرعت بیشتر , کلید های up و down دستورات اجرا شده قبلی را نشان می دهند که می توانید آنها را اصلاح کنید.

M-file

برای مسائل پیچیده ابزار های command window و command history ناکافی هستند. راه حل بهتر آن است که یک M-file ایجاد کنیم. دو نوع M-file وجود دارد. Script M-file و function M-file که در ادامه به نحوه استفاده از هر دو نوع M-file توضیح خواهیم داد.
M-file ها فایل های text معمولی حاوی دستورات متلب هستند.می توانید با استفاده از نرم افزار های کار با متن مانند word و wordpad و notepad و ... M-file ها را ایجاد و یا ویرایش کنید. همین طور می توانید از ادیتور خود متلب برای این کار استفاده کنید که امکانات بیشتری در اختیارتان قرار می دهد.برای ایجاد یک M-file می توانید در command window تایپ کنید edit یا این که از طریق file < new < M-file آنرا ایجاد کنید.

Script M-file

اکنون نحوه ایجاد یک script M-file برای حل مسئله ریاضی ای که قبلا توضیح داده شد را نشان می دهیم.
ابتدا دستور زیر را در M-file تایپ کنید و آن را با نام task1.m در current directory خود ذخیره کنید.

کد:
format long
x = [0.1, 0.01, 0.001];
y = sin(x)./x

برای اجرای این فایل باید در command window تایپ کنید task1. اگر با استفاده از نرم افزاری غیر از متلب M-file را ایجاد کردید یادتان باشد که فرمت فایل را m. قرار دهید. اگر M-file را در پنجره ای غیر از command window ذخیره کردید و در هنگام اجرا اخطار گرفتید به توضیحات مربوط به current directory در صفحات قبل مراجعه کنید. در ورژن های جدید متلب از همان پنجره ادیتور می توانید دستورات را اجرا کنید. در پنجره toolbars یک دکمه سبز رنگ مثلثی وجود دارد که در صورت کلیک کردن بر روی آن ابتدا برای save کردن آدرس می خواهد و سپس آن را اجرا می کند. در نتیجه خروجی در command window چاپ می شود. حالا می توانید M-file خود را ویرایش کنید. برای مثال اگر بخواهید y را به ازای x=0.0001 بدست آورید تغییرات زیر نیاز است.

کد:
format long
x = [0.1, 0.01, 0.001, 0.0001];
y = sin(x)./x

سپس با نوشتن task1 دوباره آن را اجرا کنید. به این نکته توجه کنید که task1 دقیقا مانند یک دستور است و از این پس متلب اعداد را به صورت format long نشان خواهد داد. که برای تغییر آن باید دوباره تایپ کنید format short تا به حالت اول برگردد.

Echo کردن دستورات

همانطور که می بینید , دستورات M-file در command window چاپ نمی شود. برای چاپ شدن دستورات و خروجی به طور همزمان از echo استفاده کنید

کد:
echo on
format long
x = [0.1, 0.01, 0.001];
y = sin(x)./x
echo off

اضافه کردن comment

در متلب می توانیم توضیحاتی را بین دستورات قرار دهیم. این دستورات می توانند محاسبات را توضیح دهند و حتی نتیجه را تفسیر کنند. هر خطی در script M-file که با علامت " % " شروع شود یک comment است و متلب با آن به عنوان دستور رفتار نمی کند. در زیر فایل task1.m را با اضافه کردن comment ویرایش کرده ایم.

کد:
echo on
% Turn on 15 digit display
format long
x = [0.1, 0.01, 0.001];
y = sin(x)./x
% These values illustrate the fact that the limit of
% sin(x)/x as x approaches 0 is 1.
echo off

زمانی که می خواهید به script M-file یک comment اضافه کنید به یاد داشته باشید که در ابتدای سطر علامت % را قرار دهید. اگر دستورات را echo کنید در command window توضیحات نیز ظاهر می شوند.

ساختار script M-file

برای آنکه نتایج script M-file ها قابل باز تولید باشد و نتایج همه جا یکسان باشد و متغیر های تعریف شده قبلی روی نتیجه تاثیر نگذارند و پنجره های گرافیکی قبلی در نتیجه فعلی تاثیر نگذارند نکات زیر را در نظر بگیرید.
می توانید در ابتدای script تایپ کنید clear all تا مطمئن شوید که متغیر های تعریف شده قبلی روی نتایج بی تاثیرند. همچنین می توانیم دستور close all را در ابتدای script M-file هایی قرار دهیم که نمودار تولید می کنند. این دستور تمام پنجره های گرافیکی قبلی را می بندد. در زیر مثالمان را با توضیحات کامل و واضح ویرایش کرده ایم.

کد:
% Remove old variable definitions
clear all
% Remove old graphics windows
close all
% Display the command lines in the command window
echo on
% Turn on 15 digit display
format long
% Define the vector of values of the independent variable
x = [0.1, 0.01, 0.001];
% Compute the desired values
y = sin(x)./x
% These values illustrate the fact that the limit of
% sin(x)/x as x approaches 0 is equal to 1.
echo off

گاهی اوقات چه در command window و چه در M-file دستور به حدی طولانی است که در یک سطر جا نمی شود. در اینجا می توانیم در انتهای خط با یک فاصله از دستورات خط تایپ کنیم "..." و در ادامه Enter بزنیم. حال می توانید ادامه خط را در خط پایین بنویسید. با این کار در خط بعدی علامت << نمی آید.

Function M-file

گاهی اوقات نیاز داریم که فرایندی را برای تعداد زیادی ورودی به یک پارامتر یا متغیر تکرار کنیم. همان طور که در فصل دو گفتیم , می توانیم به یک تابع پیش فرض متلب چندین ورودی دهیم و خروجی بگیریم. همچنین گفته شد که می توان با استفاده از دستور inline تابع مورد نظر خود را ساخت. استفاده از M-file در بسیاری از مواقع برای ساخت توابع راحت تر از استفاده از inline است. اجازه بدهید که به مثال بالا برگردیم. در تابعی که در زیر می سازیم sin(x)/x را با چند مقدار از (x=10^ (-b برای مقادیر مختلف ماتریس b محاسبه می کنیم. دستورات زیر را در M-file با نام sinelimit در current directory خود save کنید که این مسئله را حل می کند. توجه کنید که نام آن را فقط باید sinelimit بگذارید

کد:
function y = sinelimit(c)
% SINELIMIT computes sin(x)/x for x = 10^(-b),
% where b = 1, ..., c.
format long
b = 1:c;
x = 10.^(-b);
y = (sin(x)./x)';

function M-file مانند یک script M-file یک فایل متنی ساده است. اولین خط این فایل حاوی عبارت تابع است که فایل را به عنوان function M-file مشخص می کند. خط اول نام function و آرگومان های ورودی و خروجی را مشخص می کند. در این مثال نام تابع sinelimit است. به این نکته بسیار توجه کنید که نام function باید با نام M-file یکی باشد. وگرنه جواب نمی دهد. تابع sinelimit یک ورودی به نام c دارد. b یک ماتریس سطری از 1 تا c است. وقتی c را مشخص می کنیم ماتریس b محاسبه می شود و مولفه های این ماتریس نقش x را در sin(x)/x بازی می کنند و خروجی را نظیر به نظیر مولفه های ماتریس b بیرون می دهد. علامت پریم بردار خروجی را ستونی می کند.
همان طور که قبلا اشاره شد , قرار گرفتن سمی کالن در انتهای دستور موجب عدم نمایش آن در command window می شود. ولی به دلیل M-file بودن آن , اجرایش به طور خودکار مقدار متغیر خروجی را نشان می دهد. نکته عجیب این است که در صورت نگذاشتن سمی کالن خروجی دو بار چاپ می شود.
همچنین به این نکته توجه کنید که متغیر های بکار برده شده در function مثل x و b و y در sinelimit متغیر های محلی هستند.یعنی با این که این متغیر ها در M-file تعریف می شوند, هیچ ربطی به متغیر های همنام خود در workspace متلب ندارد. و متلب مقادیر آنها را بعد از محاسبه نگه نمی دارد. در فصل 4 توضیحات مفصل تری در این رابطه داده می شود.
در زیر مثالی از نحوه استفاده از تابع sinelimit آورده شده است.

کد:
>> sinelimit(5)

Loop یا حلقه

یک حلقه یا یک loop مشخص می کند که دستور یا مجموعه ای از دستورات باید چندین بار تکرار شوند. در اینجا مثال ساده ای از محاسبه و نمایش عدد !10 ( 1×2×3×4×5×6×7×8×9×10 ) آورده شده است.

کد:
f = 1;
for n = 2:10
f = f*n;
end
f

یک loop با عبارت for آغاز و با عبارت end پایان می یابد. عملیات بین این دو عبارت 9 بار تکرار می شود. قرار دادن سمی کالن در بخش میانی برای جلوگیری از چاپ f در عملیات میان حلقه ای است. اگر سمی کالن نگذاریم به ترتیب مقادیر !2 و !3 و ... چاپ می شود. اگر این دستورات را در command window تایپ کنید بعد از عبارت for در خط بعد علامت << را نخواهیم دید. اما بعد از گذاشتن end دوباره << ظاهر می شود. اگر این دستور را در یک script M-file می نویسید و می خواهید آن را echo کنید باید echo off را قبل از end قرار دهید. در غیر این صورت دستورات بین for و end به تعداد مولفه های بردار n چاپ می شود.

ارائه نتایج

گاهی اوقات ممکن است بخواهید نتایج script M-file را به دیگران نشان دهید. بدین منظور می توانید از یک M-book استفاده کنید که در فصل 6 توضیح داده شده است.یا می توانید نتایج خود را در نرم افزار های دیگری مانند word اجرا کنید و یا این که نتایج را به فرمت html تبدیل کنید که در فصل 10 بحث شده است.
اگر تعداد نتایج خروجی زیاد باشد می توانید در M-file خود بعد از هر خروجی دستور pause را وارد کنید.pause باید بعد از توضیحات مهم , نمودار ها و نقاط بحرانی script که نتایج عددی می دهد بکار برده شود. در این صورت بیننده نتایج این امکان را می یابد که نتایج را ببیند و بفهمد. وقتی که متلب به دستور pause می رسد محاسبه را متوقف می کند و منتظر زدن کلید می ماند. کلید را کمی نگه دارید!

فایلهای diary ( یاد آور)

در اینجا راه سریعی را برای ذخیره ی متن M-file در یک فایل text نشاان می دهیم تا در آینده بتوانید دستورات را بفهمید.

کد:
delete task1.txt
diary task1.txt
% Display the command lines in the command window
echo on
% Remove old variable definitions
clear all
% Remove old graphics windows
close all
% Turn on 15 digit display
format long
% Define the vector of values of the independent variable
x = [0.1, 0.01, 0.001];
% Compute the desired values
y = sin(x)./x
% These values illustrate the fact that the limit of
% sin(x)/x as x approaches 0 is equal to 1.
echo off
diary off

با این کار همزمان با اجرای برنامه بک کپی از دستورات آن گرفته می شود. دستور diary باعث می شود که همه دستورات به جز خود دستور diary در یک فایل متنی ذخیره شود.
با استفاده از delete در ابتدای M-file مطمئن می شوید که فایل دیگری با آن نام در پوشه وجود ندارد. اگر delete را قرار ندهید و فایلی با آن نام در پوشه موجود باشد متن دستورات در انتهای آن فایل ذخیره خواهد شد.

رسم نمودار

همان طور که در فصل 1 و 2 ذکر شد نمودار ها در پنجره های مجزایی نمایش داده می شوند.
در زیرمثالی از رسم نمودار ارائه می دهیم.
در این مثال می خواهیم نمودار توابع (sin(x و (sin(2x و (sin(3x را در یک صفحه رسم کنیم. در زیر برای حل این مسئله یک script M-file ارائه شده است.

کد:
echo on
% Define the x values.
x = 2*pi*(0:0.01:1);
% Remove old graphics, and get ready for several new ones.
close all; axes; hold on
% Run a loop to plot three sine curves.
for c = 1:3
plot(x, sin(c*x))
echo off
end
echo on
hold off
% Put a title on the figure.
title('Several Sine Curves')
pause



[تصویر:  5.jpg]


بیایید دستورات بالا را بررسی کنیم. ابتدا مقادیر محور x را تعریف کردیم. دستور close all همه پنجره های گرافیکی باز شده از قبل را می بندد. دستور axes یک پنجره گرافیکی تازه و خالی ایجاد می کند. و دستور hold on به متلب اجازه می دهد که چندمنحنی را روی یک صفحه رسم کند. خطوط بین for و end یک حلقه for می سازد. دستور plot مهمترین قسمت این حلقه است که منحنی های سینوسی را رسم می کند. اگر دقت کنید یک بار در ابتدا echo on گذاشتیم و سپس قبل از end دستور echo off را وارد کردیم. دلیل این کار این بود که حلقه for فقط یک بار در command window چاپ شود. سپس بعد از اتمام حلقه دوباره echo on کردیم. دستور hold off به متلب فرمان می دهد که دستورات گرافیکی بعدی را در صفحه جدیدی رسم کند. در انتها بعد از گذاشتن عنوان برای نمودار , دستور pause را وارد می کنیم تا این که بیننده بتواند قبل از نمایش تصویر , دستورات را ببیند و بفهمد.

چاپ کردن دستورات به صورت ریاضی

اگر یک فرمول ریاضی پیچیده را به صورت دستور بنویسیم , به زحمت می توان از روی آن فهمید که فرمول واقعا چه کار می کند. برای چاپ فرمول به صورت ریاضی در command window از تابع pretty استفاده می کنیم. به مثال زیر توجه کنید.

کد:
syms Rrp Xlrp Xm s Rth Xth Vth
Isabs=(((((Rrp./s).^2)+((Xlrp+Xm)^2)).^(0.5))./(((Rth+(Rrp./s).^2)+((Xth+Xlrp)^2)).^(0.5)))*(Vth/Xm)
pretty(Isabs)

که در نتیجه این فرمول را به صورت زیر در command window چاپ می کند.
[تصویر:  6.jpg]

دستور input

اگردر دستورات متلب بخواهیم این امکان را فراهم کنیم که کاربر بتواند به ازای ورودی های مختلف خروجی دریافت کند از دستور زیر استفاده می کنیم

کد:
var = input('Input var here: ')

سپس متلب در command window چاپ می کند :

کد:
Input var here:

و متلب منتظر می ماند تا مقدار متغیر var را وارد کنیم . البته باید کاربر را راهنمایی کنید که چه نوع ورودی ای مورد نیاز است.

توبه گرگ مرگه!
(آخرین ویرایش در این ارسال: ۰۴-مهر-۱۳۸۸, ۰۲:۳۴:۳۲، توسط aminsotudeh.)
۰۴-مهر-۱۳۸۸, ۰۱:۰۴:۵۹
ارسال‌ها
پاسخ
تشکر شده توسط : mvig, hamed_Arfaee, mahdi20, mjbbest, 871431011, pari70, omid_phoenix
aminsotudeh غایب
كاربر دو ستاره
**

ارسال‌ها: 179
موضوع‌ها: 19
تاریخ عضویت: اردیبهشت ۱۳۸۶

تشکرها : 1357
( 1331 تشکر در 343 ارسال )
ارسال: #9
RE: آموزش MATLAB













اگر آموزشی که تا اینجا گذاشته شده است را مطالعه کردید , جواب سوالات زیر را برایم mail کنید.


فایل‌(های) پیوست شده
.pdf   practice-- set--A---( algebra and arithmetic).pdf (اندازه: 32.85 KB / تعداد دفعات دریافت: 344)

توبه گرگ مرگه!
۰۴-مهر-۱۳۸۸, ۰۲:۳۸:۲۷
ارسال‌ها
پاسخ
تشکر شده توسط : mvig, mahdi20, 871431011, pari70, iyevaneeh
t3r!p3000 آفلاین
         
*****

ارسال‌ها: 5,050
موضوع‌ها: 83
تاریخ عضویت: اردیبهشت ۱۳۸۵

تشکرها : 34447
( 17423 تشکر در 5116 ارسال )
ارسال: #10
RE: آموزش MATLAB
مهندس مشكل ما اينجاست كه صورت سوال رو نمي تونستم بخونم !

ولي سطح سوالات معمول مي شد ساده هستش و منم مي تونم حلشون كنم !

ممنون مهندس كه امتحان زبان و متلب رو با هم مي گيري !!!!
۰۴-مهر-۱۳۸۸, ۰۴:۰۱:۵۹
ارسال‌ها
پاسخ
تشکر شده توسط : aminsotudeh, helma
aminsotudeh غایب
كاربر دو ستاره
**

ارسال‌ها: 179
موضوع‌ها: 19
تاریخ عضویت: اردیبهشت ۱۳۸۶

تشکرها : 1357
( 1331 تشکر در 343 ارسال )
ارسال: #11
RE: آموزش MATLAB
سلام
اون سوال ها رو به دید امتحان نگاه نکنین
من فقط می خواستم بدونم متلب چقدر تو این سایت طرفدار داره که ظاهرا فقط یک نفر هست. Biggrin
اون سوال ها رو خیلی با عجله گذاشتم و یادم رفت که بایدترجمه بشه. امروز فردا درستش می کنم.

توبه گرگ مرگه!
۰۵-مهر-۱۳۸۸, ۰۱:۱۱:۴۷
ارسال‌ها
پاسخ
تشکر شده توسط : sasparatan, saman000


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  [جداسازی] برنامه نویسی در MATLAB helma 3 3,152 ۱۴-فروردین-۱۳۹۶, ۲۳:۴۷:۱۰
آخرین ارسال: helma
  [فوری] برنامه نویسی در MATLAB Leila_Abr 0 2,680 ۲۲-آبان-۱۳۹۵, ۱۳:۵۳:۲۰
آخرین ارسال: Leila_Abr
  برنامه نویسی در matlab reza433 2 4,192 ۰۱-بهمن-۱۳۹۴, ۱۴:۵۹:۳۱
آخرین ارسال: sahra_akbari
  کمک در برنامه نویسی با متلب (Matlab)-- داده های تست و Train lyceum 11 21,419 ۲۹-فروردین-۱۳۹۴, ۱۲:۵۴:۳۴
آخرین ارسال: hadirajabzad
  آموزش سیمولینک در MATLAB aminsotudeh 1 32,432 ۱۱-آذر-۱۳۹۳, ۲۱:۱۹:۲۱
آخرین ارسال: orange signal
  سوالات نرم افزار matlab akbar8 8 6,661 ۱۴-آبان-۱۳۹۳, ۱۴:۲۳:۳۶
آخرین ارسال: dooook
  MATLAB aminsotudeh 25 21,881 ۱۱-مرداد-۱۳۹۳, ۱۹:۳۲:۲۴
آخرین ارسال: atefe sh
  آموزش GUI در MATLAB aminsotudeh 3 17,119 ۰۴-اسفند-۱۳۹۲, ۲۱:۳۷:۳۸
آخرین ارسال: شاللو
  رسم نمودار محورهای مختصات در MATLAB سیدعلی 1 5,091 ۱۶-مهر-۱۳۹۲, ۱۹:۱۰:۰۱
آخرین ارسال: babyy
  رسم نمودار با matlab محمد حسینی 1 8,420 ۲۹-بهمن-۱۳۸۸, ۱۲:۱۲:۵۲
آخرین ارسال: t3r!p3000

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 5 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS