python对gnss信噪比数据文件夹下多个xlsx文件存储进行Lomb Scargle Periodogram算法获取频率并保存最大频率作图
时间: 2024-05-15 09:16:09 浏览: 150
以下是实现该功能的Python代码:
```python
import os
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from astropy.stats import LombScargle
# 设置文件夹路径
folder_path = 'gnss信噪比数据文件夹路径'
# 遍历文件夹中的xlsx文件
for file_name in os.listdir(folder_path):
if file_name.endswith('.xlsx'):
file_path = os.path.join(folder_path, file_name)
# 读取xlsx文件数据
data = pd.read_excel(file_path)
snr = data['SNR'].values
time = data['Time'].values
# 对时间数据进行归一化处理
time = (time - time[0]) / 3600 / 24
# 计算Lomb Scargle Periodogram
frequency, power = LombScargle(time, snr).autopower()
# 获取最大频率
max_frequency = frequency[np.argmax(power)]
# 保存最大频率
with open(file_name[:-5] + '_max_frequency.txt', 'w') as f:
f.write(str(max_frequency))
# 绘制频谱图
plt.figure()
plt.plot(frequency, power)
plt.xlabel('Frequency (1/day)')
plt.ylabel('Power')
plt.title(file_name[:-5] + ' SNR Spectrum')
plt.savefig(file_name[:-5] + '_spectrum.png')
plt.close()
```
该代码首先设置了一个文件夹路径,然后遍历该文件夹中的所有xlsx文件。对于每个文件,它读取文件数据,并使用Lomb Scargle Periodogram算法计算频率和功率。然后,它获取最大频率,并将其保存到一个文本文件中。最后,它绘制频谱图,并将其保存为一个png文件。
阅读全文