如何畫三維波函數圖像?
計算結果是一三維數組,phi(M, M, M)。即給定(i, j, k),有一個phi值,請問matlab裡面有沒有類似contourf、surf這樣適用於三維圖像的?不想畫等勢面之類的,就想以每個點的值作為顏色參數畫圖。
可以使用 scatter3 函數,不過,畫出來的結果很可能不夠理想,更好的選擇應該是使用 slice 函數來畫出關鍵面(平面或者曲面)。
舉個例子:
[x, y, z] = meshgrid(-3:0.25:3);
f = x .* exp(-x.^2 - y.^2 - z.^2);
scatter3(x(:), y(:), z(:), [], f(:), .)
[x, y, z] = meshgrid(-3:0.1:3);
f = x .* exp(-x.^2 - y.^2 - z.^2);
slice(x, y, z, f, [], 0, 0)
你也可以根據具體需求,任意改變切片的位置,數量,甚至也可以用曲面切片。具體的使用方法,請參考 Matlab 的幫助文檔。此外,這裡也有一個很不錯的視頻教程,推薦觀看。
參考:- 3-D scatter plot
- Volumetric slice plot
- Basics: Volume visualization: 3/9 Display of scatter3 and slice plots
data = Table[{x, y, z, 100000 x*Exp[-x^2 - y^2 - z^2] + 0.35}, {x, -4.5, 4.5, 0.35}, {y, 0, 3.5, 0.3}, {z, -3.5, 3.5, 0.3}] //Flatten // Partition[#, 4] ;scatter3D[data_] := Graphics3D[{PointSize[1/100], Opacity[.8], Point[Most[data[Transpose]][Transpose],
VertexColors -&>
ColorData[{"LakeColors", "Reverse"}] /@ Last[data[Transpose]]]}, Axes -&> True];scatter3D[data]這樣的話顏色越深phi的值就越大,不過感覺效果不是很好。
打開下面這個鏈接就能找到很多內容
Human Verification舉個例子f[x_, y_, z_] = x Exp[-x^2 - y^2 - z^2];
Graphics3D[
Table[{Hue[f[x, y, z], 1, 1, Abs[f[x, y, z]]*2],
Point[{x, y, z}]}, {z, -3, 3, 0.2}, {y, -3, 3, 0.2}, {x, -3, 3,
0.2}] // Flatten]
推薦閱讀:
※加速度如何在頻域上積分成位移?
※Matlab如何實現截屏與屏幕錄製
※Eigen 矩陣運算庫在實際項目中的使用情況如何?
※研究電力電子化電力系統穩定性的利器——阻抗法
※[MATLAB]圖視篇(4)極致畫圖工具箱鼎力推薦
TAG:MATLAB | WolframMathematica |