如何为一维创建平滑的热图?
How to create a smooth heatmap for 1D?
我有1D中8个节点的变量Y的温度值。现在,当我尝试绘制时,我将温度梯度作为单独的框显示,如下所示。我不想要这个。实现此结果的代码如下所示(热图 1D)
Y =
1.0e + 03 *
4.1962
3.5087
2.8783
2.3026
1.7775
1.2967
0.8516
0.4318
figure (1)
imagesc (Y)
axis equal
axis off
colorbar;
我需要获得像第二张图(热图 1D 平滑)中所示的平滑图像,其中温度梯度之间的过渡是平滑的。
任何帮助将不胜感激!
用interpolation我们可以做到这一点。最初,我们有 8 个值。我们想对这些进行插值,因此我们有 100 个值,而不是 8 个。如果您不熟悉插值,初始值仍将存在,我们在两者之间添加的所有值将作为我们计算的值之间的梯度已经有了。
在我们的例子中,我们仅在一维内插值并且可以使用 interp1。
Y = 1000 * [4.1962 3.5087 2.8783 2.3026 1.7775 1.2967 0.8516 0.4318]';
Y = interp1(Y, linspace(1,8))';
figure (2)
imagesc (Y)
axis ([-3 5 0 100])
axis off
colorbar
interp1
的第二个参数是linspace(1,8)
。 linspace 的默认行为是创建 100 个均匀分布的值,从第一个参数开始到最后一个参数结束。这些是我们插值的 x-values 。在这种情况下,我们实际上没有任何 x-values,但是由于 interp1
将我们所有的 Y
值视为 x 的函数,它假设 [=14= 的索引] 是 x-values 如果我们不给它任何进一步的说明。
最后,我们将轴更改为与您在问题中发布的图像更相似并得到以下内容。
之前...
之后...
我有1D中8个节点的变量Y的温度值。现在,当我尝试绘制时,我将温度梯度作为单独的框显示,如下所示。我不想要这个。实现此结果的代码如下所示(热图 1D)
Y =
1.0e + 03 *
4.1962
3.5087
2.8783
2.3026
1.7775
1.2967
0.8516
0.4318
figure (1)
imagesc (Y)
axis equal
axis off
colorbar;
我需要获得像第二张图(热图 1D 平滑)中所示的平滑图像,其中温度梯度之间的过渡是平滑的。
任何帮助将不胜感激!
用interpolation我们可以做到这一点。最初,我们有 8 个值。我们想对这些进行插值,因此我们有 100 个值,而不是 8 个。如果您不熟悉插值,初始值仍将存在,我们在两者之间添加的所有值将作为我们计算的值之间的梯度已经有了。
在我们的例子中,我们仅在一维内插值并且可以使用 interp1。
Y = 1000 * [4.1962 3.5087 2.8783 2.3026 1.7775 1.2967 0.8516 0.4318]';
Y = interp1(Y, linspace(1,8))';
figure (2)
imagesc (Y)
axis ([-3 5 0 100])
axis off
colorbar
interp1
的第二个参数是linspace(1,8)
。 linspace 的默认行为是创建 100 个均匀分布的值,从第一个参数开始到最后一个参数结束。这些是我们插值的 x-values 。在这种情况下,我们实际上没有任何 x-values,但是由于 interp1
将我们所有的 Y
值视为 x 的函数,它假设 [=14= 的索引] 是 x-values 如果我们不给它任何进一步的说明。
最后,我们将轴更改为与您在问题中发布的图像更相似并得到以下内容。
之前...
之后...