如何使三相逆变器的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
相关产品推荐
相关产品推荐

