看板 MATLAB 關於我們 聯絡資訊
是這樣的, 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://www.ptt.cc/bbs/MATLAB/M.1420691737.A.292.html ※ 編輯: sleeeve (74.94.77.238), 01/08/2015 12:37:37
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
geniusturtle: 知道 z = f(x,y) 的話可以用樓上的方法 01/08 17:16
geniusturtle: 不知道的話...重新內插? 01/08 17:17
Rasin: 1F就是正解了阿 怎麼可能不行 你代碼貼上來 01/08 20:59
Rasin: 把xy meshgrid 然後把z分別對應放入矩陣 沒有的改成nan 01/08 21:04
Rasin: mesh就出來了 01/08 21:05
Rasin: 提供一個偷懶的方法 將z=某個值的xyz全部畫一條線 01/08 21:19
Rasin: 但要看誤差可以忍受多少 01/08 21:20
YoursEver: 這個case看起來不可能靠surf, mesh之類的來畫, 01/09 13:49
YoursEver: 假設你的點夠密,你去matlab help看一下 isosurface 這 01/09 13:49
YoursEver: 個function底下的範例成式碼,或許會有用. 01/09 13:49
YoursEver: 你的case看起來要從meshing做起; distance transform可 01/09 13:51
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
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