3

我已经通过有限差分求解了倍频程的热方程,并生成了以下 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 点之间进行插值。谁能帮我弄清楚如何做到这一点?

4

1 回答 1

0

我可能遗漏了一些明显的东西,但这里是 octave 的例子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) 颜色图。昨天我被一位同事启发了关于viridisSciPy 人制作的颜色图,例如看到这篇文章和其中的视频链接。他们的推理是压倒性的,他们的色彩图很漂亮。这应该定义它:viridis,虽然我自己还没有尝试过。

(如果不是因为jet,我会告诉你,你的温度曲线看起来很强烈 1d。你是否碰巧有沿垂直壁的周期性边界条件和沿水平壁的均匀(即恒定)边界条件?)

于 2015-07-30T20:55:32.317 回答