Files
Building/README.md
CrbnsCat10n 1b3e836d98 modified: .gitignore
modified:   README.md
	new file:   requirement.txt
	new file:   scripts_2/README.md
	new file:   scripts_2/__init__.py
	new file:   scripts_2/__pycache__/__init__.cpython-310.pyc
	new file:   scripts_2/__pycache__/signal_utils.cpython-310.pyc
	new file:   scripts_2/__pycache__/task3_identify.cpython-310.pyc
	new file:   scripts_2/signal_utils.py
	new file:   scripts_2/task3_identify.py
	new file:   scripts_3/README.md
	new file:   scripts_3/__init__.py
	new file:   scripts_3/__pycache__/__init__.cpython-310.pyc
	new file:   scripts_3/__pycache__/task4_predict_freq.cpython-310.pyc
	new file:   scripts_3/task4_predict_freq.py
2026-05-06 16:16:57 +08:00

5.0 KiB
Raw Blame History

建筑结构课程评测代码总览 (Course Evaluation Toolkit)

项目简介

本项目面向建筑结构振动课程评测场景,提供三类核心功能:

  1. 根据基底简谐激励频率,预测模型顶部加速度 Z 向响应的整体均方根 RMS 值。
  2. 根据顶部自由衰减响应,识别结构一阶自振频率和阻尼比。
  3. 根据顶部强迫振动响应,反推出输入简谐波的激振频率。

项目包含三套脚本目录:scriptsscripts_2scripts_3。三套脚本分别对应 RMS 预测、结构动力特性识别、激振频率逆向预测。

课程评测流程

教师评测时可按以下流程使用代码:

  1. 顶部响应 RMS 预测 教师进行一组基底激励输入试验。对每组简谐波频率,使用 scripts 目录下的脚本预测顶部加速度 Z 向响应的整体 RMS 值。
  2. 结构动力参数识别 教师对模型略微做出改动后,采集顶部自由衰减响应,使用 scripts_2 目录下的脚本识别一阶自振频率和阻尼比。
  3. 激振频率逆向预测 教师再次进行一组基底激励输入试验,使用 scripts_3 目录下的脚本,根据顶部加速度响应反推输入简谐波的激振频率。

项目结构

Building-main/
├── downloads/                # 数据目录
│   └── Non_TMD/
│       ├── free_vib/         # 自由衰减数据
│       ├── train/            # 简谐波训练数据
│       ├── val/              # 简谐波验证数据
│       └── test/             # 其他测试数据
├── scripts/                  # 任务 1顶部响应 RMS 预测
├── scripts_2/                # 任务 2自振频率与阻尼比识别
├── scripts_3/                # 任务 3激振频率逆向预测
├── requirement.txt           # Python 依赖清单
└── README.md                 # 总说明文档

三套脚本说明

scripts

该目录用于完成顶部响应 RMS 预测任务。

  • 输入为基底传感器信号与文件频率标签。
  • 输出为顶部加速度 Z 向响应的整体 RMS 预测值。
  • 主要脚本包括 train_final.pyevaluate.pypredict_single.py

scripts_2

该目录用于完成结构动力特性识别任务。

  • 数据来源为 downloads/Non_TMD/free_vib/ 目录下的自由衰减 CSV 文件。
  • 使用顶部响应传感器 WSMS00007value3 列。
  • 输出一阶自振频率、阻尼比与诊断图像。

scripts_3

该目录用于完成激振频率逆向预测任务。

  • 使用强迫振动数据,如 downloads/Non_TMD/val/downloads/Non_TMD/test/
  • 使用顶部响应传感器 WSMS00007value3 列识别主频。
  • 主要脚本为 task4_predict_freq.py

传感器约束

  • 顶部响应传感器 任务 2 和任务 3 统一使用 WSMS00007value3 列。
  • 基底输入传感器 WSMS00012value1 列用于参考与对照。
  • 任务 3 频率逆推 激振频率预测直接基于顶部响应频谱结果。

环境准备

项目建议使用 Python 3.10 创建新的虚拟环境,再安装根目录的 requirement.txt

1. 创建虚拟环境

py -3.10 -m venv .venv

2. 激活虚拟环境

.\.venv\Scripts\activate

3. 安装依赖

python -m pip install -r requirement.txt

requirement.txt 已包含三套脚本使用到的核心依赖:

  • numpy
  • pandas
  • scipy
  • matplotlib
  • scikit-learn

使用方法

1. 顶部响应 RMS 预测

对单个简谐波文件预测顶部响应 RMS

python scripts\predict_single.py --file downloads\Non_TMD\val\harmonic_5mm_0.75Hz.csv

对全量样本进行评估:

python scripts\evaluate.py

如需重新训练模型:

python scripts\train_final.py

2. 自由衰减法识别自振频率和阻尼比

对自由衰减文件执行识别:

python scripts_2\task3_identify.py --file downloads\Non_TMD\free_vib\free_decay.csv

脚本输出内容包括:

  • 一阶自振频率 f_n
  • 对数衰减率 delta
  • 阻尼比 zeta
  • 原始波形、滤波结果与包络线图像

3. 根据顶部响应反推激振频率

对单个强迫振动文件执行频率逆推:

python scripts_3\task4_predict_freq.py --file downloads\Non_TMD\val\harmonic_5mm_0.75Hz.csv

脚本输出内容包括:

  • 稳态段采样范围
  • 预测激振频率
  • 文件名中的频率真值
  • 绝对误差
  • 时域与频域诊断图像

结果输出

运行脚本后,图像与评测结果默认保存到 evaluation_outputs/ 目录下,对应子目录如下:

  • evaluation_outputs/task1_final/
  • evaluation_outputs/task3_identify/
  • evaluation_outputs/task4_predict_freq/

说明

  • scripts 目录负责 RMS 预测。
  • scripts_2 目录负责自由衰减识别。
  • scripts_3 目录负责激振频率逆推。
  • 数据文件命名中包含频率标签时,脚本会自动提取真值用于误差统计。