رسم نمودار سه بعدی در متلب
شاید برای شما پیش آمده باشد بخواهید یک تابع سه بعدی را در متلب نمایش دهید. در این پست میخواهیم چگونگی رسم نمودار سه بعدی در متلب را بررسی کنیم. با هوسم همراه باشید…
دستورهای رسم نمودار سه بعدی در متلب
دستورهای متنوعی برای رسم نمودار سه بعدی در متلب وجود دارند. این دستورها هرکدام یک سطح (surface) را نشان میدهند. دستورهایی که برای رسم نمودار سه بعدی در متلب وجود دارند عبارتند از: Plot3، Surf و Mesh. در ادامه، نحوه استفاده از هرکدام از این سه دستور بررسی شده و مثالی برای هرکدام آورده شده است. این آموزش با این فرض آماده شده که شما بر متلب مسلط هستید. بنابراین اگر نیاز دارید که مقدمات متلب را آموزش ببینید، به لینک زیر مراجعه کنید. این لینک مربوط به آموزش متلب رایگان هوسم است که بسیار مورد توجه دانشجویان قرار گرفته است:
دستور plot3 در متلب
فرض کنید که بخواهیم تابع را در متلب به صورت سه بعدی رسم کنیم. اولین قدم در رسم نمودار چنین تابعی در متلب، تعیین ورودی است. فرض کنید بخواهیم تابع مورد نظرمان را در بازهی 8- و 8 از محور x و y رسم کنیم. در این صورت مقدار تابع z برای تمامی نقاطی که در بازهی 8- و 8 روی محور x و y واقع میشوند باید محاسبه شود (مربع رنگی در تصویر زیر).
البته میدانیم که در متلب متغیر پیوسته نداریم. یعنی ما از محدودهای که گفته شد، تعداد محدود اما کافی، نقطه انتخاب میکنیم. هرچقدر تعداد این نقاط بیشتر باشد، نموداری که رسم میکنیم به نمودار واقعی نزدیکتر خواهد شد (در واقع نمودار نرمتر یا smooth خواهد شد).
استفاده از دستور meshgrid در متلب برای رسم نمودار سه بعدی
در متلب دستور meshgrid مخصوص تولید ورودی برای توابع سهبعدی است. این دستور را در help متلب جستجو کرده و صفحه توضیحات مربوط به آن را باز کنید. مشاهده میکنید برای تولید ورودی برای X و Y میتوان از دستور [X,Y] = meshgrid(x,y) استفاده کرد. که در آن ورودی x، نشاندهنده بازه X و ورودی y، نشان دهنده بازه Y است. در مثالی که ما به دنبال حل آن هستیم، بازه موردنظر برای X و Y یکسان هستند بنابراین کافی است از دستور (X,Y] = meshgrid(x] استفاده کنیم. خب حالا بیایید ورودی تابع z را با استفاده از دستوری که گفتیم در بازه 8- و 8 تولید کنیم. برای این کار داریم:
>> [x,y] = meshgrid(-8:.5:8);
بعد از تولید ورودی، حالا نوبت رسم نمودار است. برای رسم نمودار از دستور plot3 استفاده میکنیم. ورودیهای دستور plot3 بسیار شبیه به دستور plot است. تنها تفاوت بین ورودیهای این دو دستور در تعداد متغیرها است. دستور plot دو متغیر را نسبت به هم رسم میکند. این در حالی است که متغیر plot3 یک متغیر را نسبت به دو متغیر دیگر رسم خواهد کرد. برای رسم تابع z خواهیم داشت:
>> z = sin(sqrt(x.^2 + y.^2))./sqrt(x.^2 + y.^2); >> plot3(x, y, z)
با اجرای کد بالا خواهیم داشت:
تغییر ظاهر نمودار سه بعدی در متلب
همانند دستور plot، ویژگیهای رسم نمودار برای دستور plot3 نیز قابل تغییر هستند. این ویژگیها عبارتند از نوع خط، نوع نشانگر و رنگ نمودار. به عنوان مثال برای اینکه نمودار با خط تیره و رنگ قرمز رسم شود کافی است که کد زیر اجرا شود:
>> plot3(x, y, Z, 'r--')
با اجرای این کد نمودار به شکل زیر تغییر خواهد کرد:
برای اطلاعات بیشتر در مورد این ویژگیها میتوانید به توضیحات دستور plot در اینجا مراجعه کنید.
توجه: برای استفاده از دستور plot3 حتما باید هر سه متغیر x، y و z به عنوان ورودی به آن داده شوند در غیر این صورت کد شما به خطا منجر میشود.
دستور surf در متلب
روش دیگر برای رسم یک تابع به صورت سه بعدی در متلب، استفاده از دستور surf است. برای استفاده از این دستور نیز باید با meshgrid، ورودی بسازیم. پس از تولید ورودی، دستور surf را در help متلب جستجو کرده و صفحه توضیحات مربوط به آن را باز کنید. مشاهده میکنید که با استفاده از دستور (surf(X,Y,Z میتوانیم یک نمودار سه بعدی از تابع z نسبت به x و y رسم کنیم. برای این کار داریم:
>> [x,y] = meshgrid(-8:.5:8); >> z = sin(sqrt(x.^2 + y.^2))./sqrt(x.^2 + y.^2); >> surf(x, y, z)
با اجرای کد بالا، نمودار زیر را خواهیم داشت:
مشاهده میکنید که تابع مورد نظر ما به صورت سه بعدی رسم شده است. برخلاف دستور plot3 که تابع را با استفاده از مجموعهای از خطوط رسم کرد، در اینجا رویه تابع نمایش داده میشود.
بر خلاف plot3، دستور (surf(z منجر به خطا نمیشود و تابع z را نسبت به اندیس المانهای آن رسم میکند.
>> surf(z)
با اجرای کد بالا داریم:
مشاهده میکنید که بازه رسم نمودار در این حالت تغییر کرده است.
دستور mesh در متلب
راه سوم برای رسم توابع سه بعدی استفاده از دستور mesh است. برای استفاده از این دستور نیز همانند دو دستور قبلی، باید با meshgrid ورودی بسازیم. سپس دستور mesh را در help متلب جستجو کرده و صفحه توضیحات مربوط به آن را باز کنید. مشاهده میکنید که با استفاده از دستور (mesh(X,Y,Z میتوانیم تابع z را نسبت به x و y رسم کنیم. برای این منظور داریم:
>> mesh(x,y,z)
با اجرای کد بالا خواهیم داشت:
همانند surf، دستور (mesh(z تابع z را نسبت به اندیس المانهای آن رسم میکند.
>> mesh(z)
با اجرای کد بالا داریم:
جمعبندی پست رسم نمودار سه بعدی در متلب
در این پست ما با استفاده از سه دستور plot3، surf و mesh توانستیم نمودار سهبعدی تابع را رسم کنیم. میتوان ظاهر نمودارهای رسم شده با دستورهای surf و mesh را نیز همانند plot3 تغییر داد اما در این پست این مسائل مورد بررسی قرار نگرفتند. انشالله در پستهای آینده به این مسئله پرداخته خواهد شد. امیدوارم این آموزش مورد توجه شما قرار گرفته باشد.
مطالب زیر را حتما مطالعه کنید
تعریف متغیر در متلب
آموزش متلب رایگان
دستور max در متلب
دستور محاسبه انتگرال در متلب
دستور input در متلب
دستور ezplot در متلب
6 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
با سلام
وقتی هم دانشگاهی هایی به فعالی شما میبینم واقعا لذت میبرم و برای ادامه کار تشویق میشم.
ممنون از مطلب خوب متلب ،😄😄
با سلام و تشکر بابت مطالب بسیار مفیدتون
میشه راهنمایی کنید به چه صورت میتونم یک صفحه را بر نقاط سه بعدی برازش کنم؟
ممنون
سلام
آیا می شود با مقادیر زیر یه نمودار سه بعدی رنگی رسم کرد
X=[1 4 6 7 8 9]
Y=[7 8 9 3 2 1]
Z=[ 0 4 3 2 1 5]
سلام،
بله میتونید از دستور plot3 استفاده کنید. تغییر رنگ نمودار هم مشابه دستور plot هست.
درود بر شما، آیا پست های بعدی که وعده داده اید و مربوط به تغییر ظاهر نمودارهای رسم شده با دستورهای surf و mesh هستند منتشر شده اند؟ همچنین چگونه می توان پس از رسم نمودارها، بردارهای هر سه بعد را حذف کرد؟ در واقع می خواهم شکل بکشم نه نمودار، لطفا راهنماییم کنید.
سلام حسین عزیز،
خیر، منتشر نشدند، اولویت ما این بوده که ابتدا دوره آموزش متلب رایگان رو کامل کنیم و این اولویت ما نبوده.
برای اینکه محورهای مختصات رو حذف کنید، کافیه بعد از رسم نمودار کد زیر رو وارد کنید:
axis off