Python 将Excel中的时域数据转为频域,并保存频域幅度和相位信息
时间: 2024-03-20 20:41:12 浏览: 187
Hilbert变换-医疗电子中的便携式肌电信号采集及人体动作识别设计方案
在 Python 中,可以使用 `pandas` 和 `numpy` 库来读取 Excel 中的时域数据,并将其转换为频域数据。具体操作步骤如下:
1. 导入需要的库:
```python
import pandas as pd
import numpy as np
from scipy.fft import fft
```
2. 读取 Excel 文件中的时域数据。可以使用 `pandas` 库中的 `read_excel` 函数来读取 Excel 文件,然后将时域数据存储为 `numpy` 数组。
```python
# 假设文件名为 data.xlsx,时域数据在 Sheet1 中的 A 列中
data = pd.read_excel('data.xlsx', sheet_name='Sheet1', usecols='A')
waveform = data.to_numpy().flatten()
```
3. 进行傅里叶变换,得到频域数据。可以使用 `scipy` 库中的 `fft` 函数进行傅里叶变换。得到的频域数据是一个复数数组,其中每个元素表示对应频率的幅度和相位信息。
```python
spectrum = fft(waveform)
```
4. 将频域数据的幅度和相位信息分别保存到文件中。可以使用 `numpy` 库中的 `save` 函数将数组保存到文件中。为了便于后续读取,可以选择保存为 `.npy` 格式。
```python
# 假设幅度信息保存为 amplitude.npy,相位信息保存为 phase.npy
np.save('amplitude.npy', np.abs(spectrum))
np.save('phase.npy', np.angle(spectrum))
```
需要注意的是,得到的频域数据是一个复数数组,其中每个元素表示对应频率的幅度和相位信息。如果需要同时保存幅度和相位信息,可以将幅度和相位信息分别保存为两个文件,或者将幅度和相位信息合并到一个数组中再保存。
完整代码示例:
```python
import pandas as pd
import numpy as np
from scipy.fft import fft
# 读取 Excel 文件中的时域数据
data = pd.read_excel('data.xlsx', sheet_name='Sheet1', usecols='A')
waveform = data.to_numpy().flatten()
# 进行傅里叶变换,得到频域数据
spectrum = fft(waveform)
# 将频域数据的幅度和相位信息分别保存到文件中
np.save('amplitude.npy', np.abs(spectrum))
np.save('phase.npy', np.angle(spectrum))
```
在实际应用中,需要根据具体需求调整代码,并进行错误处理和异常处理。
阅读全文