python脚本练习-fk。

  以下脚本可完成功能:

1.数据预处理与筛选

  • 台站管理:从station.lst读取台站信息(网络名、台站名、经纬度)。
  • 数据加载:按日期遍历数据目录,加载每个台站的LHZ分量SAC文件。
  • 有效性检查:仅使用具有有效数据且台站数≥3天的数据。

2.时间窗口分割

  • 将每天数据分割为1800秒长、50%重叠的窗口(步长900秒)。
  • 对每个窗口提取对应时间段的数据。

3. 频域分析

  • 滤波与窗函数:对每个台站数据加汉宁窗,去均值。
  • FFT计算:使用下一个2的幂次长度进行FFT,提取[fmin, fmax]频段的频谱。

4. 聚束分析(FK分析)

  • 参数网格: 方位角(az_grid):0°\~360°,步长5°。 速度(speed_grid):1\~5 km/s,步长0.05 km/s(通过慢度1/v参与计算)。
  • 波束功率计算:
  • 坐标转换:将台站经纬度转换为以平均位置为中心的直角坐标系(单位:公里)。
  • 相位延迟计算: 对每个方位角,计算台站投影位置proj = xsin(az) + ycos(az)。 对每个速度,计算时延delays = proj * 慢度(s=1/v)。
  • 导向向量:生成复相位因子exp(-jf*delays)。
  • 波束频谱:将各台站频谱与导向向量加权求和,得到波束频谱。
  • 功率归一化:计算波束功率并除以总功率(各台站功率之和)。

5.结果可视化

  • 雷达图绘制: 极坐标下,横轴为方位角,纵轴为速度,颜色表示归一化功率。 标注最大能量点,显示其方位角和速度。
  • 输出:每天生成一张PNG图片,保存至arr_figures目录。

脚本

do_array_fk.py