1
我嘗試對一組數據(它們是10張圖片,在中間畫一個'T')進行FFT並計算給定區域的頻譜大小。在Matlab中計算一個區域的頻譜大小
這裏是我的代碼:
for i=1:10
filename = sprintf('T%d.GIF', i);
%fourier transform and showing
f = imread(filename); %read in image
z = fft2(double(f)); % do fourier transform
q = fftshift(z); % puts u=0,v=0 in the centre
Magq = log(abs(q)); % magnitude spectrum
Phaseq=angle(q); % phase spectrum
imagesc(log(abs(q)+1)); % Usually for viewing purposes:
colorbar;
end
上面的圖片是運行我的代碼之後公佈的結果。下面的圖片是我想要計算的區域。
我使用
T(i,1)=mean(mean(Magq(1:150,300:340)))+mean(mean(Magq(260:400,300:340)))+mean(mean(Magq(190:210,160:320)))+mean(mean(Magq(190:210,320:480)));
來計算頻譜幅度,但這樣做的結果總是-Inf
。這主要是因爲mean(mean(Magq(1:150,300:340)))
和mean(mean(Magq(260:400,300:340)))
都等於-Inf
。
任何人都可以給我任何提示,爲什麼結果是-Inf
?
你是我找到我出錯的地方了。我應該忽略-Inf,因爲它不會影響我的最終結果。無論如何非常感謝! – newinjava