首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在MATLAB中计算高斯曲线的调制传递函数?

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

Stack Overflow用户
提问于 2019-07-24 15:00:21
回答 2查看 529关注 0票数 0

我正在尝试用MATLAB求一条高斯拟合曲线的调制传递函数。高斯曲线如下:

X轴是距离(form -15mm to 15mm),y轴是计数(幅度)。我使用下面的代码找到高斯曲线的傅里叶变换

代码语言:javascript
复制
  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

代码语言:javascript
复制
FF_mag_nw = FF_mag(1:(length(FF_y)/32));
plot(FF_mag_nw);

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

我对X轴感到困惑。在lines per mm中X轴的范围是多少?有人能给我一个想法来计算MTF图的X轴吗?

提前感谢!手工操作

EN

回答 2

Stack Overflow用户

发布于 2020-04-04 22:26:20

matlab手册中有非常详细的计算说明。例如,查看this

代码语言:javascript
复制
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)|')
票数 0
EN

Stack Overflow用户

发布于 2019-11-15 22:52:12

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

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57177001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档