You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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测量环节界面如下:
Simulink中的V-I测量

内容的提问来源于stack exchange,提问作者Rab Nawaz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 22:30:43