2016-08-22 3 views
0

Красный патч на следующем изображении показывает область числовой модели. Зеленый патч показывает Землю.imagesc, показывающий значения NaN как не NaN

domain of the numerical model

Я хочу, чтобы создать матрицу со значениями высот над поверхностью Земли для точек в области модели.

Я использую следующий код:

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 

Z values

на самом деле значение в точке 240 составляет 600, как можно было бы ожидать.

ПРОБЛЕМА

Проблема заключается в том, что в рабочей области Z матрица полна NaN с!

Как можно 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)) 
Смежные вопросы