یکی از پرکاربردترین زبانهای برنامه نویسی برای رسم نمودارها و توابع ریاضی، بدون شک متلب میباشد. در این قسمت از دوره آموزش متلب فنولوژی، به طور کامل در مورد رسم نمودار در متلب صحبت میکنیم. با ما همراه باشید.
مراحل رسم نمودار در متلب
برای ترسیم نمودار یک تابع، باید مراحل زیر را انجام دهید:
- با تعیین دامنه متغیر که باید تابع برای آن رسم شود، x را تعریف کنید.
- تعریف تابع y = f (x)
- دستور plot را به صورت plot (x,y) فراخوانی کنید.
تابع همانی
اجازه دهید تابع ساده و همانی y = x را برای دامنه مقادیر x از ۰ تا ۱۰۰ با طول گام ۵ رسم کنیم. یک فایل اسکریپت ایجاد کنید و کد زیر را تایپ کنید:
1 2 3 |
x = [0:5:100]; y = x; plot(x, y) |
هنگام اجرای فایل، متلب تصویر زیر را نمایش می دهد:
تابع درجه دو
بیایید یک مثال دیگر برای ترسیم تابع y=x^2 بیاوریم. در این مثال، دو نمودار با عملکرد یکسان ترسیم می کنیم، اما در حالت دوم، مقدار طول گام را کاهش می دهیم. لطفا توجه داشته باشید که هرچه این طول گام را کاهش دهیم نمودار هموارتر می شود.
حالت اول با طول گام ۲۰:
1 2 3 |
x = [-100:20:100]; y = x.^2; plot(x, y) |
مشاهده نتیجه:
حالت دوم با طول گام ۵:
1 2 3 |
x = [-100:5:100]; y = x.^2; plot(x, y) |
مشاهده نتیجه با نموداری نرم و هموارتر:
افزودن عنوان، برچسب و خطوط به نمودار
متلب به شما امکان میدهد عنوان، برچسبهایی در امتداد محور x و محور y، خطوط شبکه و همچنین ظاهر محورها را اضافه کنید یا تغییر دهید.
- دستورات xlabel و ylabel برچسبهایی را در امتداد محور x و y تولید میکنند.
- دستور title به شما امکان میدهد عنوان را روی نمودار قرار دهید.
- دستور grid on به شما امکان میدهد خطوط شبکه را روی نمودار قرار دهید.
- فرمان axis equal اجازه میدهد نمودار با مقیاس یکسان و فضاهای برابر هر دو محور تولید شود.
- دستور axis square یک نمودار مربعی تولید میکند.
مثال: یک فایل اسکریپت ایجاد کنید و کد زیر را تایپ کنید.
1 2 3 4 |
x = [0:0.01:10]; y = sin(x); plot(x, y), xlabel('x'), ylabel('Sin(x)'), title('Sin(x) Graph'), grid on, axis equal |
متلب نمودار زیر را ایجاد می کند:
رسم چندین تابع روی یک نمودار
شما می توانید چندین نمودار را روی یک صفحه بکشید. مثال زیر این مفهوم را نشان میدهد. یک فایل اسکریپت ایجاد کنید و کد زیر را تایپ کنید:
1 2 3 4 |
x = [0 : 0.01: 10]; y = sin(x); g = cos(x); plot(x, y, x, g, '.-'), legend('Sin(x)', 'Cos(x)') |
متلب نمودار زیر را ایجاد میکند:
تنظیم رنگها در نمودار
هشت رنگ اصلی برای رسم نمودار در متلب وجود دارد. در زیر رنگها و کدهای آنها را مشاهده میکنید.
Code | Color |
w | سفید |
k | سیاه |
b | آبی |
r | قرمز |
c | یشمی |
g | آبی |
m | ارغوانی |
y | زرد |
مثال: اجازه دهید نمودار دو چند جملهای را ترسیم کنیم. یک فایل اسکریپت ایجاد کنید و کد زیر را تایپ کنید:
- $ f(x) = 3x^4 + 2x^3+ 7x^2 + 2x + 9 $
- $g(x) = 5x^3 + 9x + 2$
1 2 3 4 |
x = [-10 : 0.01: 10]; y = 3*x.^4 + 2 * x.^3 + 7 * x.^2 + 2 * x + 9; g = 5 * x.^3 + 9 * x + 2; plot(x, y, 'r', x, g, 'g') |
تنظیم مقیاس محورها
دستور axis به شما امکان میدهد مقیاسهای محورها را تنظیم کنید. میتوانید مقادیر حداقل و حداکثر را برای محورهای x و y با استفاده از دستور axis به روش زیر ارائه دهید:
1 |
axis ( [xmin xmax ymin ymax] ) |
به مثال زیر توجه کنید:
1 2 3 |
x = [0 : 0.01: 10]; y = exp(-x).* sin(2*x + 3); plot(x, y), axis([0 10 -1 1]) |
با اجرای فایل، متلب نمودار زیر را ایجاد میکند:
sub-plot در متلب
وقتی آرایهای از نمودارها را در یک figure (پنجره) ایجاد میکنید، به هر یک از این نمودارها یک subplot گفته میشود. از دستور subplot برای ایجاد آن استفاده میشود. به سینتکس زیر توجه کنید:
1 |
subplot(m, n, p) |
m و n تعداد ردیفها و ستونهای آرایه نمودار است و p مشخص میکند که کجا یک نمودار خاص قرار گیرد. هر نمودار ایجاد شده با دستور subplot میتواند ویژگیهای خاص خود را داشته باشد. مثال زیر این مفهوم را نشان میدهد. دو نمودار زیر را در نظر بگیرید.
- $ y = e^{-1.5x}sin(10x) $
- $ y = e^{-2x}sin(10x) $
یک فایل اسکریپت ایجاد کنید و کد زیر را تایپ کنید:
1 2 3 4 5 6 7 |
x = [0:0.01:5]; y = exp(-1.5*x).*sin(10*x); subplot(1,2,1) plot(x,y), xlabel('x'),ylabel('exp(–1.5x)*sin(10x)'),axis([0 5 -1 1]) y = exp(-2*x).*sin(10*x); subplot(1,2,2) plot(x,y),xlabel('x'),ylabel('exp(–2x)*sin(10x)'),axis([0 5 -1 1]) |
هنگام اجرای فایل، متلب نمودار زیر را ایجاد میکند:
انواع رسم نمودار در متلب
در این قسمت به بررسی نمودارها و قابلیتهای گرافیکی متلب خواهیم پرداخت. به موارد زیر توجه کنید:
- رسم نمودارهای میلهای
- رسم کانتورهای دو بعدی
- طرح های سه بعدی
رسم نمودارهای میلهای
دستور bar یک نمودار میلهای دو بعدی ترسیم میکند.
مثال: بگذارید یک کلاس تخیلی با ۱۰ دانش آموز داشته باشیم. ما میدانیم که درصد نمرات بدست آمده توسط این دانشجویان ۷۵، ۵۸، ۹۰، ۸۷، ۵۰، ۸۵، ۹۲، ۷۵، ۶۰ و ۹۵ است. نمودار میلهای این دادهها را ترسیم میکنیم. یک فایل اسکریپت ایجاد کنید و کد زیر را تایپ کنید:
1 2 3 4 5 |
x = [1:10]; y = [75, 58, 90, 87, 50, 85, 92, 75, 60, 95]; bar(x,y), xlabel('Student'),ylabel('Score'), title('First Sem:') print -deps graph.eps |
متلب نمودار میلهای زیر را نمایش میدهد:
رسم کانتور
خط کانتور تابعی از دو متغیر یک منحنی است که در طی آن تابع دارای مقدار ثابت است. خطوط کانتور برای ایجاد نقشههای کانتور با استفاده از نقاط دارای ارتفاع مساوی بالاتر از یک سطح مشخص، مانند میانگین سطح دریا، استفاده میشود. متلب تابع contour را برای ترسیم نقشههای کانتور ارائه میهد.
مثال: بیایید یک نقشه کانتور تولید کنیم که خطوط کانتور را برای یک تابع داده شده g = f (x,y) نشان دهد. این تابع دارای دو متغیر است. بنابراین باید دو متغیر مستقل ایجاد کنیم، یعنی دو مجموعه دادهی x و y. این کار با فراخوانی دستور meshgrid انجام می شود. از دستور meshgrid برای تولید ماتریسی از عناصر استفاده میشود که دامنهی آنها را با طول گامهای مشخص تعیین میکند. اجازه دهید تابع g = f (x,y) را رسم کنیم؛ (در بازهی x از منفی تا مثبت ۵ و y از منفی تا مثبت ۳ و یا طول گام ۰.۱). متغیرها به صورت زیر است:
1 |
[x,y] = meshgrid(–5:0.1:5, –3:0.1:3); |
در آخر باید تابع را تعیین کنیم. برای مثال از تابع $x^2 + y^2$ استفاده میکنیم. یک فایل اسکریپت ایجاد کنید و کد زیر را تایپ کنید:
1 2 3 4 5 |
[x,y] = meshgrid(-5:0.1:5,-3:0.1:3); g = x.^2 + y.^2; [C, h] = contour(x,y,g); set(h,'ShowText','on','TextStep',get(h,'LevelStep')*2) print -deps graph.eps |
هنگام اجرای فایل، متلب نقشه کانتور زیر را نمایش میدهد:
نمودارهای سه بعدی در متلب
نمودارهای سه بعدی اساسا سطحی را که توسط یک تابع دو متغیره تعریف شده است، g = f (x,y)، نشان میدهند. مانند قبل برای تعریف g، ابتدا مجموعهای از نقاط (x،y) را با استفاده از دستور meshgrid بر روی دامنه تابع ایجاد میکنیم. سپس ما خود تابع را ایجاد میکنیم. در آخر از دستور surf برای ایجاد نمودار سهبعدی استفاده میکنیم.
مثال: بیایید یک سطح سهبعدی برای تابع $g = xe^{-x^2 – y^2}$ ایجاد کنیم. یک فایل اسکریپت ایجاد کنید و کد زیر را تایپ کنید:
1 2 3 4 |
[x,y] = meshgrid(-2:.2:2); g = x .* exp(-x.^2 - y.^2); surf(x, y, g) print -deps graph.eps |
با اجرای فایل، متلب نقشه سهبعدی زیر را نمایش میدهد:
برای تولید یک سطح سه بعدی میتوانید از دستور mesh نیز استفاده کنید. دستور surf هر دو خطوط اتصال و سطوح رنگی را نشان میدهد در حالی که دستور mesh یک قاب با خطوط رنگی که نقاط دامنه را به هم متصل میکند نشان میدهد. به مثال زیر توجه کنید:
1 2 3 4 5 6 |
t = 0:pi/10:2*pi; [X,Y,Z] = cylinder(4*cos(t)); subplot(2,2,1); mesh(X); title('X'); subplot(2,2,2); mesh(Y); title('Y'); subplot(2,2,3); mesh(Z); title('Z'); subplot(2,2,4); mesh(X,Y,Z); title('X,Y,Z'); |
نمایش خروجی: