我正在尝试使用来自另一个程序的输出数据在 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
如果坐标是 integer-valued , Gordon 的答案将起作用,但图像将是备用的。
您可以根据 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