hilomotDemo1 Demo 1: Static process with 1 input and 1 output.
HiLoMoT - Nonlinear System Identification Toolbox
Benjamin Hartmann, 04-April-2012
Institute of Mechanics & Automatic Control, University of Siegen, Germany
Copyright (c) 2012 by Prof. Dr.-Ing. Oliver Nelles
LMN = hilomot;
N = 40;
u = [linspace(0,0.3,20) linspace(0.5,1,20)]';
sigmoide = 1./(1+exp((-0.65+u)/60));
y1 = 1+sin(4*pi*u-pi/8);
y2 = 0.1./(0.1+u);
y = y1.*sigmoide + y2.*(1-sigmoide);
LMN.input = u;
LMN.output = y + 0.05*randn(N,1);
LMN.xRegressorDegree = 2;
LMN = LMN.train;
uG = linspace(-0.2,1.2,100)';
yG = 1 ./ (0.1 + uG);
yGModel = calculateModelOutput(LMN, uG, yG);
JG = calcGlobalLossFunction(LMN, yG, yGModel);
alpha = 0.05;
errorbar = calcErrorbar(LMN, uG, [], alpha);
figure
LMN.plotModel
hold on
plot(uG,yGModel+errorbar,'r')
legend('model output','data','model +/- errorbar')
plot(uG,yGModel-errorbar,'r')
axis([-0.2 1.2 -1 2])
xInputDelay is empty, defaults are used: xInputDelay(1:p) = {0}
zInputDelay is empty, defaults are used: zInputDelay(1:p) = {0}
xOutputDelay is empty, defaults are used: xOutputDelay(1:p) = {[]}
zOutputDelay is empty, defaults are used: zOutputDelay(1:p) = {[]}
Initial net has 1 local model(s): J = 0.650108
1. Iteration. Number of local models = 1. Checking for split of model 1 ...
Testing split in dimension 1: J = 0.536771
Axes-oblique splitting: J = 0.495625
-> SPLITTING RESULT: J = 0.495625
2. Iteration. Number of local models = 2. Checking for split of model 3 ...
Testing split in dimension 1: J = 0.318336
Axes-oblique splitting: J = 0.236574
-> SPLITTING RESULT: J = 0.236574
3. Iteration. Number of local models = 3. Checking for split of model 2 ...
Testing split in dimension 1: J = 0.218785
Axes-oblique splitting: J = 0.197711
-> SPLITTING RESULT: J = 0.197711
4. Iteration. Number of local models = 4. Checking for split of model 4 ...
Testing split in dimension 1: J = 0.163493
Axes-oblique splitting: J = 0.163359
-> SPLITTING RESULT: J = 0.163359
5. Iteration. Number of local models = 5. Checking for split of model 5 ...
Testing split in dimension 1: J = 0.135563
Axes-oblique splitting: J = 0.133815
-> SPLITTING RESULT: J = 0.133815
6. Iteration. Number of local models = 6. Checking for split of model 6 ...
Testing split in dimension 1: J = 0.127121
Axes-oblique splitting: J = 0.126375
-> SPLITTING RESULT: J = 0.126375
Estimated model complexity limit reached. The improvement of
the loss function (penaltyLossFunction) was 2 times less than
1.000000e-12 on TRAINING data.
Final net has 7 local models and 27 parameters: J = 0.126375
Net 5 with 5 LMs and 19 parameters is suggested as the model with the best complexity trade-off.Plot model for dimension 1.