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

165 lines
5.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 建筑结构课程评测代码总览 (Course Evaluation Toolkit)
## 项目简介
本项目面向建筑结构振动课程评测场景,提供三类核心功能:
1. 根据基底简谐激励频率,预测模型顶部加速度 Z 向响应的整体均方根 RMS 值。
2. 根据顶部自由衰减响应,识别结构一阶自振频率和阻尼比。
3. 根据顶部强迫振动响应,反推出输入简谐波的激振频率。
项目包含三套脚本目录:`scripts``scripts_2``scripts_3`。三套脚本分别对应 RMS 预测、结构动力特性识别、激振频率逆向预测。
## 课程评测流程
教师评测时可按以下流程使用代码:
1. **顶部响应 RMS 预测**
教师进行一组基底激励输入试验。对每组简谐波频率,使用 `scripts` 目录下的脚本预测顶部加速度 Z 向响应的整体 RMS 值。
2. **结构动力参数识别**
教师对模型略微做出改动后,采集顶部自由衰减响应,使用 `scripts_2` 目录下的脚本识别一阶自振频率和阻尼比。
3. **激振频率逆向预测**
教师再次进行一组基底激励输入试验,使用 `scripts_3` 目录下的脚本,根据顶部加速度响应反推输入简谐波的激振频率。
## 项目结构
```text
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.py``evaluate.py``predict_single.py`
### `scripts_2`
该目录用于完成结构动力特性识别任务。
- 数据来源为 `downloads/Non_TMD/free_vib/` 目录下的自由衰减 CSV 文件。
- 使用顶部响应传感器 `WSMS00007``value3` 列。
- 输出一阶自振频率、阻尼比与诊断图像。
### `scripts_3`
该目录用于完成激振频率逆向预测任务。
- 使用强迫振动数据,如 `downloads/Non_TMD/val/``downloads/Non_TMD/test/`
- 使用顶部响应传感器 `WSMS00007``value3` 列识别主频。
- 主要脚本为 `task4_predict_freq.py`
## 传感器约束
- **顶部响应传感器**
任务 2 和任务 3 统一使用 `WSMS00007``value3` 列。
- **基底输入传感器**
`WSMS00012``value1` 列用于参考与对照。
- **任务 3 频率逆推**
激振频率预测直接基于顶部响应频谱结果。
## 环境准备
项目建议使用 **Python 3.10** 创建新的虚拟环境,再安装根目录的 `requirement.txt`
**1. 创建虚拟环境**
```bash
py -3.10 -m venv .venv
```
**2. 激活虚拟环境**
```bash
.\.venv\Scripts\activate
```
**3. 安装依赖**
```bash
python -m pip install -r requirement.txt
```
`requirement.txt` 已包含三套脚本使用到的核心依赖:
- `numpy`
- `pandas`
- `scipy`
- `matplotlib`
- `scikit-learn`
## 使用方法
### 1. 顶部响应 RMS 预测
对单个简谐波文件预测顶部响应 RMS
```bash
python scripts\predict_single.py --file downloads\Non_TMD\val\harmonic_5mm_0.75Hz.csv
```
对全量样本进行评估:
```bash
python scripts\evaluate.py
```
如需重新训练模型:
```bash
python scripts\train_final.py
```
### 2. 自由衰减法识别自振频率和阻尼比
对自由衰减文件执行识别:
```bash
python scripts_2\task3_identify.py --file downloads\Non_TMD\free_vib\free_decay.csv
```
脚本输出内容包括:
- 一阶自振频率 `f_n`
- 对数衰减率 `delta`
- 阻尼比 `zeta`
- 原始波形、滤波结果与包络线图像
### 3. 根据顶部响应反推激振频率
对单个强迫振动文件执行频率逆推:
```bash
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` 目录负责激振频率逆推。
- 数据文件命名中包含频率标签时,脚本会自动提取真值用于误差统计。