Main Content

gensim

Generate Simulink block for shallow neural network simulation

Syntax

gensim(net,st)

To Get Help

Type help network/gensim.

Description

This function generates a Simulink® block for a shallow neural network. gensim does not support deep learning networks such as convolutional or LSTM networks. For more information on code generation for deep learning, see Deep Learning Code Generation.

gensim(net,st) creates a Simulink system containing a block that simulates neural network net.

gensim(net,st) takes these inputs:

net

Neural network

st

Sample time (default = 1)

and creates a Simulink system containing a block that simulates neural network net with a sampling time of st.

If net has no input or layer delays (net.numInputDelays and net.numLayerDelays are both 0), you can use –1 for st to get a network that samples continuously.

Examples

Generate a Simulink Block for a Feedforward Network

[x,t] = simplefit_dataset;
net = feedforwardnet(10);
net = train(net,x,t)
gensim(net)

Generate a Simulink Block for a NARX Network

Create a NARX network.

[x,t] = simplenarx_dataset;
net = narxnet(1:2,1:2,20);
view(net)
[xs,xi,ai,ts] = preparets(net,x,{},t);
net = train(net,xs,ts,xi,ai);
y = net(xs,xi,ai);

Convert the network to closed loop.

net = closeloop(net);
view(net)

Prepare the data and simulate the network’s closed loop response.

[xs,xi,ai,ts] = preparets(net,x,{},t);
y = net(xs,xi,ai);

Convert the network to a Simulink system with workspace input and output ports.

[sysName,netName] = gensim(net,'InputMode','Workspace',...
	'OutputMode','WorkSpace','SolverMode','Discrete');

Initialize the delay states. Note that this is an important step to obtain the same output as in MATLAB®.

setsiminit(sysName,netName,net,xi,ai,1);

Define the model input X1 in the workspace, simulate the system programmatically.

x1 = nndata2sim(xs,1,1);
out = sim(sysName,'ReturnWorkspaceOutputs','on','StopTime',num2str(x1.time(end)));
ysim = sim2nndata(out.y1);
Introduced before R2006a