作者sleeeve (赴美留学的日子...)
看板MATLAB
标题[绘图] plot3如何把曲面画出
时间Thu Jan 8 12:35:32 2015
是这样的,
x是一个(n*1)的向量。
y是一个(n*1)的向量。
z是一个(n*1)的向量。
plot3(x,y,z,'.') 会在3D中画出n个点。
如果这n个点刚好是一个曲面,如何把它画成如:
http://ppt.cc/MeC~ 一条线一条线的曲面(semidefinite cone)
或是让图看起来像曲面,而不是一堆点
THX
--
╭──╮ 全 q ˙ . 全 ╭════╮
║ 灯 电 世 . 潘 ◤◥◤◥ 阳 街 世 │此路不通│
║││ 了 界 ˙威 在 一 起 建 . 了 界 ╰═ ╤ ═╯
║ 停 都 ‧ 伦 ◣ ◢ 福 . 封 都 │
║ ﹕. ˙ ‧ ‧ │
███ ψsleeeve ███
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 74.94.77.238
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/MATLAB/M.1420691737.A.292.html
※ 编辑: sleeeve (74.94.77.238), 01/08/2015 12:37:37
1F:推 kevio: surf ? or surf相关 mesh, surfc ? 01/08 14:44
应该说,如果这些点刚好构成一个实心的cone...但我想画这个cone的surface.
要怎麽弄呢? surf(x,y,z)好像不行
※ 编辑: sleeeve (74.94.77.238), 01/08/2015 14:57:28
2F:→ geniusturtle: 知道 z = f(x,y) 的话可以用楼上的方法 01/08 17:16
3F:→ geniusturtle: 不知道的话...重新内插? 01/08 17:17
4F:推 Rasin: 1F就是正解了阿 怎麽可能不行 你代码贴上来 01/08 20:59
5F:→ Rasin: 把xy meshgrid 然後把z分别对应放入矩阵 没有的改成nan 01/08 21:04
6F:→ Rasin: mesh就出来了 01/08 21:05
7F:推 Rasin: 提供一个偷懒的方法 将z=某个值的xyz全部画一条线 01/08 21:19
8F:→ Rasin: 但要看误差可以忍受多少 01/08 21:20
9F:→ YoursEver: 这个case看起来不可能靠surf, mesh之类的来画, 01/09 13:49
10F:→ YoursEver: 假设你的点够密,你去matlab help看一下 isosurface 这 01/09 13:49
11F:→ YoursEver: 个function底下的范例成式码,或许会有用. 01/09 13:49
12F:→ YoursEver: 你的case看起来要从meshing做起; distance transform可 01/09 13:51
13F:→ YoursEver: 以帮你定义cone的内/外部. 01/09 13:51
num = 0;
%% loop
for x = 0 : .1 : 1
for y = -1 : .1 : 1
for z = 0 : .1 : 1
num = num + 1;
A = [x y;y z]; // PSD矩阵
a = eig(A); // 求特徵值
if (a(1) >= 0) && (a(2) >= 0) // 如果两个特徵值接不小於0,则储存
vecx(num) = x;
vecy(num) = y;
vecz(num) = z;
else // 否则不储存其座标值
vecx(num) = NaN;
vecy(num) = NaN;
vecz(num) = NaN;
end
end
end
end
%% picture
figure(1)
plot3(vecx,vecy,vecz,'.')
※ 编辑: sleeeve (74.94.77.238), 01/10/2015 15:07:48
14F:→ sleeeve: 画出来是实心的@@ 01/10 15:08
条件是矩阵要positive semi-definite,所以用特徵值去判定。
我适用范围内一个点一个点带。
※ 编辑: sleeeve (74.94.77.238), 01/10/2015 15:09:45
※ 编辑: sleeeve (74.94.77.238), 01/10/2015 15:26:33