2015-05-13 7 views
2

Я использую imagesc для отображения данных из матриц. Матрицы содержат значения NaNs и Inf. Я могу перекрасить NaNs в цвет фона. Я использую карту цвета струи, и я хотел бы перекрасить значения Inf в черный или другой цвет, который не является цветом фона или на цветной схеме струи. Matlab по умолчанию цвета Inf значения такие же, как максимальное значение. Далее следует краткий примерный код, чтобы дать представление о том, что я имею в виду.Recolor imagesc Значения инф. В Matlab

a = [1 2 NaN; 4 Inf 6; 7 5 3]; 
%// Matrix of data 
    test_image= imagesc(a); 
%// Creates imagesc figure. 
    colormap('jet'); 
%// Uses jet color scheme. 
    set(test_image,'alphadata',~isnan(a)) 
%// Ignores NaN values and sets NaN values to background colour. 
    colorbar 
%// Adds a colorbar 

Таким образом, в этом примере я хотел бы, чтобы средняя ячейка (2,2) была черной. Не тот же цвет, что и максимальное значение 7 в левом нижнем углу (3,1).

ответ

1

Самый простой способ сделать это, чтобы определить свою собственную цветовую палитру:

cm = [jet(255) ; 0 0 0]; 
colormap(cm); 

imagesc(a); 
caxis([min(a(:)) max(a(:))+1]); 

Бест,

0

Я отправил этот вопрос на конкретном Matlab форуме управляет Matlab центральным. Люди не всегда отвечают на этот форум. Ответ, который я получил, не совсем сработал, но поставил меня на правильный путь. Я придумал следующее:

a = [1 2 NaN; 4 Inf 6; 7 5 3]; 
% sample data 
infRGB = reshape([0 0 0],1,1,3); 
%set to RGB triple for desired color for inf values in this case black 
%denoted by [0 0 0]. 
infimgdata = repmat(infRGB, size(a,1), size(a,2)); 
%same size as "a" but all the one color 
infimg = image(infimgdata, 'alphadata', ~isnan(a)); 
%plots an image based on 'infimgdata' excludes NaN's therefore making NaN 
%values white 
hold on 
%plot to same figure 
test_image = imagesc(a,'alphadata', ~(isnan(a)|isinf(a))); 
%plot data 
colormap(jet()); 
colorbar 
hold off 
% stop plotting to the same figure 

 Смежные вопросы

  • Нет связанных вопросов^_^