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