PDA

View Full Version : رسم نمودار سه بعدی شکیل!



ASedJavad
شنبه 22 شهریور 1393, 15:04 عصر
سلام
برای اینکه فضای کاری یه ربات رو بدست بیارم، ربات رو حرکت دادم و نقاط مختلف رو تو متلب سیو کردم.
حالا میخوام این فضای کاری رو بصورت سه بعدی رسم کنم؛ با دستور plot3 به شکل زیر در اومده:


123408

ولی میخوام یخورده شکیلتر و مرتب تر بشه مثل شکل زیر:

123409
لطفا راهنماییم کنید.

دیتای برنامه رو هم اینجا آپلود کردم (http://file.tebyan.net/159521916611928221782328655867440198/Posts%20AX/WorkSpace.zip) (گفتم شاید نیاز بشه) که توش یه متغیر w هست که ستون اول x، ستون دوم y و ستون سوم z هست و من برا رسم از دستور زیر استفاده کردم:

plot3(w(:,1),w(:,2),w(:,3))

rahnema1
شنبه 22 شهریور 1393, 16:45 عصر
متلب امکانات سه بعدی مختلفی از جمله virtualreality و sl3d داره برای خوانده فایلهای سه بعدی
ابتدا باید شما convex hull این نقاط را به دست بیارید شاید از طریق delaunay triangulation هم بشه
نهایتا شکل اون را پلات کنید
من ابتدا مختصات را با استفاده از dlmwrite به یک فایل با پسوند asc فرستادم سپس اون را در نرم افزار meshlab ( یک نرم افزار رایگان 3ه بعدی) وارد کردم. سپس
convex hull این نقاط را با نرم افزار meshlab به دست آوردم به فرمت wrl یا vrml تبدیل کردم که در متلب می تونید وارد و استفاده کنید

فکر کنم تمام اینها در متلب بدون meshlab امکان پذیر باشه

http://www.sharefile.ir/uploads/1410663226.zip

sim-power
سه شنبه 27 مرداد 1394, 22:51 عصر
رسم نمودارهای سه بعدی (http://sim-power.ir/%D8%B1%D8%B3%D9%85-%D9%86%D9%85%D9%88%D8%AF%D8%A7%D8%B1%D9%87%D8%A7%D B%8C-%D8%B3%D9%87-%D8%A8%D8%B9%D8%AF%DB%8C-%D8%AF%D8%B1-%D9%85%D8%AA%D9%84%D8%A8/)
هدف : رسم تابع
z=f(x,y)
نکته مهم: اگر مثلا x=1:3 و y=1:2 ، z به ازای همه (x,y) ها مقدار باید داشته باشد. (1,1)، (2,1) ، (3,1) و....
دستور meshgrid برای ساخت این نقاط به کار می رود:
[x ,y]=meshgrid(1:3,1:2);
تابع plot3 برای رسم z به کار می رود:
[x,y]=meshgrid(-3:0.01:3,-3:0.01,3);
z=exp(-x.^2-y.^2);
plot3(x,y,z);
دستورات فوق،
نمودار z را رسم می کند. این تابع منحنی را به صورت یک سری خطوط رسم می کند.