-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathFITNET
144 lines (107 loc) · 4.63 KB
/
FITNET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
clc
clear all
close all
format long
out = csvread('Data_1000points_sampled_every5.csv');%importing the data file
u= [out(:,1) out(:,2)]'; % matrix containing u1 and u2
xo = out(:,3)'; %matrix containing x1
time=out(:,4)'; % time stamps
[row_u,col_u]=size(u); %getting size of dtatset
[row_xo,col_xo]=size(xo);
num_of_elements_in_validation=100;% Setting size of validation set
% creating training set
training=[];
training=[u(1,1:col_u-num_of_elements_in_validation);u(2,1:col_u-num_of_elements_in_validation);xo(1,1:col_u-num_of_elements_in_validation)];
[row_training,col_training]=size(training);
training_time=[time(1,1:col_u-num_of_elements_in_validation)];
% creating validation set
validation=[];
validation=[u(1,col_u-num_of_elements_in_validation+1:col_u);u(2,col_u-num_of_elements_in_validation+1:col_u);xo(1,col_u-num_of_elements_in_validation+1:col_xo)];
[row_validation,col_validation]=size(validation);
validation_time=[time(1,col_u-num_of_elements_in_validation+1:col_u)];
weighted_in =[];%matrix to store u1 and u2 and x1 values from orignal dataset
weighted_out=[];%stores value of x1 of the point that is next, "not fed into net"
column_num1=1;% keeping track of column index
sim_ans_validation=[];% stores the simulated value of x1 generated by sim function
% how many elements we want to look back on
num_of_elements=4;
for n=1:20
num_of_elements=n;
column_num1 = 1;
column_num=1;
row_num=1;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
weighted_in =[];%matrix to store u1 and u2 and x1 values from orignal dataset
weighted_out=[];%stores value of x1 of the point that is next, "not fed into net"
column_num1=1;% keeping track of column index
sim_ans_validation=[];% stores the simulated value of x1 generated by sim function
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for i=1:col_training-num_of_elements % outer loop
row_num=1;
for j=i:i+num_of_elements-1% inner loop
%in this loop we generate our smaller datasets from training set and store them in a matrix
weighted_in(row_num,column_num)=training(1,j);%u1 values
row_num=row_num+1;
weighted_in(row_num,column_num)=training(2,j);%u2 values
row_num=row_num+1;
weighted_in(row_num,column_num)=training(3,j);% x1 values coressponding to u1 and u2 values
%in the above statement
row_num=row_num+1;
end
weighted_out(1,column_num)=xo(1,i+num_of_elements);
column_num=column_num+1;
end
% feeding it into the RBF
%net=newrbe(weighted_in,weighted_out);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
net = fitnet(10);
net = train(net,weighted_in,weighted_out);
view(net)
y = net(weighted_in);
perf = perform(net,weighted_out,y);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% now we must create a similar matrix for the validation set
weighted_in_valid=[];
row_num=1;
column_num=1;
for z=1:col_validation-num_of_elements% outer loop
row_num=1;
for y=z:z+num_of_elements-1% inner loop
%in this loop we generate our smaller datasets from validation set
weighted_in_valid(row_num,column_num)=validation(1,y);
row_num=row_num+1;
weighted_in_valid(row_num,column_num)=validation(2,y);
row_num=row_num+1;
weighted_in_valid(row_num,column_num)=validation(3,y);
row_num=row_num+1;
end
weighted_out_valid(1,column_num)=xo(1,z+num_of_elements);
column_num=column_num+1;
end
% sim_ans_training(1,:)= sim(net, weighted_in);%running a simulation for the training set
% sim_ans_training(2,:)= training_time(1,num_of_elements+1:end);%storing corressponding timestamps
%
%
%
% figure
% plot( training_time,training(3,:),'g',sim_ans_training(2,:),sim_ans_training(1,:),'b')
% legend("Actual training data","simulation for training ")
% title('Actual data and simulation of training set ')
%
%
% %now we run a simulation using the validation set values
sim_ans_validation(1,:) = sim(net,weighted_in_valid);% storing the simulated value
sim_ans_validation(2,:)=validation_time(1,num_of_elements+1:end);% storing the corresponding timestep
error_validation=[];
for i=1:col_validation-num_of_elements
error_validation(1,i)= abs(sim_ans_validation(1,i)-validation(3,num_of_elements+i))/validation(3,num_of_elements+i);
end
mean_error_validation(1,n)= mean(error_validation,'all')*100;
mean_error_validation(2,n)= n;
end
figure
plot(mean_error_validation(2,:), mean_error_validation(1,:))
figure
plot(validation_time,validation(3,:),'g',sim_ans_validation(2,:), sim_ans_validation(1,:));
legend('actual data of validation set', ' simulated data for validation set');
title(' actual and simulated for validation set');