matlab feedforward,matlab神经网络函数feedforwardnet构造的网络数学模型是啥

clc;clear all;close

%% 线性系统x(k+1)=A*x(k)+B*u(k)参数(A,B)

A=[1 1;-1 1];

B=[0.1; 1];

%% 神经网络训练参数

N=1000;              %样本数

hiddenSizes=10;  %隐藏层神经元数目

%% 获取模型网络训练样本

uk = randn(1,N);         %控制变量随机均匀取值|u|≤1

xk = randn(2,N);         %状态标量随机均匀取值|x|≤1

target=A*xk+B*uk;         %状态方程获取训练样本-目标

input=[xk; uk];                 %训练样本-输入

%% 构建前馈神经网络

net=feedforwardnet(hiddenSizes,'trainlm');

net.trainParam.showWindow=false;  %关闭nntraintool窗口

net = train(net, input, target);

net.b{1}=zeros(size(net.b{1}));                    %输入层阈值10x1

net.b{2}=zeros(size(net.b{2}));                     %隐藏层阈值2x1

net.iw{1}=zeros(size(net.iw{1}));           %输入层权值10x3

net.lw{2,1}=zeros(size(net.lw{2,1}));        %隐藏层权值2x10

%% 训练过程

% net = train(net, input, target);

%% 仿真参数

x=[1; -0.5];

u=0.2;

ystar=A*x+B*u    %参照输出值

%in的输入归一化处理参数

xinmin=net.inputs{1}.processSettings{1}.xmin;

xinmax=net.inputs{1}.processSettings{1}.xmax;

xoutmin=net.inputs{1}.processParams{1}.ymin;

xoutmax=net.inputs{1}.processParams{1}.ymax;

%out的输出归一化处理参数

yinmin=net.outputs{1,2}.processSettings{1}.xmin;

yinmax=net.outputs{1,2}.processSettings{1}.xmax;

youtmin=net.outputs{1,2}.processParams{1}.ymin;

youtmax=net.outputs{1,2}.processParams{1}.ymax;

%%

in=[x; u];             %神经网络输入

ynet=net(in)            %神经网络1输出值

%权值和阈值为零时,输出层的输出确实是零,

%但matlab对零做了mapminmax反变化后得到了一个和输出归一化处理参数相关的数

%将y再做一次mapminmax变化将得到零

y=(youtmax-youtmin)./(yinmax-yinmin).*(ynet-yinmin)+youtmin

%% 数学模型求输出再次验证该数学模型,即ynet==ym

in=(xoutmax-xoutmin)./(xinmax-xinmin).*(in-xinmin)+xoutmin;

b1=net.b{1};                    %输入层阈值10x1

b2=net.b{2};                     %隐藏层阈值2x1

IW=[net.iw{1}, b1];           %输入层权值10x4

LW=[net.lw{2,1}, b2];        %隐藏层权值2x11

p=[in; 1];                          %网络输入4x1

a=IW*p;                           %输入层输入10x1

a1=[tansig(a); 1];              %输入层输出11x1

ym=LW*a1;                       %线性输出层输出

ym=(yinmax-yinmin)./(youtmax-youtmin).*(ym-youtmin)+yinmin

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值