我已经通过有限差分求解了倍频程中的热量方程,并生成了以下3-D图,其点色与我的三维汉堡包中每个元素的温度相对应。
我的计算资源限制了我可以解决汉堡的分辨率。因此,获得我想要的图的唯一方法是使我的scatter3指向巨大的颜色斑点,这看起来有点不好。
[x,y,z] = meshgrid(1:nx,1:ny,1:nz) % Defines a grid to plot on
scatter3(x(:), y(:), z(:), 40, burgermatrix(:), 's', 'filled')% Point color=value
我想要的是一个漂亮的华丽光滑矩形棱镜,如下所示:
因此,我认为我需要以某种方式在我拥有的3D点之间进行插值。谁能帮我弄清楚该怎么做?
最佳答案
我可能会遗漏一些明显的东西,但这是倍频程help slice
的示例:
[x, y, z] = meshgrid (linspace (-8, 8, 32));
v = sin (sqrt (x.^2 + y.^2 + z.^2)) ./ (sqrt (x.^2 + y.^2 + z.^2));
slice (x, y, z, v, [], 0, []);
[xi, yi] = meshgrid (linspace (-7, 7));
zi = xi + yi;
slice (x, y, z, v, xi, yi, zi);
shading interp; %addition by me
这不是您所需要的吗?您拥有网格(
x
,y
,z
)和解决方案(T
),因此您只需要沿着[0 0 1]
等绘制它的切片即可。[xi yi]=meshgrid(unique(x),unique(y));
slice (x, y, z, T, xi, yi, max(z(:))*ones(size(xi)));
沿其他两个轴的切割相同。 (显然,
unique
调用应替换为您已经从中构建3d网格的向量。)注意:顺便说一句,您应该真正考虑更改默认(
jet
)颜色图。昨天,一位同事对SciPy员工制作的viridis
色彩图启发了我,例如在其中查看this post和视频链接。他们的推理是压倒性的,他们的色彩图也很漂亮。这应该定义它:viridis,尽管我自己还没有尝试过。(如果不是
jet
,我会告诉您您的温度曲线似乎很强1d。您是否在垂直壁上碰到周期性边界条件,而在水平壁上碰到均匀(即恒定)边界条件?)关于matlab - 如何插值和绘制4维汉堡包?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31732967/