diff --git a/commonFunctions/sensors/NoiseAnalysis/Functions/NoiseAnalysis_colored.m b/commonFunctions/sensors/NoiseAnalysis/Functions/NoiseAnalysis_colored.m
index d525ae57e4b01e1abf43083b7b39d76fa16b018e..f28515054d787641d2d933ec8ec901f463b2d3e0 100644
--- a/commonFunctions/sensors/NoiseAnalysis/Functions/NoiseAnalysis_colored.m
+++ b/commonFunctions/sensors/NoiseAnalysis/Functions/NoiseAnalysis_colored.m
@@ -87,15 +87,15 @@ if ~plot_val
     end
     switch track
         case 2
-            sensor_vect(sensor_number).track1.white_variance = white_variance*sensor_vect(sensor_number).factor;
+            sensor_vect(sensor_number).track1.white_variance = white_variance;
             sensor_vect(sensor_number).track1.fcut = fcut;
             sensor_vect(sensor_number).track1.butterOrder = butterOrder;
         case 3
-            sensor_vect(sensor_number).track2.white_variance = white_variance*sensor_vect(sensor_number).factor;
+            sensor_vect(sensor_number).track2.white_variance = white_variance;
             sensor_vect(sensor_number).track2.fcut = fcut;
             sensor_vect(sensor_number).track2.butterOrder = butterOrder;
         case 4
-            sensor_vect(sensor_number).track3.white_variance = white_variance*sensor_vect(sensor_number).factor;
+            sensor_vect(sensor_number).track3.white_variance = white_variance;
             sensor_vect(sensor_number).track3.fcut = fcut;
             sensor_vect(sensor_number).track3.butterOrder = butterOrder;
     end
diff --git a/commonFunctions/sensors/NoiseAnalysis/Functions/NoiseAnalysis_pink.m b/commonFunctions/sensors/NoiseAnalysis/Functions/NoiseAnalysis_pink.m
index 9daf7a7fb24c94bca092a2397dfcb508decb409d..16acacc162ed493b69dfc9f39ca15b586e33901d 100644
--- a/commonFunctions/sensors/NoiseAnalysis/Functions/NoiseAnalysis_pink.m
+++ b/commonFunctions/sensors/NoiseAnalysis/Functions/NoiseAnalysis_pink.m
@@ -139,15 +139,15 @@ if ~plot_val
         case 2
             sensor_vect(sensor_number).track1.peaks_vect_f = peaks_vect_f;
             sensor_vect(sensor_number).track1.peaks_vect_val = factor*peaks_vect_val;
-            sensor_vect(sensor_number).track1.variance = white_variance*sensor_vect(sensor_number).factor;
+            sensor_vect(sensor_number).track1.variance = white_variance;
         case 3
             sensor_vect(sensor_number).track2.peaks_vect_f = peaks_vect_f;
             sensor_vect(sensor_number).track2.peaks_vect_val = factor*peaks_vect_val;
-            sensor_vect(sensor_number).track2.variance = white_variance*sensor_vect(sensor_number).factor;
+            sensor_vect(sensor_number).track2.variance = white_variance;
         case 4
             sensor_vect(sensor_number).track3.peaks_vect_f = peaks_vect_f;
             sensor_vect(sensor_number).track3.peaks_vect_val = factor*peaks_vect_val;
-            sensor_vect(sensor_number).track3.variance = white_variance*sensor_vect(sensor_number).factor;
+            sensor_vect(sensor_number).track3.variance = white_variance;
     end
 end
 
diff --git a/commonFunctions/sensors/NoiseAnalysis/main_noiseAnalysis.m b/commonFunctions/sensors/NoiseAnalysis/main_noiseAnalysis.m
index 87c440573e25e3c8e3634f8b474de65accc91048..b0cecd728494b0ba7728e5cc0dea82d96eb0153a 100644
--- a/commonFunctions/sensors/NoiseAnalysis/main_noiseAnalysis.m
+++ b/commonFunctions/sensors/NoiseAnalysis/main_noiseAnalysis.m
@@ -5,7 +5,7 @@ restoredefaultpath
 
 %% Path
 
-matFolder = "";
+matFolder = "C:\Users\stebe\Desktop\New data";
 addpath(genpath("./Functions"))
 addpath(genpath(matFolder))
 
diff --git a/commonFunctions/sensors/Sensor1D.m b/commonFunctions/sensors/Sensor1D.m
index 8c7f22615983149811af9f9c854f647cd8698bd4..dd2fcc5067352b8bb00bcdbc20f27e89b33f1176 100644
--- a/commonFunctions/sensors/Sensor1D.m
+++ b/commonFunctions/sensors/Sensor1D.m
@@ -21,6 +21,7 @@ classdef Sensor1D < handle
         noiseDataTrack1;
         noiseFactor;
         colored_opts;
+
         noiseVariance;                          % Defining gaussian white noise
         
         % offset
@@ -100,11 +101,13 @@ classdef Sensor1D < handle
                         error("Sensor not defined")
                     end
 
-                    if strcmp(obj.noiseType, "colored")
+                    if strcmp(obj.noiseType, "colored") || strcmp(obj.noiseType, "pink")
                         obj.colored_opts.white_variance = vect(ii).colored_data.white_variance;
                         obj.colored_opts.fcut = vect(ii).colored_data.fcut;
                         obj.colored_opts.butterOrder = vect(ii).colored_data.butterOrder;
-                        obj.colored_opts.filterStatus = 0;
+                        obj.colored_opts.filterStatus1 = 0;
+                        obj.colored_opts.filterStatus2 = 0;
+                        obj.colored_opts.filterStatus3 = 0;
                     end
                 else
                     if strcmp("Sensor1D", class(obj)) || strcmp("SensorFault", class(obj))
@@ -156,11 +159,15 @@ classdef Sensor1D < handle
                     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);
-                elseif strcmp(obj.noiseType, "colored")
-                    inputArg = inputArg + sqrt(obj.colored_opts.white_variance*obj.noiseFactor).*randn(length(inputArg),1);
+                    % Colored noise
+                    white_noise = sqrt(obj.noiseDataTrack1.variance*obj.noiseFactor).*randn(length(inputArg),1);
                     [b, a] = butter(obj.colored_opts.butterOrder, obj.colored_opts.fcut, 'low');
-                    [inputArg, obj.colored_opts.filterStatus] = filter(b, a, inputArg, obj.colored_opts.filterStatus);
+                    [colored_noise, obj.colored_opts.filterStatus1] = filter(b, a, white_noise, obj.colored_opts.filterStatus1);
+                    inputArg = inputArg + colored_noise;
+                elseif strcmp(obj.noiseType, "colored")
+                    inputArg = inputArg + sqrt(obj.noiseDataTrack1.white_variance*obj.noiseFactor).*randn(length(inputArg),1);
+                    [b, a] = butter(obj.noiseDataTrack1.butterOrder, obj.noiseDataTrack1.fcut, 'low');
+                    [inputArg, obj.colored_opts.filterStatus1] = filter(b, a, inputArg, obj.colored_opts.filterStatus1);
                 else
                     error("This noise is not defined")
                 end
diff --git a/commonFunctions/sensors/Sensor3D.m b/commonFunctions/sensors/Sensor3D.m
index bada2453af6fecca427344657d9d96c789eb80d6..512645625bd255ea60816bc7345f6559f800fd72 100644
--- a/commonFunctions/sensors/Sensor3D.m
+++ b/commonFunctions/sensors/Sensor3D.m
@@ -135,15 +135,38 @@ classdef Sensor3D < Sensor1D
                     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));
+                        inputArg1 = inputArg1 + obj.noiseDataTrack1.peaks_vect_val(ii)*sin(2*pi*obj.noiseDataTrack1.peaks_vect_f(ii)*t + randn(1));
+                        inputArg2 = inputArg2 + obj.noiseDataTrack2.peaks_vect_val(ii)*sin(2*pi*obj.noiseDataTrack2.peaks_vect_f(ii)*t + randn(1));
+                        inputArg3 = inputArg3 + obj.noiseDataTrack3.peaks_vect_val(ii)*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);
+                    % Colored noise
+                    white_noise1 = sqrt(obj.noiseDataTrack1.variance*obj.noiseFactor).*randn(1,1);
+                    [b1, a1] = butter(obj.noiseDataTrack1.butterOrder, obj.noiseDataTrack1.fcut, 'low');
+                    [colored_noise1, obj.colored_opts.filterStatus1] = filter(b1, a1, white_noise1, obj.colored_opts.filterStatus1);
+                    white_noise2 = sqrt(obj.noiseDataTrack2.variance*obj.noiseFactor).*randn(1,1);
+                    [b2, a2] = butter(obj.noiseDataTrack2.butterOrder, obj.noiseDataTrack2.fcut, 'low');
+                    [colored_noise2, obj.colored_opts.filterStatus2] = filter(b2, a2, white_noise2, obj.colored_opts.filterStatus2);
+                    white_noise3 = sqrt(obj.noiseDataTrack3.variance*obj.noiseFactor).*randn(1,1);
+                    [b3, a3] = butter(obj.noiseDataTrack3.butterOrder, obj.noiseDataTrack3.fcut, 'low');
+                    [colored_noise3, obj.colored_opts.filterStatus3] = filter(b3, a3, white_noise3, obj.colored_opts.filterStatus3);
+
+                    inputArg1 = inputArg1 + colored_noise1;
+                    inputArg2 = inputArg2 + colored_noise2;
+                    inputArg3 = inputArg3 + colored_noise3;
                 elseif strcmp(obj.noiseType, "colored")
-                    error("Yet to be implemented")
+                    white_noise1 = sqrt(obj.noiseDataTrack1.variance*obj.noiseFactor).*randn(1,1);
+                    [b1, a1] = butter(obj.noiseDataTrack1.butterOrder, obj.noiseDataTrack1.fcut, 'low');
+                    [colored_noise1, obj.colored_opts.filterStatus1] = filter(b1, a1, white_noise1, obj.colored_opts.filterStatus1);
+                    white_noise2 = sqrt(obj.noiseDataTrack2.variance*obj.noiseFactor).*randn(1,1);
+                    [b2, a2] = butter(obj.noiseDataTrack2.butterOrder, obj.noiseDataTrack2.fcut, 'low');
+                    [colored_noise2, obj.colored_opts.filterStatus2] = filter(b2, a2, white_noise2, obj.colored_opts.filterStatus2);
+                    white_noise3 = sqrt(obj.noiseDataTrack3.variance*obj.noiseFactor).*randn(1,1);
+                    [b3, a3] = butter(obj.noiseDataTrack3.butterOrder, obj.noiseDataTrack3.fcut, 'low');
+                    [colored_noise3, obj.colored_opts.filterStatus3] = filter(b3, a3, white_noise3, obj.colored_opts.filterStatus3);
+
+                    inputArg1 = inputArg1 + colored_noise1;
+                    inputArg2 = inputArg2 + colored_noise2;
+                    inputArg3 = inputArg3 + colored_noise3;
                 else
                     error("This noise is not defined")
                 end
diff --git a/data/2024_Lyra_Portugal_October/Lyra_Port_sensor_vect_res.mat b/data/2024_Lyra_Portugal_October/Lyra_Port_sensor_vect_res.mat
index 2c3b98ad9def8becb8ced991dfe7f38b560308d0..0b806e6b498b7f8c1b7a91c4cc43ae2c1a5c0a80 100644
Binary files a/data/2024_Lyra_Portugal_October/Lyra_Port_sensor_vect_res.mat and b/data/2024_Lyra_Portugal_October/Lyra_Port_sensor_vect_res.mat differ