当神经网络遇上GUI

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]

  1. 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


  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值