1,在这里先构建一个简单的神经网络;```
l%数据集导入选择数据集的前14组用于训练,后3组用于测试
clear all
clc
load sample
data=Data1’;%矩阵转置
result=Data2’;
n=randperm(17);%1-17 随机排列
input_train=data(:,n(1:14));%取14个样本用于训练
output_train=result(:,n(1:14));
input_test=data(:,n(15:17));%取剩余3个样本用于检验
output_test=result(:,n(15:17));
%训练样本归一化
[inputn,inputps]=mapminmax(input_train);
minp=inputps.ymin;
maxp=inputps.ymax;
[outputn,outputps]=mapminmax(output_train);
mint=outputps.ymin;
maxt=outputps.ymax;
load bpdata
%最适隐藏节点确定设置在1~30 个隐层节点数情况下,计算预测结果与实际结果的误差绝对值之和,由此确定隐层节点数。
for i=1:30
net =newff (inputn,outputn,i, {‘tansig’,‘purelin’},‘traingdx’)
net.divideParam.trainRatio = 100/100;
net.divideParam.valRatio = 0/100;
net.divideParam.testRatio = 0/100;
net.trainParam.epochs=2000;
net.trainParam.lr=0.05;
net.trainParam.goal=0.00001;
net=train(net,inputn,outputn);
testn=mapminmax(‘apply’,input_test,inputps);
an=sim(net,testn);
a=mapminmax(‘reverse’,an,outputps);
sse=sum((b-a).^2);
r(i)=norm(sse);
end
load bpdata
inputnum=3;
hiddennum=5;
outputnum=1
net1 =newff (xn,zn,5, {‘tansig’,‘purelin’},‘traingdm’);
net.divideParam.trainRatio = 100/100;
net.divideParam.valRatio = 0/100;
net.divideParam.testRatio = 0/100;
net.trainParam.epochs=2000;
net.trainParam.lr=0.05;
net.trainParam.goal=0.00001;
net=train(net,inputn,outputn)
testn=mapminmax(‘apply’,input_test,inputps);
an=sim(net,testn);
a=mapminmax(‘reverse’,an,outputps);
%将预测结果反归一化处理
w_test=mapminmax(‘apply’,input_train,inputps);
an=sim(net,w_test);
test_simu=mapminmax(‘reverse’,an,outputps)
神经网络算法原理:
便捷的线性加权求和可得netz神经元净输入,
对于一个含有四个输入神经元和4个隐藏神经元的神经网络即矩阵计算;
2.Matlab_gui
效果
1.按钮的回调如下
filterspec = {‘.jpg;.tif;.png;.gif’,‘All Image Files’};
[f, p] = uigetfile(filterspec);
%p是文件所在的目录 如:C:\Users\Administrator\Desktop\php项目
%f是文件的名字 如 微信截图_20210405181244.png
%拼接起来[p f] 例如: C:\Users\Administrator\Desktop\php项目\微信截图_20210405205426.png
if (ischar§)
fname = [p f];
%这个是核心方法,调用主函数,传递参数
updateimage(app, fname)
end
% Make sure user didn’t cancel uigetfile dialog
坐标轴不用管
左上角添加一个全局函数
function updateimage(app,imagefile)
im=imread(imagefile)
%app.UIAxes是坐标轴的名号
imshow(im,‘parent’,app.UIAxes)
end
表格:
首先需要一个坐标轴和一个按钮
按钮的回调如下
filterspec = {‘.xls;.xlsx;.png;.gif’,‘All Image Files’};
[f, p] = uigetfile(filterspec);
app.fname=[p f];
% Make sure user didn’t cancel uigetfile dialog
if (ischar§)
fname = [p f];
updateimage(app, fname)
end
左上角添加一个全局函数
function updateimage(app,imagefile)
t=readtable(imagefile)
app.UITable.Data=t
end
注意 第一行是默认不显示的
2.公共变量的传递 逻辑函数的使用
上面的知识load了一个数据并显示,我们现在要拿到里面的数据并且对其中进行公共变量的传递
首先,我们定义一个全局属性
然后所有的属性都用 app.fname 就行了,像上面的方法我们可以叫他 app.fname
然后在按钮的回调代码中我们可以
im=imread(app.fname)
imshow(im)
% % Draw a region of interest
h = imrect
% % Evaluate OCR within ROI
roi = h.getPosition;
%这个文件其实就是一个脚本M文件
ocrI = evaluateOCRTraining(im, roi);
% Show results
imshow(ocrI)
3.值的输出,参数拼接
1.按钮下回调,改变文本框的值
app.EditField.Value=p
1.参数的拼接
像预测问题时是可以这么做的
new_x=[app.x_1.Value,app.x_2.Value,app.x_3.Value,app.x_4.Value,app.x_5.Value]
- excel参数的读取
function updateexcel(app,imagefile)
t=readtable(imagefile);
app.UITable.Data=t;
t1=xlsread(imagefile);
disp(t1(1,2))
app.EditField.Value=num2str(t1(2,1))
%app.EditField.Value=num2str(t1(2,:))
end
load(‘test.mat’)
%参数拼接
new_x=[app.x_1.Value,app.x_2.Value,app.x_3.Value,app.x_4.Value,app.x_5.Value]
predict_y=sim(net,new_x(1,:)');
%结果输出
app.y.Value=predict_y
第二种读取excel的方法
properties (Access = public)
fname % Description
end
methods (Access = private)
function updateimage(app,imagefile)
t=readtable(imagefile)
app.UITable.Data=t
%第一行 第二列
test_1=table2array(t)
app.x_1.Value=test_1(1,1)
app.x_2.Value=test_1(1,2)
app.x_3.Value=test_1(1,3)
app.x_4.Value=test_1(1,4)
app.x_5.Value=test_1(1,5)
end
end
代码:
1.第一个按钮(load data)
filterspec = {‘.xls;.xlsx;.png;.gif’,‘All Image Files’};
[f, p] = uigetfile(filterspec);
app.fname=[p f];
% Make sure user didn’t cancel uigetfile dialog
if (ischar§)
fname = [p f];
updateimage(app, fname)
end
2.第二个按钮(调用神经网络)
load(‘test.mat’)
new_x=[app.x_1.Value,app.x_2.Value,app.x_3.Value,app.x_4.Value,app.x_5.Value]
predict_y=sim(net,new_x(1,:)')
app.y.Value=predict_y
3.全局函数
properties (Access = public)
fname % Description
end
methods (Access = private)
function updateimage(app,imagefile)
t=readtable(imagefile)
app.UITable.Data=t
%第一行 第二列
test_1=table2array(t)
app.x_1.Value=test_1(1,1)
app.x_2.Value=test_1(1,2)
app.x_3.Value=test_1(1,3)
app.x_4.Value=test_1(1,4)
app.x_5.Value=test_1(1,5)
end
end