如何在MATLAB/Simulink中导出仿真数据生成输电线路故障标注数据集
Simulink输电线路故障数据集导出与标注实操方法
1 波形数据导出到MATLAB工作区配置
你现在已经能在示波器看到正确波形,不用每次手动从示波器存数,两种稳定的导出方式选一个就行:
- 直连测量端导出(效率最高,适配你已搭好的V-I测量环节)
在三相电压、三相电流的测量输出端口分别接To Workspace模块,不需要经过示波器。双击模块逐个设置参数:- 变量名直接按测量量命名,比如
V_phaseA、V_phaseB、V_phaseC、I_phaseA、I_phaseB、I_phaseC,不要用默认的统一输出变量,后期拆分数据浪费时间 - 保存格式选
Array,额外加一个Clock模块接To Workspace存时间向量t,模块采样时间和仿真固定步长保持一致,常用1e-5s(对应100kHz采样率,和现场故障录波设备精度匹配) - 不建议选
Structure类格式,后期提取字段步骤冗余
- 变量名直接按测量量命名,比如
- 示波器端直接导(不用改现有接线)
双击你已经接好的示波器,打开顶部配置属性栏,找到「日志」选项,勾选「将数据记录到工作区」,自定义变量名比如scope_wave,保存格式选Array,仿真运行后工作区会自动生成带时间轴的完整波形矩阵。
关键提醒:仿真求解器必须选固定步长(离散或者连续固定步长都可以),不要用默认变步长,否则导出的波形采样点间隔不均匀,后期对齐故障标签会出大量错。
2 批量生成多场景故障数据
你已经接入了三相故障模块,不用每次手动改参数跑单次仿真,写个简单的循环脚本就能一次性生成全场景故障数据:
- 先梳理需要覆盖的工况:首先是全故障类型,包括单相接地(AG/BG/CG)、两相相间短路(AB/BC/CA)、两相接地短路(ABG/BCG/CAG)、三相短路(ABC/ABCG),再加正常运行工况做对照;其次覆盖不同过渡电阻、不同故障位置、不同故障初始角的场景,数据集泛化性才够。
- 用
set_param函数批量修改三相故障模块的参数,配合sim函数循环调用仿真,参考脚本如下:
% 配置仿真基础参数 fault_type = {'AG','BG','CG','AB','BC','CA','ABG','BCG','CAG','ABC','normal'}; Rf_set = [0, 2, 5, 10, 20, 50]; % 过渡电阻取值,单位Ω fault_pos_set = [10, 30, 50, 70, 90]; % 故障点距送端距离占线路总长比例,单位% fs = 1e5; % 采样率 sim_duration = 0.2; % 单次仿真时长0.2s,覆盖故障前2个周波、故障过程、故障后1个周波即可 % 循环遍历所有工况 for ft_idx = 1:length(fault_type) for rf_idx = 1:length(Rf_set) for pos_idx = 1:length(fault_pos_set) % 以下模块路径替换为你自己模型里的实际路径 % 设置故障相 set_param('line_fault_model/Three-Phase Fault','FaultA',num2str(contains(fault_type{ft_idx},'A'))); set_param('line_fault_model/Three-Phase Fault','FaultB',num2str(contains(fault_type{ft_idx},'B'))); set_param('line_fault_model/Three-Phase Fault','FaultC',num2str(contains(fault_type{ft_idx},'C'))); set_param('line_fault_model/Three-Phase Fault','GroundFault',num2str(contains(fault_type{ft_idx},'G'))); % 设置过渡电阻 set_param('line_fault_model/Three-Phase Fault','FaultResistance',num2str(Rf_set(rf_idx))); % 若模型做了故障位置切换逻辑,在此处添加对应参数设置 % 运行仿真 sim_res = sim('line_fault_model','FixedStep',num2str(1/fs),'StopTime',num2str(sim_duration)); % 单工况数据存为独立mat文件,避免内存溢出 save(sprintf('./dataset/%s_Rf%d_pos%d.mat',fault_type{ft_idx},Rf_set(rf_idx),fault_pos_set(pos_idx)),'sim_res'); end end end
跑批量仿真前先手动运行2-3组不同参数的工况,核对导出的波形和示波器显示完全一致,再启动全量循环,避免参数配置错误生成无效数据。
3 数据集规范标注
所有仿真数据导出完成后,按后续算法训练需求统一做标签对齐即可:
- 统一样本窗长:比如固定截取故障前1个周波、故障后3个周波的时序段作为单个样本,所有样本的采样点数量保持一致
- 标签字段至少包含:故障类型编码、过渡电阻值、故障位置占比、故障起始采样点索引、三相电压/电流时序数组
- 如果需要贴近现场实际录波特性,可以给导出的仿真波形叠加20-40dB的高斯白噪声做数据增强,不需要改动仿真模型。
你当前搭建的V-I测量环节界面如下:
内容的提问来源于stack exchange,提问作者Rab Nawaz
相关产品推荐
相关产品推荐

