In the Matlab UserGuide for Neural Networks Toolbox R2012a (page 3-25), there is an example of a Dynamics Network with the following code:
load magdata[u,us] = mapminmax(u);[y,ys] = mapminmax(y);y = con2seq(y);u = con2seq(u);d1 = [1:2];d2 = [1:2];narx_net = narxnet(d1,d2,10);narx_net.divideFcn = '';narx_net.trainParam.min_grad = 1e-10;[p,Pi,Ai,t] = preparets(narx_net,u,{},y);narx_net = train(narx_net,p,t,Pi);yp = sim(narx_net,p,Pi);e = cell2mat(yp)-cell2mat(t);plot(e);
But when I use the code above I get the following error message:
Error using struct Conversion to struct from double is not possible.
However when I use:
narx_net = narxnet(1:2,1:2,10);
Instead of:
d1 = [1:2];d2 = [1:2];narx_net = narxnet(d1,d2,10);
The program runs okay.
Then when I try to run the same code but with my own input and output data. So I define u and y myself, I got the same error message again.
Even more strange when I then try to run the original code (see below) then I also get the error message, while previous the code run fine??? When I restart Matlab, the code below works fine again???
load magdata[u,us] = mapminmax(u);[y,ys] = mapminmax(y);y = con2seq(y);u = con2seq(u);narx_net = narxnet(1:2,1:2,10); narx_net.divideFcn = '';narx_net.trainParam.min_grad = 1e-10;[p,Pi,Ai,t] = preparets(narx_net,u,{},y);narx_net = train(narx_net,p,t,Pi);yp = sim(narx_net,p,Pi);e = cell2mat(yp)-cell2mat(t);plot(e);
Hopefully someone can help me with this mystery. Many thanks
Best Answer