Matlab - 尝试使用具有网格坐标和每个点值的向量进行颜色图



我正在尝试使用另一个程序的输出数据在 matlab 中制作颜色图。我有 3 个向量,指示所需图像中每个点的 x 位置、y 位置(均以毫弧秒为单位,因为这表示黑洞周围环境的图像)和值(将被分配颜色)。我显然不能使用 pcolor,因为指示每个"像素"颜色的值不在矩阵中,而且我不知道除了 meshgrid 之外的另一种方法可以从矢量中创建矩阵,由于矢量的大小,这不起作用。

提前感谢您的任何帮助,我可能无法立即回复。

如果我们不假设 x,y 坐标的排列(即非单调性)和数据样本的稀疏性,那么从向量中获得漂亮图像的最佳方法是使用 TriScatteredInterp . 下面是一个示例:

% samplesToGrid.m
function [vi,xi,yi] = samplesToGrid(x,y,v)
F = TriScatteredInterp(x,y,v);
[yi,xi] = ndgrid(min(y(:)):max(y(:)), min(x(:)):max(x(:)));
vi = F(xi,yi);

下面是在 100x100 网格上获取 500 个"像素"样本并构建完整图像的示例:

% exampleSparsePeakSamples.m
x = randi(100,[500 1]); y = randi(100,[500 1]);
v = exp(-(x-50).^2/50) .* exp(-(y-50).^2/50) + 1e-2*randn(size(x));
vi = samplesToGrid(x,y,v);
imagesc(vi); axis image

如果坐标是整数值,戈登的答案将起作用,但图像将是备用的。

您可以根据 x 和 y 坐标将值分配给矩阵,然后使用 imagesc(或类似函数)。

% Assuming the X and Y coords start at 1
max_x = max(Xcoords);
max_y = max(Ycoords);
data = nan(max_y, max_x); % Note the order of y and x
indexes = sub2ind(size(data), max_y, max_x);
data(indexes) = Values;
imagesc(data); % note that NaN values will be colored with the minimum colormap value

最新更新