[繪圖] 想請教有關畫四維圖方法(更新問題)

看板MATLAB作者 (zx168zx)時間10年前 (2015/04/02 15:11), 10年前編輯推噓5(508)
留言13則, 2人參與, 最新討論串1/1
小弟我想畫一個f(x,y,z)的圖 x,y,z為3個矩陣 大小分別為 x => 64,1 y => 64,1 z => 57,1 f => 64x64x57,1 f的值就是 當x=1,y=1,z=1 帶入以後得出的值 我想要在三維座標上 將f的大小用顏色(colorbar)表示 我試過scatter3(x(:,1),y(:,1),z(:,1),f,f,'filled') 本來想說用surf畫 但meshgrid的矩陣也是要同樣大小 但他顯示我的x,y,z不一樣大 而且scatter3畫出來是點 我想問看看 是不是有甚麼方法可以畫出f的曲面 然後顏色表示大小? 以下是P大提供的方法 給大家參考 [xx yy]=meshgrid( 64 x 64 ) %將資料做成meshgrid for n = 1:57 f =f2(:,:,n); %用迴圈一頁一頁畫 mesh(xx,yy,f); hold on %疊圖 colorbar drawnow frame = getframe(1); im = frame2im(frame); [imind,cm] = rgb2ind(im,256); if n == 1; imwrite(imind,cm,filename,'gif', 'Loopcount',inf); else imwrite(imind,cm,filename,'gif','WriteMode','append'); end end 將z的變化改用疊圖的方式 處理出來效果蠻不錯的 另外我想問的是 如果我現在x,y,z很大的話 要如何處理 比如 f(x,y,z) 裡面的 x y z各是10000的話 這樣meshgrid會因為記憶體問題無法建立 請問有甚麼方法可以處理這麼大的資料量嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.116.1.136 ※ 文章網址: https://www.ptt.cc/bbs/MATLAB/M.1427958685.A.6BC.html

04/02 20:55, , 1F
感覺你需要的是3d的contour(一般contour是z=f(x,y), 你
04/02 20:55, 1F

04/02 20:56, , 2F
需要的是t=f(x,y,z), 但是這樣畫真的會清楚嗎? 感覺例如
04/02 20:56, 2F

04/02 20:56, , 3F
f=1的曲面跟f=2的曲面就有可能互相擋住之類的
04/02 20:56, 3F

04/02 20:57, , 4F
如果是我寧可做成gif動畫 讓x,y,z其中一自變數隨時間變
04/02 20:57, 4F

04/02 20:57, , 5F
仍然畫成f(x,y)然後z隨時間變的2d contour
04/02 20:57, 5F

04/02 21:33, , 6F
依你敘述,結果會是充滿顏色的方塊耶?這是你要的嗎?
04/02 21:33, 6F
可能也要看過結果才知道 不知道大大所謂方塊是要如何呈現 pcolor在搭配甚麼嗎? ※ 編輯: zx168zx (140.116.46.243), 04/04/2015 14:43:57

04/04 15:27, , 7F
你只是要疊圖就不用後面寫成gif的東西了阿XD 我本意是
04/04 15:27, 7F

04/04 15:27, , 8F
怕疊出來曲面之間可能互相擋到才建議你用動畫 既然你覺
04/04 15:27, 8F

04/04 15:27, , 9F
得效果不錯代表不會擋到 那就for+hold on去疊就好了 沒
04/04 15:27, 9F

04/04 15:27, , 10F
必要寫gif
04/04 15:27, 10F

04/04 15:29, , 11F
另外資料量太大感覺很難...可能只能用for把x,y也分段畫
04/04 15:29, 11F

04/04 15:29, , 12F
去疊
04/04 15:29, 12F
純粹只是覺得用疊圖很酷XD 用for 把x,y,也去疊是甚麼意思 是把x,y也切割嗎? ※ 編輯: zx168zx (140.116.46.243), 04/04/2015 15:51:34

04/04 15:53, , 13F
對阿 把x y分小一點
04/04 15:53, 13F
文章代碼(AID): #1L7EkTQy (MATLAB)
文章代碼(AID): #1L7EkTQy (MATLAB)