1

我正在尝试计算三个μ子极化信号的傅里叶变换,它们只是余弦函数乘以指数衰减。因此,进行傅里叶变换,我们将看到以相应频率为中心的加宽峰。问题是我已经尝试过傅里叶变换,但我不知道它是否正确;此外,我正在尝试使用 scipy.stats.moment 函数,使用第二个时刻来计算 FWHM:它正确吗?你能告诉我代码是否正确吗?我将三个信号放在 .npy 文件中,以及用于傅里叶分析的代码。信号是signal[0]、signal[1]和signal[2],10维数组。每个信号[k] 包含 10 个极化函数(每个施加磁场 1 个),它们是 400 个点的信号。 https://github.com/JonathanFrassineti/UNDI-examples。啊,频率范围从 0 Hz 到 40 MHz。谢谢!

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]
4

1 回答 1

0

目前我在一个具有相同对象的python项目中工作。我有一组磁场 B(x,y,z) 的数据,我认为理想的做法是在事件中定期组织您的数据并推断 Fe (sampling_rate)。

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 项目

于 2021-12-17T09:33:32.720 回答