آموزش برنامه نویسی متلب
موضوع:رسم نمودار سه بعدی در متلب
جلسه:هجدهم
مدرس : پدرام مشهدی زاده
متلب را ساده،آسان و شیرین بنوشید!!!
در جلسه شانزدهم و جلسه هفدهم با پرکاربردترین دستورات ترسیم نمودارهای دوبعدی آشنا شدیم. این جلسه به بررسی توابع و دستورات مختلف رسم نمودارهای سه بعدی میپردازیم.
- plot3(x,y,z) :
این دستور مشابه plot(x,y) بوده با این تفاوت که سه ورودی از نوع بردار میگیرد. این سه بردار هم طول بوده و حاوی مختصات نقاط در فضای سه بعدی میباشند. نقاط متناظر یک به یک در فضا ترسیم شده و سپس به یکدیگر وصل میگردند.
t = linspace(0,10*pi,100); x = sin(t); y = cos(t); plot3(x,y,t) |
- zlabe(‘text’) :
مشابه حالت دوبعدی دستورات xlabel و ylabel برای تمام حالات سه بعدی نیز عمل میکنند. دستور zlabel هم به طریق مشابه عنوان برچسب محور قائم یا z را تعیین میکند.
نکته: دستورات رسم نمودارهای سه بعدی همگی در یک figure رسم میشوند. بنابراین دستورات گفته شده مرتبط با اعمال تغییرات در این پنجره مانند clf، title، legend، ،grid و ... نیز در این حالت به کارمی-روند.
برای تغییر زاویه دید نمودار سه بعدی به طرق مختلفی میتوان عمل کرد. ساده ترین راه استفاده از ابزار rotate در قسمت نوار ابزار بالای پنجره ی figure است. اگر این گزینه فعال باشد، با کلیک راست روی نمودار پنجره زیر باز میشود:
گزینه های این پنجره برای نمایش دوبعدی نمودار با حذف هر یکی از محورها و یا برگشت به حالت اصلی نمایش است. برای مثال اگر بخواهیم نمودار را از بغل یعنی از صفحه x-z ببینیم، گزینه Go to X-Z view را انتخاب میکنیم:
اگر از بالا به شکل نگاه کنیم، طبیعی است که قفط یک دایره میبینیم.(امتحان کنید!)
- view([az el]) :
از این دستور هم برای انتخاب زاویه دید میتوان استفاده کرد. بردار 2در1 ورودی این دستور حاوی زاویه-های azimuth، یعنی نسبت به صفحه X-Y، و elevation، نسبت به بخش منفی محور y، است.
>>view([45 45]) |
برای رسم نمودارهای سه بعدی نیاز به داشتن مختصات یا توابع ایجادکننده آنها داریم. توابعی در متلب وجود دارند که مختصات یا داده های برخی نمودارهای پرکابرد را با ابعاد دلخواه تولید میکنند. برای یادگیری و آشنایی با نحوه کار دستوراتی که در ادامه خواهیم گفت ابتدا با چند تا از این توابع آشنا میشویم:
- [x y z] = peaks : |
این دستور مختصات یک تابع شبیه به توزیع گاوسی را تولید میکند. هر کدام از آرگومان های خروجی یک ماتریس مربعی با ابعاد 49*49 خواهدبود. از این مختصات برای نمایش نحوه کارکرد دستورات mesh و surf که در ادامه خواهیم گفت استفاده میتوان کرد.
peaks(n) ماتریسی با ابعاد دلخواه n*n تولید میکند.
- [x y z] = sphere(n) :
مشابه قبل مختصات یک کره را برمی گرداند. n ابعاد ماتریس های خروجی را تعیین میکند.
- [x y z] = cylinder(r) :
این دستور نیز مختصات یک استوانه به شعاع r را برمی گرداند. ابعاد آرگومان های خروجی xو yو z برابر با 2*21 خواهدبود. در استوانه قاعد ه ای به شکل 20ضلعی منتظم دارد.
دستورات فوق را بدون آرگومان ورودی و خروجی نیز میتوان به کاربرد. که در این صورت آنها را با مقادیر پیش فرض رسم میکند:
>>subplot(221),peaks >>subplot(222),sphere(10) >>subplot(223),cylinder(3) >>subplot(224),cylinder(sin(0:.1:pi)+2) |
[x y z] = cylinder(v) که در آن v یک بردار 1*n است، ماتریس های x و y و z n*21 تولید میکند که در آن هر سطر متناظر با یک سطح استوانه است. به مثال زیر برای بهتر روشن شدن موضوع دقت کنید:
>>cylinder([5 3]) |
>>cylinder([5 3 1]) |
حال که این دستورات را یاد گرفتیم، به سراغ ادامه توابع رسم سه بعدی میرویم.
- mesh(x,y,z) :
تابع mesh یا شبکه (یا توری)، شبکه ای سه بعدی از نقاط z را رسم میکند. z نقاطی در صفحه z است که برحسب نقاطی که در x و y تعریف شده اند در فضای سه بعدی رسم میشوند. x و y میتوانند بردارهای هم اندازه با هم و هم طول با z یا ماتریس های هم اندازه با z باشند.
اگر x و y بردار باشند، متلب برای رسم mesh ابتدا آنها را در n سطر تکرار کرده (مانند repmat(x,n,1)) تا ماتریس های مربعی n*n ایجاد شود. پس n2 نقطه مخصات ایجاد میشود. سپس نقاط z در فضا به نقاط مجاور خود در راستای x و y وصل میگردند:
i,j-1 | ||
i+1,j | | ------- i,j ------ - | | i-1,j |
i,j+1 |
>>[x y z] = peaks; >>mesh(x,y,z) |
- meshz(x,y,z) :
علاوه بر شکل فوق دیواره هایی را پیرامون نمودار رسم میکند.
- meshc(x,y,z) :
در زیر نمودار یک نمودار counter، که بعدا توضیح داده خواهدشد، رسم میکند.
- surf() :
این دستور هم مانند دستور قبل عمل میکند. بنابراین ورودی ایی که برای mesh استفاده کردیم را برای این دستور هم میتوان به کاربرد. این دستور که از نام آن نیز برمی آید برای ترسیم رویه های ریاضی استفاده میشود. در واقع شبکه ایجاد شده توسط mesh را توسط قابلیت هایی مثل رنگ کردن و ایجاد سایه و افکت به مانند یک رویه یا سطح ریاضی درمی آورد.
>>[x y z] = peaks; >>surf(x,y,z) |
- surfc :
مانند meshc یک نمودار countour در زیر نمودار رسم میکند.
- shading arg :
حالت سایه در نمودار سطح ایجاد میکند. مقدار arg یکی از موارد زیر می تواند باشد:
• flat
• faceted
• interp
در مثال قبل این کد را اضافه میکنیم:
>>shading flat |
- colormap arg :
نقشه رنگ نمودار را تعیین میکند. مقدار arg از یکی از موارد زیر میتواند انتخاب شود:
HSV | Hot | Cool | jet |
Spring | Summer | Autumn | Winter |
Gray | Copper | Pink | lines |
- rotate3d :
حالت چرخش نمودار را فعال میکند.
- colorbar :
نقشه رنگ نمودار را کنار آن مشخص میکند:
>>colormap winter >>colorbar |
- contour(z) :
نمودار دوبعدی contour از ماتریس z را رسم میکند. این دستور ماتریس z را مقادیر محور z یک نمودار سه بعدی فرض میکند. و خطوط منفرد یا ایزوله را رسم میکند. برای مثال این دستور را برای peaks به کار میبریم:
- contour3(x,y,z,n) :
نمودار contour را در فضای سه بعدی رسم میکند. n تعداد بخش های نمودار را تعیین میکند. در مثال قبل داریم:
>>contour3(peaks,10) |
پیروز و موفق باشید
ادامه حیات سایت جاواپرو به حمایت مالی (دونیت) از طرف شما کاربر عزیز بستگی دارد.... |
جلسه هجدهم | رسم نمودار سه بعدی در متلب
فرمت:PDF (لطفا در صورت خرابی لینک دانلود گزارش بدید که لینک اصلاح کنیم)
بستن *نام و نام خانوادگی * پست الکترونیک * متن پیام |
دوره های آموزشی برنامه نویسی
انجام پروژه های برنامه نویسی
تدریس خصوصی برنامه نویسی
بیش از 7 سال از فعالیت جاواپرو میگذرد
جاواپرو دارای مجوز نشر دیجیتال از وزارت فرهنگ و ارشاد اسلامی است
جهت ارتباط مستقیم با جاواپرو در واتساپ و تلگرام :
09301904690