2017-02-14 2 views
0

Я учусь FFT из этого учебника: https://www.mathworks.com/help/images/fourier-transform.html#f21-16704MATLAB Официальная функция colocap в документе doc не работает для imshow?

Так что я попробовал пример на веб-сайте в MATLAB. Тем не менее, изображение частотной области является оттенком серого, а не цветным, как определено функцией colormap. Единственный способ, которым я мог бы сделать это красочным, - это заменить функцию imshow с приведенной ниже версией.

Почему функция colormap не работает в этом случае?

f = zeros(30,30); 
f(5:24,13:17) = 1; 
imshow(f,'InitialMagnification','fit') 

figure; 
F = fft2(f); 
F2 = log(abs(F)); 
%imshow(F2,[-1 5],'InitialMagnification','fit','Colormap',jet(256)); % this works 
imshow(F2,[-1 5],'InitialMagnification','fit'); 
colormap(jet(256)); colorbar     % not work, gets greyscale image 
+0

Я не могу воспроизвести проблему - она ​​отлично работает на моей машине. Может быть, вы выполняете другой код, чем код, который вы опубликовали? Например: 'imshow (F2, [- 1 5], 'InitialMagnification', 'fit'); colormap (jet (256)); colorbar; imshow (F2, [- 1 5], 'InitialMagnification', 'fit'); ' – Rotem

+0

Попробуйте следующее: добавьте команду' figure' перед каждым 'imshow' (в той же строке кода) следующим образом:' figure; imshow (f, 'InitialMagnification', 'fit') '...' figure; imshow (F2, [- 1 5], 'InitialMagnification', 'fit'); '... – Rotem

ответ

0

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

colormap(gca,jet(256)); colorbar 
+0

Это действительно работает, THX для этого , Однако в соответствии с документацией для функции colormap: colormap (map) устанавливает цветовую карту для текущей фигуры в цветовой карте, указанной картой. Цветовая палитра рисунка влияет на все оси на рисунке, если вы не установили цветовую карту осей отдельно. Поэтому я немного сытый, потому что он говорит «влияет на все оси». –