如何在MATLAB中计算高斯曲线的调制传递函数?

时间:2019-07-24 07:00:21

标签: matlab fft frequency-analysis

我正在尝试使用MATLAB查找高斯拟合曲线的调制传递函数。 高斯曲线如下: Gaussian Curve

x轴为距离(格式-15mm to 15mm),y轴为count(量级)。 我使用以下代码从高斯曲线中找到傅立叶变换

  FFT_y = fft(y); %take fourier transform
  FF_mag = abs(FFT_y )/(length(FFT_y )); %find magnitude
  FF_mag = (FF_mag-min(FF_mag))./(max(FF_mag)-min(FF_mag)); %normalize magnitude

我使用以下代码裁剪了FF_mag

FF_mag_nw = FF_mag(1:(length(FF_y)/32));
plot(FF_mag_nw);

我在上面的代码中使用32来获取图形的主要部分,并得到了如下的MTF图: MTF

我对X轴感到困惑。 lines per mm中X轴的范围是多少? 谁能帮助我给出一个计算MTF图X轴的想法?

预先感谢! Manu

2 个答案:

答案 0 :(得分:0)

matlab手册对计算非常具体。例如,检出this

dx = 0.1
x = -15:dx:15;      
Fs = 1/dx;          % Sampling frequency
L = length(x);      % Signal length
sigma = 5;
amp   = 437500;
y     = amp/sqrt(2*pi*sigma^2) * exp(-x^2/(2*sigma^2));

n = 2^nextpow2(L);
Y = fft(y,n);
f = Fs*(0:(n/2))/n;
P = abs(Y/n);
plot(f,P(1:n/2+1)) 
title('Gaussian Pulse in Frequency Domain')
xlabel('Frequency f [in units of 1/dx]')
ylabel('|P(f)|')

答案 1 :(得分:-1)

您对实际空间高斯使用了多少点。如果此数字为N,则要将fft x轴转换为(1 / mm),应除以N。