imagesc показывает значения NaN как не NaN
Красное пятно на следующем изображении показывает область численной модели. Зеленое пятно показывает Землю.
Я хочу создать матрицу со значениями высоты над поверхностью Земли для точек в области модели.
Я использую следующий код:
close all
clear all
%%%slope coefficient
a=1/50;
%%%resolution
dx = 500;
dz = 2.5;
%%%define domain
xi = 0:dx:200e3;
zi = 0:dz:6e2;
m=length(zi);%domain dimension
n=length(xi);%domain dimension
%%%max z where the slope starts
zs = find(zi==max(zi));
for ii=1:n %for every x
zslope = -a*xi(ii)+zi(zs);%equation of the slope
zz(ii)=zslope;
if zslope>=0 %if the slope is still in the domain (z>0)
for jj=1:m %for every z
if zi(jj)>=zslope %above the slope
Z(jj,ii) = zi(jj)-zslope; %height above the slope
elseif zi(jj)<zslope %below the slope (ground)
Z(jj,ii)=NaN;
end
end%for on z
elseif zslope<0 %the slope is no longer in the domain
for jj=1:m %for every z
Z(jj,ii) = zi(jj)-zslope; %height above the slope
end
end
end%for on x
Это, кажется, работает нормально:
figure;
imagesc(Z)
colorbar
на самом деле значение в точке 240 равно 600, как и следовало ожидать.
ЭТА ПРОБЛЕМА
Проблема в том, что в рабочей области Z
матрица полна NaN
s!
Как может imagesc
не показывать NaN
значения, когда они NaN
s?
нота
если я прокомментирую строки
elseif zi(jj)<zslope %below the slope (ground)
Z(jj,ii)=NaN;
нет проблем.
1 ответ
Решение
NaN
отображаются как самое низкое значение в цветовой панели (в противоположность). Если вы хотите удалить значения NaN из графика, вы можете сделать это, используя isnan
и AlphaData
имущество.
imagesc(Z,'AlphaData',~isnan(Z))