我已经通过有限差分求解了倍频程中的热量方程,并生成了以下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


matlab - 如何插值和绘制4维汉堡包?-LMLPHP

我想要的是一个漂亮的华丽光滑矩形棱镜,如下所示:

matlab - 如何插值和绘制4维汉堡包?-LMLPHP

因此,我认为我需要以某种方式在我拥有的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


这不是您所需要的吗?您拥有网格(xyz)和解决方案(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/

10-12 23:53