[f,p]=uigetfile({'*.xlsx;*.txt;*.xls;','All Data Files'});
if (ischar(p))
fname = [p f];
A=xlsread(fname);
app.UITable.Data=A;
end
% A=xlsread('test1.xlsx');
% app.UITable.Data=A;
input=A(1:end,1:5);
output=A(1:end,6:7);
insize=size(input,2);
outsize=size(output,2);
%% 划分训练集和测试集
num=size(input,1);
rowrankA = randperm(num); % 随机打乱的数字,从1~行数打乱
input= input(rowrankA, :);%按照rowrank打乱矩阵的行数
output=output(rowrankA, :);
Xtrain=input(1:floor(0.8*num),:);
Ytrain=output(1:floor(0.8*num),:);
Xtest=input(floor(0.8*num)+1:num,:);
Ytest=output(floor(0.8*num)+1:num,:);
%% 训练集归一化
muX = mean(Xtrain,1);
sigmaX = std(Xtrain,0,1);
muT = mean(Ytrain,1);
sigmaT = std(Ytrain,0,1);
Xtrain = (Xtrain - muX) ./ sigmaX;
Ytrain = (Ytrain - muT) ./ sigmaT;
%% 创建网络结构
layers = [
featureInputLayer(insize,"Name","featureinput")
fullyConnectedLayer(10,"Name","fc")
fullyConnectedLayer(outsize,"Name","fc_1")
regressionLayer("Name","regressionoutput")];
%% 设置训练选项
Xtest = (Xtest - muX) ./ sigmaX;
Ytest = (Ytest - muT) ./ sigmaT;
b={Xtest,Ytest};
options = trainingOptions("adam", ...
MaxEpochs=500, ...
Shuffle="every-epoch", ...
Plots="training-progress", ...
Verbose=0 ,...
ValidationData=b);
%% 训练网络
net = trainNetwork(Xtrain,Ytrain,layers,options);
% X1=app.EditField_2.Value;
% X2=app.EditField.Value;
% X3=app.EditField_3.Value;
% X4=app.EditField_4.Value;
% X5=app.EditField_5.Value;
X=[1,1,1,1,1];
X = (X - muX) ./ sigmaX;
Y= predict(net,X);
Y= Y.*sigmaT+muT;
Y=double(Y);
代码在脚本中是这样的