傅立叶变换和全宽半最大值



我试图计算三个μ介子偏振信号的傅立叶变换,它们只是余弦函数乘以指数衰减。因此,进行傅立叶变换,我们将看到以相应频率为中心的加宽峰值。问题是,我已经尝试过做傅立叶变换,但我不知道它是否正确;此外,我试图使用scipy.stats.moment函数,使用2阶矩来计算FWHM:这正确吗?你能告诉我代码是否正确吗?我把这三个信号放在.npy文件中,以及用于傅立叶分析的代码。信号是信号[0]、信号[1]和信号[2],它们是10维的阵列。每个信号[k]包含10个极化函数(每个施加的磁场1个(,它们是400点的信号。相应的文件为signal_100、signal_110、signal_111,此处提供:https://github.com/JonathanFrassineti/UNDI-examples.啊,频率范围从0赫兹到40兆赫。非常感谢。

N = 400 # Number of signal points.
N1 = 40000000
T = 1./800. # Sampling spacing.
xf = np.fft.rfftfreq(N1, T)

yf1 = FWHM1 = sigma1 = delta1 = bhar1 = np.zeros(fields, dtype = object)
yf2 = FWHM2 = sigma2 = delta2 = bhar2 = np.zeros(fields, dtype = object)
yf3 = FWHM3 = sigma3 = delta3 = bhar3 = np.zeros(fields, dtype = object)
for j in range(fields): 
# Fourier transform.
yf1[j] = np.fft.rfft(signal[0][j])
yf2[j] = np.fft.rfft(signal[1][j])
yf3[j] = np.fft.rfft(signal[2][j])

FWHM1[j] = moment(yf1[j], moment=2)
FWHM2[j] = moment(yf2[j], moment=2)
FWHM3[j] = moment(yf3[j], moment=2)

sigma1[j] = np.sqrt(np.abs(FWHM3[j]))/2.355
sigma2[j] = np.sqrt(np.abs(FWHM2[j]))/2.355
sigma3[j] = np.sqrt(np.abs(FWHM3[j]))/2.355

delta1[j] = sigma1[j]/gamma_Cu
delta2[j] = sigma2[j]/gamma_Cu
delta3[j] = sigma3[j]/gamma_Cu

bhar1[j] = (((a*angtom)**3)/(1e-7*gamma_Cu*hbar))*delta1[j]
bhar2[j] = (((a*angtom)**3)/(1e-7*gamma_Cu*hbar))*delta2[j]
bhar3[j] = (((a*angtom)**3)/(1e-7*gamma_Cu*hbar))*delta3[j]

目前我在一个python项目中使用相同的对象。我有一组磁场B(x,y,z(的数据,我认为理想的情况是在事件中定期组织数据,并推导Fe(采样率(。

f(A, t)=A*( cos(2*pi*fe*t) - sin(2*pi*fe*t) 
B=[ 50, 50, 10, 3 ] # where each data is |B| normal at second 
res=[ f(a, time) for time, a in enumerate(B) ]
fourrier_transform=np.fft.fft( res )
frequency= fftfreq([ time for time in range(len(B)) ]) # U can use fftfreq provide by scipy

请在此项目中加入星号,研究资源以贡献

RFSignalToolkit github项目

最新更新