Browse Source

update

joschka_dev
Jianshun Gao 1 year ago
parent
commit
8fddd8bb21
  1. 73
      Analyser/FFTAnalyser.py

73
Analyser/FFTAnalyser.py

@ -7,49 +7,44 @@ from datetime import datetime
import xrft
import finufft
class FFTAnalyser():
def __init__(self) -> None:
pass
def fft(dataArray, **kwargs):
return xrft.fft(dataArray, **kwargs)
def ifft(dataArray, **kwargs):
return xrft.ifft(dataArray, **kwargs)
def fft_nutou(dataArray, modeNum, **kwargs):
def fft(self, dataArray, **kwargs):
return xrft.fft(dataArray, **kwargs)
data = dataArray.to_numpy()
data = data.astype('complex128')
def ifft(self, dataArray, **kwargs):
return xrft.ifft(dataArray, **kwargs)
time = dataArray[dataArray.dims[0]].to_numpy()
def fft_nutou(self, dataArray, modeNum):
data = dataArray.to_numpy()
data = data.astype('complex128')
time = dataArray[dataArray.dims[0]].to_numpy()
if isinstance(time[0], type(np.datetime64(500,'s'))):
time = time.astype(float)
time = time - time[0]
freqUpLim = 1 / np.min(np.abs(time - np.roll(time, 1))) * 1e9
else:
time = time.astype(float)
time = time - time[0]
freqUpLim = 1 / np.min(np.abs(time - np.roll(time, 1)))
if isinstance(time[0], type(np.datetime64(500,'s'))):
time = time.astype(float)
time = time - time[0]
freqUpLim = 1 / np.min(np.abs(time - np.roll(time, 1))) * 1e9
else:
time = time.astype(float)
time = time - time[0]
freqUpLim = 1 / np.min(np.abs(time - np.roll(time, 1)))
print(freqUpLim)
time = time / time.max() * 2 * np.pi
# calculate the transform
res = xr.DataArray(
data=finufft.nufft1d1(time, data, modeNum),
dims=['freq'],
coords={
"freq":np.linspace(-freqUpLim/2, freqUpLim/2, modeNum)
}
)
return res
print(freqUpLim)
def ifft_nutou(self, dataArray, modeNum):
pass
time = time / time.max() * 2 * np.pi
# calculate the transform
res = xr.DataArray(
data=finufft.nufft1d1(time, data, modeNum, **kwargs),
dims=['freq'],
coords={
"freq":np.linspace(-freqUpLim/2, freqUpLim/2, modeNum)
}
)
return res
def ifft_nutou(dataArray, modeNum):
pass
Loading…
Cancel
Save