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

如何使三相逆变器的LSTM控制器输出20kHz PWM信号?

问题:LSTM控制器无法输出20kHz PWM信号的调整方案

我计划将LSTM网络用作三相逆变器的控制器,该控制器输入为3路400Hz正弦电压信号与3路400Hz正弦电流信号(共6路),目标输出为3路20kHz的0-1 PWM开关信号。
我已使用Matlab的lstm1.m、input.mat、output.mat及time.mat文件完成LSTM训练,但训练后发现控制器输出并非20kHz PWM信号,而是400Hz正弦信号,与预期的真实PWM波形不符。

训练代码

clear;
clc;
load("input.mat");
load("output.mat");
load("Time.mat")
input=rescale(input); % 将输入缩放到0-1范围
output=rescale(output); % 将输出缩放到0-1范围
inputSize = 6;      % 3路电压 + 3路电流
numHiddenUnits = 100;
numResponses = 3;   % 3路PWM输出
layers = [ ...
    sequenceInputLayer(inputSize)
    lstmLayer(numHiddenUnits,'OutputMode','sequence')
    fullyConnectedLayer(numResponses)
    sigmoidLayer     % PWM输出在[0-1]区间
    regressionLayer];
options = trainingOptions('adam', ...
    'MaxEpochs',30, ...
    'MiniBatchSize', 128, ...   
    'InitialLearnRate',1e-3, ...
    'SequenceLength','longest', ...
    'Plots','training-progress', ...
    'Verbose',0);
% 训练
XTrain = {input'};  % [特征数 x 时间步长]
YTrain = {output'}; % [输出数 x 时间步长]
net = trainNetwork(XTrain, YTrain, layers, options);
% 测试
YPred = predict(net, XTrain, 'MiniBatchSize', 1);
YPred = YPred{1};   % [3 x 样本数]
figure;
plot(Time,output); title('真实PWM');
figure;
plot(Time,YPred); title('预测PWM');

波形情况

  • 真实PWM波形:为20kHz的0-1开关信号
  • LSTM预测输出波形:为400Hz正弦信号,与目标不符

请问如何调整以让LSTM控制器输出20kHz PWM信号?

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 21:43:10