diff --git a/matlab/GPSaidedINS.m b/matlab/GPSaidedINS.m
index 50013b28ecab6f23a12de30497d7c17a790915d7..75c96af77f12bd667d1b3928ee2ae9fc501173ac 100644
--- a/matlab/GPSaidedINS.m
+++ b/matlab/GPSaidedINS.m
@@ -53,6 +53,7 @@ out_data.x_h(:,1)=x_h;
 out_data.diag_P=zeros(15,N);
 out_data.diag_P(:,1)=diag(P);
 out_data.delta_u_h=zeros(6,N);
+out_data.turn(1)=true;
 
 %% Information fusion
 ctr_gnss_data=1;
@@ -84,8 +85,8 @@ for k=2:N
     %% GPS sensor  %%
     %%%%%%%%%%%%%%%%%
     %randomized number of visible satellites
-    sv = random_satellites(sv);
-    %sv=5;
+    %sv = random_satellites(sv);
+    sv=5;
     %control action
     P_store=[P_store,sum(sqrt(out_data.diag_P(1:3,k-1)))];
     if sum(sqrt(out_data.diag_P(1:3,k-1)))<P_treshold
@@ -164,6 +165,7 @@ for k=2:N
     out_data.diag_P(:,k)=diag(P);
     out_data.delta_u_h(:,k)=delta_u_h;
     out_data.sv(k)=sv;
+    out_data.turn(k)=turn;
 end
 
 %% plot feedback over P matrix
diff --git a/matlab/GPSaidedINS_cycling.m b/matlab/GPSaidedINS_cycling.m
index 320ebfc03c08c8c59481326c0e970429f32c7799..9461e86a61baa6fea50ac7e393ddee71644158bd 100644
--- a/matlab/GPSaidedINS_cycling.m
+++ b/matlab/GPSaidedINS_cycling.m
@@ -37,7 +37,7 @@ t=in_data.IMU.t;
 
 %% Initialization
 % Initialize the navigation state
-x_h=init_navigation_state(u,settings);
+x_h=init_navigation_state(u,settings,in_data);
 
 % Initialize the sensor bias estimate
 delta_u_h=zeros(6,1);
@@ -53,6 +53,7 @@ out_data.x_h(:,1)=x_h;
 out_data.diag_P=zeros(15,N);
 out_data.diag_P(:,1)=diag(P);
 out_data.delta_u_h=zeros(6,N);
+turn_store=true;
 
 %% Information fusion
 ctr_gnss_data=1838;
@@ -76,10 +77,10 @@ P_store=0;                  %store summed valued of the trace of P in time
 sv_store=sv;          %store number of visible satellites in time
 
 %for k=2:N
-for k=200000:210000
+for k=200000:209000
 
     % Sampling period
-    Ts=t(k)-t(k-1);
+    Ts=0.01;%t(k)-t(k-1);
     
     %%%%%%%%%%%%%%%%%
     %% GPS sensor  %%
@@ -96,9 +97,9 @@ for k=200000:210000
     end
     %update sensor state
 %     pre_state=sensor.state;
-    sensor=gps_randomized(t(k),sensor,false,sv); %remove _randomized for worst case
+    sensor=gps_randomized(t(k),sensor,turn,sv); %remove _randomized for worst case
     %determine if GPS position is available
-    GPS_position=true;%strcmp(sensor.state,'position_available');
+    GPS_position=strcmp(sensor.state,'position_available');
     %compute power consumption
     if ~(strcmp(sensor.state,'no_info')||strcmp(sensor.state,'warm_start_available'))
         energy=energy+power*Ts;
@@ -165,6 +166,7 @@ for k=200000:210000
     out_data.diag_P(:,k)=diag(P);
     out_data.delta_u_h(:,k)=delta_u_h;
     out_data.sv(k)=sv;
+    turn_store=[turn_store, turn];
 end
 
 %% plot feedback over P matrix
@@ -180,7 +182,8 @@ ygps = interp1(in_data.GNSS.t,in_data.GNSS.pos_ned(1,:),in_data.IMU.t,'linear','
 xerr = xest - xgps; 
 yerr = yest - ygps;
 out_data.error = sqrt(mean(xerr.^2+yerr.^2));
-out_data.P_store=P_store;
+out_data.P=P_store;
+out_data.turn=turn_store;
 end
 
 
@@ -228,7 +231,7 @@ end
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %%  Init navigation state     %%
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-function x_h=init_navigation_state(u,settings)
+function x_h=init_navigation_state(u,settings,in_data)
 
 
 % Calculate the roll and pitch
@@ -243,7 +246,8 @@ Rb2t=Rt2b([roll pitch settings.init_heading])';
 q=dcm2q(Rb2t);
 
 % Initial navigation state vector
-x_h=[zeros(6,1); q];
+x_h=[in_data.GNSS.pos_ned(:,1838);zeros(3,1); q];
+%x_h=[zeros(6,1); q];
 
 end
 
diff --git a/matlab/cycling_data_final.mat b/matlab/cycling_data_final.mat
new file mode 100644
index 0000000000000000000000000000000000000000..d7f184af4e29fcf9af9ae56edb47ef0b94afff78
Binary files /dev/null and b/matlab/cycling_data_final.mat differ
diff --git a/matlab/get_settings.m b/matlab/get_settings.m
index f4946dd13c4a7cfbeb180a9eb158b2099c7f1bc3..193930b7eb2a2f56a6c41101386af5d5dd59b6c8 100644
--- a/matlab/get_settings.m
+++ b/matlab/get_settings.m
@@ -25,8 +25,8 @@ settings.init_heading = 320*pi/180;
 
 % Process noise covariance (Q)
 % Standard deviations, need to be squared
-settings.sigma_acc = 0.05; % [m/s^2]
-settings.sigma_gyro = 0.1*pi/180; % [rad/s]
+settings.sigma_acc = 0.50;%0.05; % [m/s^2]
+settings.sigma_gyro = 1.0*pi/180;%0.1*pi/180; % [rad/s]
 settings.sigma_acc_bias = 0.0001; % [m/s^2.5]
 settings.sigma_gyro_bias = 0.01*pi/180; % [rad/s^1.5]
 
diff --git a/matlab/gps_randomized.m b/matlab/gps_randomized.m
index 9db2d121adc24f677c3dab5f9a665db996d7e15f..cd274e7d9d61a726b584291abc7779c4ac30edd8 100644
--- a/matlab/gps_randomized.m
+++ b/matlab/gps_randomized.m
@@ -31,7 +31,7 @@ required_sv= 4;
 ephDuration=1800.0;
 %bounds for time required for fetching freq and phase
 fp_lower=0.2;
-fp_upper=1.5;
+fp_upper=500.5;
 
 %% initialize output
 sensor = sensor_in;
@@ -106,16 +106,16 @@ if strcmp(sensor_in.state,'read_ephemeris')
     end
 end
 if strcmp(sensor_in.state,'warm_start')
-    if(lost_visibility)
-        sensor.state='warm_start';
-        sensor.fetchfp=time+random('uniform',fp_lower,fp_upper);
-        %might have to go on to cold_start
-            if(ephemeris_expired)
-                sensor.state='cold_start';
-                sensor.fetchfp=time+random('uniform',fp_lower,fp_upper);
-                sensor.eph=0;
-            end
-    end
+%     if(lost_visibility)
+%         sensor.state='warm_start';
+%         sensor.fetchfp=time+random('uniform',fp_lower,fp_upper);
+%         %might have to go on to cold_start
+%             if(ephemeris_expired)
+%                 sensor.state='cold_start';
+%                 sensor.fetchfp=time+random('uniform',fp_lower,fp_upper);
+%                 sensor.eph=0;
+%             end
+%     end
     if(fetched_fp)
         sensor.state='position_available';
         sensor.geteph=time+random('uniform',30,60);
@@ -137,10 +137,10 @@ if strcmp(sensor_in.state,'cold_start')
         sensor.geteph=time+random('uniform',30,60);
         sensor.fp=sv;
     end
-    if(lost_visibility)
-        sensor.state='cold_start';
-        sensor.fetchfp=time+random('uniform',fp_lower,fp_upper);
-    end
+%     if(lost_visibility)
+%         sensor.state='cold_start';
+%         sensor.fetchfp=time+random('uniform',fp_lower,fp_upper);
+%     end
     if(~turn)
         sensor.state='no_info';
         sensor.howLong=time;
diff --git a/matlab/main.m b/matlab/main.m
index b65b0b558dc6f5139746f0635830951e66448876..cac6874613a59367f778da7bc3e26cad40a3fb9e 100644
--- a/matlab/main.m
+++ b/matlab/main.m
@@ -11,7 +11,7 @@ load('cycling_input_data');
 %% Load filter settings
 disp('Loads settings')
 settings=get_settings();
-settings.P_treshold=0.1;
+settings.P_treshold=6.1;
 
 %% Run the GNSS-aided INS
 disp('Runs the GNSS-aided INS')
@@ -21,4 +21,21 @@ out_data=GPSaidedINS_cycling(in_data,settings);
 %% Plot the data 
 disp('Plot data')
 %plot_data(in_data,out_data,'True');drawnow
+h=zeros(1,3);
+figure(2)
+plot(in_data.GNSS.pos_ned(2,:),in_data.GNSS.pos_ned(1,:),'b-');
+hold on
+h(1)=plot(in_data.GNSS.pos_ned(2,:),in_data.GNSS.pos_ned(1,:),'b.');
+h(2)=plot(out_data.x_h(2,:),out_data.x_h(1,:),'r');
+h(3)=plot(in_data.GNSS.pos_ned(2,1),in_data.GNSS.pos_ned(1,1),'ks');
+title('Trajectory')
+ylabel('North [m]')
+xlabel('East [m]')
+legend(h,'GNSS position estimate','GNSS aided INS trajectory','Start point')
+axis equal
+grid on
 
+figure(3)
+hold on
+plot(out_data.P)
+plot(out_data.turn)
\ No newline at end of file
diff --git a/matlab/run_many.m b/matlab/run_many.m
index 5f3b55509744c2509506cd4c0ac783a9931f5170..5b10dbdb714c72fcd9a113a7fa11dd71a7f9d699 100644
--- a/matlab/run_many.m
+++ b/matlab/run_many.m
@@ -18,6 +18,7 @@ settings.P_treshold=0.1;
 
 figure(4)
 hold on
+grid
 color=[[0.7,0.0,0.0];[0.0,0.7,0.0];[0.7,0.0,0.7];[0.0,0.0,0.7]];
 j=1;
 for P_treshold=[2.0,4.0,6.0,8.0]%[2.3,2.8,3.3,3.8,4.3,4.8,5.3,5.8,6.3,6.8,7.3]
diff --git a/matlab/run_many_cycling.m b/matlab/run_many_cycling.m
new file mode 100644
index 0000000000000000000000000000000000000000..2ebf28d6c23c7e7744cff24aaee1e54db865bd19
--- /dev/null
+++ b/matlab/run_many_cycling.m
@@ -0,0 +1,56 @@
+%"monteCarlo" example
+
+%% Load data
+disp('Loads data')
+load('cycling_input_data');
+
+%% Load filter settings
+disp('Loads settings')
+settings=get_settings();
+
+
+settings.P_treshold=0.1;
+% %run first simulation
+% out_data=GPSaidedINS(in_data,settings);
+% energy=out_data.energy;
+% error=out_data.error;
+
+
+figure(5)
+hold on
+grid
+color=[[0.7,0.0,0.0];[0.0,0.7,0.0];[0.7,0.0,0.7];[0.0,0.0,0.7]];
+j=1;
+for P_treshold=[5.0,7.0,9.0,11.0]%[2.3,2.8,3.3,3.8,4.3,4.8,5.3,5.8,6.3,6.8,7.3]
+    clear energy error
+    settings.P_treshold=P_treshold;
+    %run first simulation
+    out_data=GPSaidedINS_cycling(in_data,settings);
+    energy=out_data.energy;
+    error=out_data.error;
+%     energy=[energy,out_data.energy];
+%     error=[error,out_data.error];
+    %run more simulations
+    for k=1:10
+        %% Run the GNSS-aided INS
+        disp('Running the GNSS-aided INS')
+        P_treshold
+        k
+        out_data=GPSaidedINS_cycling(in_data,settings);
+        energy=[energy,out_data.energy];
+        error=[error,out_data.error];
+    end
+    %plot data
+    scatter(energy, error,40,color(j,:),'o','filled')
+    xlabel('energy')
+    ylabel('error')
+    %title(['P treshold = ', num2str(P_treshold)])
+    
+    j=j+1;
+end
+% %plot data
+% figure(2)
+% scatter(energy, error)
+% xlabel('energy')
+% ylabel('error')
+% grid