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