clc close all clear all Ts = 0.2; N = 1e6; D = 5; data_raw.rate = 1/Ts; data_raw.freq = 1/2.*noise(N, 1, 'white') + 1.*noise(N, 1, 'pink') + 1.*noise(N, 1, 'brown') + 0e-8.*[0:N-1]'; t_raw = [0:length(data_raw.freq)-1]; [ad_raw, S, err_raw, tau_raw] = allan(data_raw, 2.^[0:20].*Ts, 'raw',0); data_avg.rate = 1/(Ts*D); data_avg.freq = mean(reshape(data_raw.freq', [D, N/D]))'; t_avg = D.*[1:length(data_avg.freq)]; [ad_avg, S, err_avg, tau_avg] = allan(data_avg, 2.^[0:20].*Ts*D, 'avg',0); data_decim.rate = 1/(Ts*D); data_decim.freq = reshape(data_raw.freq', [D, N/D])(1,:)'; t_decim = D.*[0:length(data_decim.freq)-1]; [ad_decim, S, err_decim, tau_decim] = allan(data_decim, 2.^[0:20].*Ts*D, 'decim',0); figure hold on loglogerr(tau_raw, ad_raw, err_raw, 'b') loglogerr(tau_decim, ad_decim, err_decim, 'm') loglogerr(tau_avg, ad_avg, err_avg, 'r') grid on figure hold on plot(t_raw, data_raw.freq, 'b') plot(t_decim, data_decim.freq, 'm') plot(t_avg, data_avg.freq, 'r') grid on