Matlab图像绘制纳米值

Mer*_*ury 3 matlab plot

当使用imagesc可视化包含NaN值的数据时,Matlab将它们视为最小值(灰色表示它们是黑色,喷射蓝色等).jet colormap既不包含黑色也不包含白色.是否可以将nan值显示为黑/白?例如:

data = [0 0 0 ; .5 .5 .5 ;1 1 1;nan nan nan];
Run Code Online (Sandbox Code Playgroud)

应该产生蓝绿红黑条.

谢谢

Bil*_*ham 11

我编写了一个自定义函数来将NaN值显示为透视,即alpha值为0.

function h = imagesc2 ( img_data )
% a wrapper for imagesc, with some formatting going on for nans

% plotting data. Removing and scaling axes (this is for image plotting)
h = imagesc(img_data);
axis image off

% setting alpha values
if ndims( img_data ) == 2
  set(h, 'AlphaData', ~isnan(img_data))
elseif ndims( img_data ) == 3
  set(h, 'AlphaData', ~isnan(img_data(:, :, 1)))
end

if nargout < 1
  clear h
end
Run Code Online (Sandbox Code Playgroud)

因此,NaNs将显示与图形背景颜色相同的颜色.如果删除该线axis image off,则NaNs将显示与轴背景颜色相同的颜色.该功能假定输入图像的大小n x m(单通道)或n x m x 3(三通道),因此可能需要根据您的使用进行一些修改.

使用您的数据:

data = [0 0 0 ; .5 .5 .5 ;1 1 1;nan nan nan];
imagesc2(data);
axis on
set(gca, 'Color', [0, 0, 0])
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述