Python 傅里叶变换与全宽半极大值
我试图计算三个μ子极化信号的傅里叶变换,它们是简单的余弦函数乘以指数衰减。 所以,做傅里叶变换,我们将看到以相应频率为中心的加宽峰。 问题是我已经尝试过做傅里叶变换,但我不知道它是否正确;此外,我正在尝试使用scipy.stats.moment函数计算半高宽,使用第二个力矩:正确吗? 你能告诉我密码是否正确吗? 我在这里把这三个信号放在.npy文件中,以及用于傅里叶分析的代码。 信号为信号[0]、信号[1]和信号[2],为10维阵列。 每个信号[k]包含10个极化函数(每个外加磁场1个),它们是400个点的信号。 相应的文件是信号_100、信号_110、信号_111,这里提供: . 啊,频率从0赫兹到40兆赫。 谢谢大家!Python 傅里叶变换与全宽半极大值,python,numpy,scipy,fft,scipy.stats,Python,Numpy,Scipy,Fft,Scipy.stats,我试图计算三个μ子极化信号的傅里叶变换,它们是简单的余弦函数乘以指数衰减。 所以,做傅里叶变换,我们将看到以相应频率为中心的加宽峰。 问题是我已经尝试过做傅里叶变换,但我不知道它是否正确;此外,我正在尝试使用scipy.stats.moment函数计算半高宽,使用第二个力矩:正确吗? 你能告诉我密码是否正确吗? 我在这里把这三个信号放在.npy文件中,以及用于傅里叶分析的代码。 信号为信号[0]、信号[1]和信号[2],为10维阵列。 每个信号[k]包含10个极化函数(每个外加磁场1个),它们是
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]