diff --git a/commonFunctions/sensors/Sensor2D.m b/commonFunctions/sensors/Sensor2D.m
index e7f35d864c243b8b92464c2e6d0ed57928f1a228..31062231be272098fcaa1619670c9809cb64ee12 100644
--- a/commonFunctions/sensors/Sensor2D.m
+++ b/commonFunctions/sensors/Sensor2D.m
@@ -19,6 +19,7 @@ classdef Sensor2D < handle
         % noises
         noiseType;                              % White (default) or Pink
         noiseDataTrack1;
+        noiseFactor;
         noiseVariance;                          % Defining gaussian white noise
         
         % offset
@@ -32,11 +33,11 @@ classdef Sensor2D < handle
             % creating a new sensor
         end
 
-        function [outputArg] = sens(obj,inputArg,temp)
+        function [outputArg] = sens(obj,inputArg,temp,t)
             inputArg = obj.addOffset(inputArg);
             inputArg = obj.add2DOffset(inputArg,temp);
             inputArg = obj.addTempOffset(inputArg,temp);
-            inputArg = obj.addNoise(inputArg);
+            inputArg = obj.addNoise(inputArg,t);
             inputArg = obj.quantization(inputArg);
             inputArg = obj.saturation(inputArg);
             outputArg = inputArg;
@@ -65,15 +66,20 @@ classdef Sensor2D < handle
             outputArg = inputArg;
         end
 
-        function outputArg = addNoise(obj,inputArg)
-            if isempty(obj.noiseType)
-                obj.noiseType = "white";
-            end
-
-            if obj.noiseType == "white"
-                inputArg = inputArg+sqrt(obj.noiseVariance).*randn(length(inputArg),1);
-            elseif obj.noiseType == "pink"
-                % TBI
+        function outputArg = addNoise(obj,inputArg,t)
+            if ~isempty(obj.noiseVariance)              % check for old results
+                inputArg = inputArg + sqrt(obj.noiseVariance).*randn(length(inputArg),1);
+            elseif ~isempty(obj.noiseDataTrack1)    
+                if strcmp(obj.noiseType, "white")
+                    inputArg = inputArg + sqrt(obj.noiseDataTrack1*obj.noiseFactor).*randn(length(inputArg),1);
+                elseif strcmp(obj.noiseType, "pink")
+                    for ii = 1:length(obj.noiseDataTrack1.peaks_vect_f)
+                        inputArg = inputArg + obj.noiseDataTrack1.peaks_vect_val(ii)*obj.noiseFactor*sin(2*pi*obj.noiseDataTrack1.peaks_vect_f(ii)*t + randn(1));
+                    end
+                    inputArg = inputArg + sqrt(obj.noiseDataTrack1.variance*obj.noiseFactor).*randn(length(inputArg),1);
+                else
+                    error("This noise is not defined")
+                end
             end
             outputArg = inputArg;
         end
diff --git a/commonFunctions/sensors/Sensor3D.m b/commonFunctions/sensors/Sensor3D.m
index 03f06aaad1179420f76d4b3b8f55f984008a5f24..e3564e50599513ae7f9881cbbf4fbf8111bcfd7d 100644
--- a/commonFunctions/sensors/Sensor3D.m
+++ b/commonFunctions/sensors/Sensor3D.m
@@ -34,7 +34,7 @@ classdef Sensor3D < Sensor2D
             obj.stateWalkZ = 0;
         end
 
-        function [outputArg1,outputArg2,outputArg3] = sens(obj,inputArg1,inputArg2,inputArg3,temp)
+        function [outputArg1,outputArg2,outputArg3] = sens(obj,inputArg1,inputArg2,inputArg3,temp,t)
             [inputArg1,inputArg2,inputArg3] = obj.tranformAxis(inputArg1,inputArg2,inputArg3);
             [inputArg1,inputArg2,inputArg3] = obj.addOffset3D(inputArg1,inputArg2,inputArg3);
             [inputArg1,inputArg2,inputArg3] = obj.randomWalk(inputArg1,inputArg2,inputArg3);
@@ -51,9 +51,7 @@ classdef Sensor3D < Sensor2D
             inputArg2 = obj.addTempOffset(inputArg2,temp);
             inputArg3 = obj.addTempOffset(inputArg3,temp);
 
-            inputArg1 = obj.addNoise(inputArg1);
-            inputArg2 = obj.addNoise(inputArg2);
-            inputArg3 = obj.addNoise(inputArg3);
+            [inputArg1,inputArg2,inputArg3] = obj.addNoise3D(inputArg1,inputArg2,inputArg3,t);
 
             inputArg1 = obj.quantization(inputArg1);
             inputArg2 = obj.quantization(inputArg2);
@@ -124,6 +122,35 @@ classdef Sensor3D < Sensor2D
             outputArg2 = inputArg2;
             outputArg3 = inputArg3;
         end
+
+        function [outputArg1,outputArg2,outputArg3] = addNoise3D(obj,inputArg1,inputArg2,inputArg3,t)
+            if ~isempty(obj.noiseVariance)              % check for old results
+                inputArg1 = inputArg1 + sqrt(obj.noiseVariance).*randn(length(inputArg1),1);
+                inputArg2 = inputArg2 + sqrt(obj.noiseVariance).*randn(length(inputArg2),1);
+                inputArg3 = inputArg3 + sqrt(obj.noiseVariance).*randn(length(inputArg3),1);
+            elseif ~isempty(obj.noiseDataTrack1)
+                if strcmp(obj.noiseType, "white")
+                    inputArg1 = inputArg1 + sqrt(obj.noiseDataTrack1*obj.noiseFactor).*randn(length(inputArg1),1);
+                    inputArg2 = inputArg2 + sqrt(obj.noiseDataTrack2*obj.noiseFactor).*randn(length(inputArg2),1);
+                    inputArg3 = inputArg3 + sqrt(obj.noiseDataTrack3*obj.noiseFactor).*randn(length(inputArg3),1);
+                elseif strcmp(obj.noiseType, "pink")
+                    for ii = 1:length(obj.noiseDataTrack1.peaks_vect_f)
+                        inputArg1 = inputArg1 + obj.noiseDataTrack1.peaks_vect_val(ii)*obj.noiseFactor*sin(2*pi*obj.noiseDataTrack1.peaks_vect_f(ii)*t + randn(1));
+                        inputArg2 = inputArg2 + obj.noiseDataTrack2.peaks_vect_val(ii)*obj.noiseFactor*sin(2*pi*obj.noiseDataTrack2.peaks_vect_f(ii)*t + randn(1));
+                        inputArg3 = inputArg3 + obj.noiseDataTrack3.peaks_vect_val(ii)*obj.noiseFactor*sin(2*pi*obj.noiseDataTrack3.peaks_vect_f(ii)*t + randn(1));
+                    end
+                    inputArg1 = inputArg1 + sqrt(obj.noiseDataTrack1.variance*obj.noiseFactor).*randn(length(inputArg1),1);
+                    inputArg2 = inputArg2 + sqrt(obj.noiseDataTrack2.variance*obj.noiseFactor).*randn(length(inputArg2),1);
+                    inputArg3 = inputArg3 + sqrt(obj.noiseDataTrack3.variance*obj.noiseFactor).*randn(length(inputArg3),1);
+                else
+                    error("This noise is not defined")
+                end
+            end
+
+            outputArg1 = inputArg1;
+            outputArg2 = inputArg2;
+            outputArg3 = inputArg3;
+        end
     end
 end
 
diff --git a/commonFunctions/sensors/SensorFault.m b/commonFunctions/sensors/SensorFault.m
index 8d7b6b623f8650932bbc25ca10ad150d8209787f..c201e86d8a8019940ea47d7ae1b97fe53a142ecc 100644
--- a/commonFunctions/sensors/SensorFault.m
+++ b/commonFunctions/sensors/SensorFault.m
@@ -19,6 +19,10 @@ classdef SensorFault < handle
         bit; % number of bits for the sensor ( if available)
         resolution; % resolution of the sensor
         
+        % noises
+        noiseType;                              % White (default) or Pink
+        noiseDataTrack1;
+        noiseFactor;
         noiseVariance; % Varianze for the gaussian white noise
         
         offset; % Offset in all directions
@@ -65,7 +69,7 @@ classdef SensorFault < handle
             obj = obj.reset();
         end
         
-        function outputArg = sens(obj,inputArg,temp)
+        function outputArg = sens(obj,inputArg,temp,t)
             %SENS Method to use the sensor.
             %   Gets the simulation data and extract the unideal sensor
             %   output
@@ -83,7 +87,7 @@ classdef SensorFault < handle
             % a characteristic of the transducer or sensor in question that
             % we already know it's present. 
             inputArg=obj.add2DOffset(inputArg,temp);
-            inputArg=obj.whiteNoise(inputArg);
+            inputArg=obj.addNoise(inputArg,t);
             inputArg=obj.addOffset(inputArg);
             inputArg=obj.addTempOffset(inputArg,temp);
             inputArg=obj.quantization(inputArg);
@@ -275,7 +279,7 @@ classdef SensorFault < handle
         end
         
         
-        function outputArg = whiteNoise(obj,inputArg)
+        function outputArg = addNoise(obj,inputArg,t)
             %WHITE_NOISE Includes gaussian white noise to the sensor data
             %   Adds gaussian white noise with variance noiseVariance
             %
@@ -288,10 +292,27 @@ classdef SensorFault < handle
             %  Outputs:
             %  outputArg: sensor data with white noise
             
-            if (~isempty(obj.noiseVariance))
-                %inputArg=inputArg+ones(size(inputArg)).*sqrt(obj.noiseVariance).*randn(1,1);,
-                inputArg=inputArg+sqrt(obj.noiseVariance).*randn(size(inputArg));
+            % if (~isempty(obj.noiseVariance))
+            %     %inputArg=inputArg+ones(size(inputArg)).*sqrt(obj.noiseVariance).*randn(1,1);,
+            %     inputArg=inputArg+sqrt(obj.noiseVariance).*randn(size(inputArg));
+            % end
+            % outputArg = inputArg;
+
+            if ~isempty(obj.noiseVariance)              % check for old results
+                inputArg = inputArg + sqrt(obj.noiseVariance).*randn(length(inputArg),1);
+            elseif ~isempty(obj.noiseDataTrack1)    
+                if strcmp(obj.noiseType, "white")
+                    inputArg = inputArg + sqrt(obj.noiseDataTrack1*obj.noiseFactor).*randn(length(inputArg),1);
+                elseif strcmp(obj.noiseType, "pink")
+                    for ii = 1:length(obj.noiseDataTrack1.peaks_vect_f)
+                        inputArg = inputArg + obj.noiseDataTrack1.peaks_vect_val(ii)*obj.noiseFactor*sin(2*pi*obj.noiseDataTrack1.peaks_vect_f(ii)*t + randn(1));
+                    end
+                    inputArg = inputArg + sqrt(obj.noiseDataTrack1.variance*obj.noiseFactor).*randn(length(inputArg),1);
+                else
+                    error("This noise is not defined")
+                end
             end
+
             outputArg = inputArg;
         end
                 
diff --git a/commonFunctions/sensors/SensorGPS.m b/commonFunctions/sensors/SensorGPS.m
index e1ae5adaa0acb1b292ad27190c2a1f8d42619011..93ee2f07464440c850e1ce23d05de79c05b6c6d3 100644
--- a/commonFunctions/sensors/SensorGPS.m
+++ b/commonFunctions/sensors/SensorGPS.m
@@ -18,12 +18,12 @@ classdef SensorGPS < Sensor3D
             obj=obj@Sensor3D();
         end
         
-        function [outPos, outVel] = sens(obj,state,temp,lat0,lon0)
+        function [outPos, outVel] = sens(obj,state,temp,lat0,lon0,t)
             mLat= 1/111132.95225 * state(1) + lat0;
             mLon= 1  / (111412.87733*cosd(mLat)) * state(2) + lon0;
             
             inputArg = [mLat; mLon; state(3:end)]; 
-            [outMeas] = sens@Sensor2D(obj,inputArg,temp);
+            [outMeas] = sens@Sensor2D(obj,inputArg,temp,t);
             outPos = outMeas(1:3);
             outVel = outMeas(4:6);
         end
diff --git a/commonFunctions/sensors/acquisition_Sys.m b/commonFunctions/sensors/acquisition_Sys.m
index 1ecefd078ddddff6cb237cbe887d8f779d988810..1f6890dac20749d9ac2d0e7e0fbe55f60a473311 100644
--- a/commonFunctions/sensors/acquisition_Sys.m
+++ b/commonFunctions/sensors/acquisition_Sys.m
@@ -37,7 +37,7 @@ for i_baro = 1:3
         if isfield(sensorData.barometer_sens{i_baro},'time')
             for ii=1:length(sensorData.barometer_sens{i_baro}.time)
                 sensorData.barometer_sens{i_baro}.measures(ii,1)        =      sensorSettings.barometer1.sens(sensorData.barometer_sens{i_baro}.measures(ii)/100,...
-                    sensorData.barometer_sens{i_baro}.temperature(ii,1) - 273.15);
+                    sensorData.barometer_sens{i_baro}.temperature(ii,1) - 273.15, t);
                 sensorData.barometer_sens{i_baro}.measures(ii,1)        =      sensorData.barometer_sens{i_baro}.measures(ii)*100;
                 [~, sensorData.barometer_sens{i_baro}.measures(ii,1)] = sensorSettings.barometer1.applyFailure(sensorData.barometer_sens{i_baro}.measures(ii), t);
                 sensorData.barometer_sens{i_baro}.z(ii,1)               =     -atmospalt(sensorData.barometer_sens{i_baro}.measures(ii),'None');
@@ -47,7 +47,7 @@ for i_baro = 1:3
         if isfield(sensorData.barometer_sens{3},'time')
             for ii=1:length(sensorData.barometer_sens{i_baro}.time)
                 sensorData.barometer_sens{i_baro}.measures(ii,1)        =      sensorSettings.barometer2.sens(sensorData.barometer_sens{i_baro}.measures(ii)/100,...
-                    sensorData.barometer_sens{i_baro}.temperature(ii,1) - 273.15);
+                    sensorData.barometer_sens{i_baro}.temperature(ii,1) - 273.15, t);
                 sensorData.barometer_sens{i_baro}.measures(ii,1)        =      sensorData.barometer_sens{i_baro}.measures(ii)*100;
                 [~, sensorData.barometer_sens{i_baro}.measures(ii,1)] = sensorSettings.barometer2.applyFailure(sensorData.barometer_sens{i_baro}.measures(ii), t);
                 sensorData.barometer_sens{i_baro}.z(ii,1)               =     -atmospalt(sensorData.barometer_sens{i_baro}.measures(ii),'None');
@@ -57,7 +57,7 @@ for i_baro = 1:3
         if isfield(sensorData.barometer_sens{3},'time')
             for ii=1:length(sensorData.barometer_sens{i_baro}.time)
                 sensorData.barometer_sens{i_baro}.measures(ii,1)        =      sensorSettings.barometer3.sens(sensorData.barometer_sens{i_baro}.measures(ii)/100,...
-                    sensorData.barometer_sens{i_baro}.temperature(ii,1) - 273.15);
+                    sensorData.barometer_sens{i_baro}.temperature(ii,1) - 273.15, t);
                 sensorData.barometer_sens{i_baro}.measures(ii,1)        =      sensorData.barometer_sens{i_baro}.measures(ii)*100;
                 [~, sensorData.barometer_sens{i_baro}.measures(ii,1)] = sensorSettings.barometer3.applyFailure(sensorData.barometer_sens{i_baro}.measures(ii), t);
                 sensorData.barometer_sens{i_baro}.z(ii,1)               =     -atmospalt(sensorData.barometer_sens{i_baro}.measures(ii),'None');
@@ -92,19 +92,19 @@ if isfield(sensorData.accelerometer,'time')
             sensorData.accelerometer.measures(ii,1)*1000/9.81,...
             sensorData.accelerometer.measures(ii,2)*1000/9.81,...
             sensorData.accelerometer.measures(ii,3)*1000/9.81,...
-            14.8500);
+            14.8500, t);
         [sensorData.gyro.measures(ii,1),sensorData.gyro.measures(ii,2),sensorData.gyro.measures(ii,3)]   =      ...
             sensorSettings.gyroscope.sens( ...
             sensorData.gyro.measures(ii,1)*1000*360/2/pi,...
             sensorData.gyro.measures(ii,2)*1000*360/2/pi,...
             sensorData.gyro.measures(ii,3)*1000*360/2/pi,...
-            14.8500);
+            14.8500, t);
         [sensorData.magnetometer.measures(ii,1),sensorData.magnetometer.measures(ii,2),sensorData.magnetometer.measures(ii,3)]      =      ...
             sensorSettings.magnetometer.sens( ...
             sensorData.magnetometer.measures(ii,1)*0.01,...
             sensorData.magnetometer.measures(ii,2)*0.01,...
             sensorData.magnetometer.measures(ii,3)*0.01,...
-            14.8500);
+            14.8500, t);
         sensorData.accelerometer.measures(ii,:) = sensorData.accelerometer.measures(ii,:)*9.81/1000;
         sensorData.gyro.measures(ii,:)  = sensorData.gyro.measures(ii,:)*2*pi/360/1000;
     end
@@ -129,7 +129,7 @@ if isfield(sensorData.gps,'time')
                     sensorData.gps.velocityMeasures(ii,3); ];
 
         [sensorData.gps.positionMeasures(ii,1:3),sensorData.gps.velocityMeasures(ii,1:3)] = ...
-            sensorSettings.GPS.sens(gps_data, 14.8500, sensorSettings.lat0, sensorSettings.lon0);
+            sensorSettings.GPS.sens(gps_data, 14.8500, sensorSettings.lat0, sensorSettings.lon0, t);
         
     end
     if length(sensorData.gps.time)>1
@@ -148,9 +148,9 @@ if isfield(sensorData.pitot,'time')
     airspeed = zeros(length(sensorData.pitot.time),1);
     for ii=1:length(sensorData.pitot.time)
         sensorData.pitot.pTotMeasures(ii)       =   sensorSettings.pitot_total.sens(sensorData.pitot.pTotMeasures(ii)/100,...
-            sensorData.pitot.temperature(ii) - 273.15);
+            sensorData.pitot.temperature(ii) - 273.15, t);
         sensorData.pitot.pStatMeasures(ii)      =   sensorSettings.pitot_static.sens(sensorData.pitot.pStatMeasures(ii)/100,...
-            sensorData.pitot.temperature(ii) - 273.15);
+            sensorData.pitot.temperature(ii) - 273.15, t);
         sensorData.pitot.pTotMeasures(ii)       = sensorData.pitot.pTotMeasures(ii)*100;
         sensorData.pitot.pStatMeasures(ii)      = sensorData.pitot.pStatMeasures(ii)*100;
         gamma = 1.4;
@@ -180,7 +180,7 @@ end
 %% Chamber Pressure acquisition loop
 if contains(mission.name,'2023') || contains(mission.name,'2024') || contains(mission.name,'2025')
     for ii=1:length(sensorData.chamberPressure.time)
-        sensorData.chamberPressure.measures(ii) = sensorSettings.comb_chamber.sens(sensorData.chamberPressure.measures(ii)*1000,50); % 50 temperature in °C (random)
+        sensorData.chamberPressure.measures(ii) = sensorSettings.comb_chamber.sens(sensorData.chamberPressure.measures(ii)*1000,50,t); % 50 temperature in °C (random)
         sensorData.chamberPressure.measures(ii) = sensorData.chamberPressure.measures(ii)/1000;
     end
     if length(sensorData.chamberPressure.time)>1
diff --git a/data/2024_Lyra_Portugal_October/initSensors2024_Lyra_Portugal_October.m b/data/2024_Lyra_Portugal_October/initSensors2024_Lyra_Portugal_October.m
index 2d5a3ff1caf2d8bfb1d8b46277b1f134ffd721c0..6a30ede1ca9b363442f601d06faff5a8f3ebfada 100644
--- a/data/2024_Lyra_Portugal_October/initSensors2024_Lyra_Portugal_October.m
+++ b/data/2024_Lyra_Portugal_October/initSensors2024_Lyra_Portugal_October.m
@@ -14,7 +14,13 @@ sensorSettings.barometer1.maxMeasurementRange   =   1000;                   % 11
 sensorSettings.barometer1.minMeasurementRange   =   0;                      % 300, 10 in mbar
 sensorSettings.barometer1.bit                   =   24;                     % adc on rocket is 24 bits 
 sensorSettings.barometer1.resolution = (sensorSettings.barometer1.maxMeasurementRange -sensorSettings.barometer1.minMeasurementRange)/(2^sensorSettings.barometer1.bit);
-sensorSettings.barometer1.noiseVariance         =   1;                      % mbar^2
+
+
+
+sensorSettings.barometer1 = loadSensorNoiseData(sensorSettings.barometer1, Lyra_Port_sensor_vect, "main_Main_StaticPressureData1.csv", 1);
+% sensorSettings.barometer1.noiseVariance         =   1;                      % mbar^2
+
+
 
 sensorSettings.barometer1.fault_time = 9;           % if negative it will be generated at random between a max and a min value
 sensorSettings.barometer1.max_fault_time = 96;      % max seconds to wait before possible fault
@@ -43,7 +49,13 @@ sensorSettings.barometer2.maxMeasurementRange   =   1000;                   % 11
 sensorSettings.barometer2.minMeasurementRange   =   0;                      % 300, 10 in mbar
 sensorSettings.barometer2.bit                   =   24;                     % adc on rocket is 24 bits 
 sensorSettings.barometer2.resolution = (sensorSettings.barometer2.maxMeasurementRange -sensorSettings.barometer2.minMeasurementRange)/(2^sensorSettings.barometer2.bit);
-sensorSettings.barometer2.noiseVariance         =   1;                      % mbar^2
+
+
+
+sensorSettings.barometer2 = loadSensorNoiseData(sensorSettings.barometer2, Lyra_Port_sensor_vect, "main_Main_StaticPressureData2.csv", 1);
+% sensorSettings.barometer2.noiseVariance         =   1;                      % mbar^2
+
+
 
 sensorSettings.barometer2.fault_time = -1;          % if negative it will be generated at random between a max and a min value
 sensorSettings.barometer2.max_fault_time = 96;      % max seconds to wait before possible fault
@@ -72,7 +84,13 @@ sensorSettings.barometer3.maxMeasurementRange   =   4060;                   % 11
 sensorSettings.barometer3.minMeasurementRange   =   260;                    % 300, 10 in mbar
 sensorSettings.barometer3.bit                   =   24; 
 sensorSettings.barometer3.resolution = (sensorSettings.barometer3.maxMeasurementRange -sensorSettings.barometer3.minMeasurementRange)/(2^sensorSettings.barometer3.bit);
-sensorSettings.barometer3.noiseVariance         =   4.06;                   % guess in mbar
+
+
+
+sensorSettings.barometer3 = loadSensorNoiseData(sensorSettings.barometer3, Lyra_Port_sensor_vect, "main_Boardcore_LPS28DFWData.csv", 1);
+% sensorSettings.barometer3.noiseVariance         =   4.06;                   % guess in mbar
+
+
 
 sensorSettings.barometer3.fault_time = -1;          % if negative it will be generated at random between a max and a min value
 sensorSettings.barometer3.max_fault_time = 96;      % max seconds to wait before possible fault
@@ -100,7 +118,14 @@ sensorSettings.accelerometer = Sensor3D();
 sensorSettings.accelerometer.maxMeasurementRange   =   16000;                       % 2000, 4000, 8000, 16000 in mg
 sensorSettings.accelerometer.minMeasurementRange   =   -16000;                      % -2000, -4000, -8000, -16000 in mg
 sensorSettings.accelerometer.bit                   =   16; 
-sensorSettings.accelerometer.noiseVariance         =   10;                          % guess in mg 
+
+
+
+sensorSettings.accelerometer = loadSensorNoiseData(sensorSettings.accelerometer, Lyra_Port_sensor_vect, "main_Boardcore_LSM6DSRXData.csv", 1);
+% sensorSettings.accelerometer.noiseVariance         =   10;                          % guess in mg 
+
+
+
 sensorSettings.accelerometer.offsetX               =   0;                           % +-90 in mg
 sensorSettings.accelerometer.offsetY               =   0;                           % +-90 in mg
 sensorSettings.accelerometer.offsetZ               =   0;                           % +-90 in mg
@@ -113,7 +138,14 @@ sensorSettings.gyroscope = Sensor3D();
 sensorSettings.gyroscope.maxMeasurementRange   =   245e3;                           % 245e3, 500e3, 2000e3 in mdps
 sensorSettings.gyroscope.minMeasurementRange   =   -245e3;                          % -245e3, -500e3, -2000e3 in mdps
 sensorSettings.gyroscope.bit                   =   16;
-sensorSettings.gyroscope.noiseVariance         =   50;                              % guess in mdps    100 was original
+
+
+
+sensorSettings.gyroscope = loadSensorNoiseData(sensorSettings.gyroscope, Lyra_Port_sensor_vect, "main_Boardcore_LSM6DSRXData.csv", 2);
+% sensorSettings.gyroscope.noiseVariance         =   50;                              % guess in mdps    100 was original
+
+
+
 sensorSettings.gyroscope.offsetX               =   0;                               % +-30e3 in mdps
 sensorSettings.gyroscope.offsetY               =   0;                               % +-30e3 in mdps
 sensorSettings.gyroscope.offsetZ               =   0;                               % +-30e3 in mdps
@@ -151,13 +183,13 @@ sensorSettings.spheroid            =   wgs84Ellipsoid;
 sensorSettings.comb_chamber = Sensor2D();
 
 
-sensorSettings.comb_chamber = loadSensorNoiseData(sensorSettings.comb_chamber, Lyra_Port_sensor_vect, "motor_Motor_TopTankPressureData.csv");
+sensorSettings.comb_chamber = loadSensorNoiseData(sensorSettings.comb_chamber, Lyra_Port_sensor_vect, "motor_Motor_TopTankPressureData.csv", 1);
 
 
 
 sensorSettings.comb_chamber.maxMeasurementRange   =   40000;                        % 1100, 1300 in mbar
 sensorSettings.comb_chamber.minMeasurementRange   =   0;                            % 300, 10 in mbar
-sensorSettings.comb_chamber.noiseVariance         =   60000;                        % mbar
+% sensorSettings.comb_chamber.noiseVariance         =   60000;                        % mbar
 % sensorSettings.comb_chamber.error2dOffset         =   ep_data;                      % [p in mbar, T in Celsius, ep in mbar]
 sensorSettings.comb_chamber.resolution            =   1;                            % random value stolen from baro
 sensorSettings.comb_chamber.offset                =   0;
@@ -168,14 +200,16 @@ sensorSettings.pitot_static = Sensor2D();
 sensorSettings.pitot_static.maxMeasurementRange   =   1034.21;                      % mbar (15 psi)
 sensorSettings.pitot_static.minMeasurementRange   =   0;
 sensorSettings.pitot_static.bit                   =   12; 
-sensorSettings.pitot_static.noiseVariance         =   0.043043;                     % from flight logs
+sensorSettings.pitot_static = loadSensorNoiseData(sensorSettings.pitot_static, Lyra_Port_sensor_vect, "payload_Payload_StaticPressureData.csv", 1);
+% sensorSettings.pitot_static.noiseVariance         =   0.043043;                     % from flight logs
 
 % total pressure
 sensorSettings.pitot_total = Sensor2D();
 sensorSettings.pitot_total.maxMeasurementRange   =   2*1034.21;                     % mbar (30 psi)
 sensorSettings.pitot_total.minMeasurementRange   =   0;
 sensorSettings.pitot_total.bit                   =   12; 
-sensorSettings.pitot_total.noiseVariance         =   2*0.043043;                    % from flight logs
+sensorSettings.pitot_total = loadSensorNoiseData(sensorSettings.pitot_total, Lyra_Port_sensor_vect, "payload_Payload_StaticPressureData.csv", 1);
+% sensorSettings.pitot_total.noiseVariance         =   2*0.043043;                    % from flight logs
 
 %% total sensor initialization 
 % 
@@ -185,27 +219,45 @@ sensorSettings.pitot_total.noiseVariance         =   2*0.043043;
 
 %% Functions
 
-function [obj] = loadSensorNoiseData(obj, vect, name)
+function [obj] = loadSensorNoiseData(obj, vect, name, number)
 
 len = length(vect);
 
 for ii = 1:len
     found = strcmp(name, vect(ii).name);
     if found
-        break
+        if number>1
+            number = number - 1;
+        else
+            break
+        end
     end
 end
 
-obj.noiseType = vect(ii).noise_type;
-
-if strcmp("Sensor2D", class(obj))
-    obj.noiseDataTrack1 = vect(ii).track1;
-elseif strcmp("Sensor3D", class(obj)) || strcmp("SensorGPS", class(obj))
-    obj.noiseDataTrack1 = vect(ii).track1;
-    obj.noiseDataTrack2 = vect(ii).track2;
-    obj.noiseDataTrack3 = vect(ii).track3;
+if found
+    obj.noiseType = vect(ii).noise_type;
+    
+    if strcmp("Sensor2D", class(obj)) || strcmp("SensorFault", class(obj))
+        obj.noiseDataTrack1 = vect(ii).track1;
+        obj.noiseFactor = vect(ii).factor;
+    elseif strcmp("Sensor3D", class(obj)) || strcmp("SensorGPS", class(obj))
+        obj.noiseDataTrack1 = vect(ii).track1;
+        obj.noiseDataTrack2 = vect(ii).track2;
+        obj.noiseDataTrack3 = vect(ii).track3;
+        obj.noiseFactor = vect(ii).factor;
+    else
+        error("Sensor not defined")
+    end
 else
-    error("Not found")
+    if strcmp("Sensor2D", class(obj)) || strcmp("SensorFault", class(obj))
+        obj.noiseDataTrack1 = [];
+    elseif strcmp("Sensor3D", class(obj)) || strcmp("SensorGPS", class(obj))
+        obj.noiseDataTrack1 = [];
+        obj.noiseDataTrack2 = [];
+        obj.noiseDataTrack3 = [];
+    else
+        error("Sensor not defined")
+    end
 end
 
 end