gpt4 book ai didi

matlab - 在 Matlab/Octave 中创建颜色图/热图

转载 作者:太空宇宙 更新时间:2023-11-03 19:34:05 25 4
gpt4 key购买 nike

我正在使用类似于 Matlab 的 Octave 3.8.1,我正在尝试创建一个颜色图/热图来看起来像这样

Map

我有一个数组 a1,其中第 1 列是 x,第 2 列是 y,第 3 列是强度。我知道我可以使用 plot(x,y) 绘制二维图,但如何在图中添加/显示强度(第 3 列)。

a1=
[225.512 2.64537 0.00201692
225.512 2.64537 0.00201692
226.94 1.59575 0.00225557
226.94 1.59575 0.00225557
227.31 1.70513 0.002282
227.31 1.70513 0.002282
227.729 5.34308 0.00205535
227.729 5.34308 0.00205535
227.975 5.12741 0.001822
227.975 5.12741 0.001822]

完整数据集位于此处 https://www.dropbox.com/s/mmhpbelnjoondho/full.csv

请注意,这只是示例数据。

最佳答案

a1=
[225.512 2.64537 0.00201692
225.512 2.64537 0.00201692
226.94 1.59575 0.00225557
226.94 1.59575 0.00225557
227.31 1.70513 0.002282
227.31 1.70513 0.002282
227.729 5.34308 0.00205535
227.729 5.34308 0.00205535
227.975 5.12741 0.001822
227.975 5.12741 0.001822]

为了绘制热图,您需要将数据强度化为图像(即二维矩阵)。然后您可以使用 imagescimshow 绘制它。

为此,您首先需要获得 x 值的二维矩阵 (X),以及对应的 y 值的二维矩阵 (Y)这样您就可以插入 z 值网格 (Z)。

x = a1(:,1);
y = a1(:,2)
z = a1(:,3)
n = 256;
[X, Y] = meshgrid(linspace(min(x),max(x),n), linspace(min(y),max(y),n));
Z = griddata(x,y,z,X,Y);
%// Remove the NaNs for imshow:
Z(isnan(Z)) = 0;
imshow(Z)

您可能希望将 Z 规范化为从 0(或者对于此数据,使最低非零值等于零)到 1 提高对比度:

m = min(Z(Z~=0));
M = max(Z(Z~=0));
imshow((Z-m)/(M-m));

关于matlab - 在 Matlab/Octave 中创建颜色图/热图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33610420/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com