Commit ac0136cba1ac5792aa6275b6657f1d8050302fbc
1 parent
4b03c7b923
Exists in
master
add overlapping adev scripts
Showing 2 changed files with 90 additions and 0 deletions Side-by-side Diff
oallanplot.m
| 1 | +#!/usr/bin/octave-cli --persist | |
| 2 | + | |
| 3 | +# allanplot.m computes Allan deviation from temporal dataset | |
| 4 | +# | |
| 5 | +# use : allanplot.m file.dat column_i gain_i ad_opt | |
| 6 | +# allanplot.m file.dat [column_i,column_j] [gain_i,gain_j] [ad_opt_i,ad_opt_j] | |
| 7 | +# | |
| 8 | +# inputs: | |
| 9 | +# file.dat : [string] file to load | |
| 10 | +# columns : int or [int] columns to load | |
| 11 | +# fs : int or [int] sampling frequency | |
| 12 | +# gains : float or [float] gains to apply | |
| 13 | +# ad_opt : int or [int] ad options : | |
| 14 | +# 0 direct allan computation | |
| 15 | +# 1 drift removed ad | |
| 16 | +# 2 relative ad | |
| 17 | +# 3 relative drift removed ad | |
| 18 | + | |
| 19 | +filename = argv(){1}; | |
| 20 | +col = eval(argv(){2}); | |
| 21 | +fs = eval(argv(){3}); | |
| 22 | +mult = eval(argv(){4}); | |
| 23 | +ad_opt = eval(argv(){5}); | |
| 24 | + | |
| 25 | +if length(col) == length(mult) | |
| 26 | + figure | |
| 27 | + hold all | |
| 28 | + grid on | |
| 29 | + cc = 'bkcgmry'; | |
| 30 | + for i = [1:length(col)] | |
| 31 | + data.freq = load(filename)(:,col(i)).*mult(i); | |
| 32 | + if nargin == 5 | |
| 33 | + if ad_opt(i) == 1 | |
| 34 | + printf(strcat(filename, ' col', num2str(col(i)), ' drift removed\n\n')) | |
| 35 | + data.freq = detrend(data.freq); | |
| 36 | + elseif ad_opt(i) == 2 | |
| 37 | + printf(strcat(filename, ' col', num2str(col(i)), ' relative ad : mean=', num2str(mean(data.freq)), '\n\n')) | |
| 38 | + data.freq = data.freq./mean(data.freq); | |
| 39 | + elseif ad_opt(i) == 3 | |
| 40 | + printf(strcat(filename, ' col', num2str(col(i)), ' drift removed relative ad\n\n')) | |
| 41 | + data.freq = detrend(data.freq./mean(data.freq)); | |
| 42 | + end | |
| 43 | + endif | |
| 44 | + data.rate = fs(i); | |
| 45 | + [ad, S, err, tau] = allan_overlap(data, horzcat(reshape([1:0.1:9]'.*10.^[0:round(log10(length(data.freq)))-1],1,[]), 10^(round(log10(length(data.freq)))-1))./data.rate, strcat(strsplit(filename, '/'){end}, num2str(i)), 0); | |
| 46 | + loglogerr(tau, ad, err, strcat(cc(mod(i, length(cc))), '-s')) | |
| 47 | + leg{i} = strcat(filename, ' col', num2str(col(i))); | |
| 48 | + axis(10.^ceil(log10([tau(1), tau(end)]))) | |
| 49 | + hold on | |
| 50 | + end | |
| 51 | + legend(leg) | |
| 52 | + input("Press to continue..."); | |
| 53 | +end | |
| 54 | +exit |
temp2oallan.m
| 1 | +#!/usr/bin/octave-cli | |
| 2 | + | |
| 3 | +filename = argv(){1}; | |
| 4 | +col = eval(argv(){2}); | |
| 5 | +mult = eval(argv(){3}); | |
| 6 | + | |
| 7 | +filename = argv(){1}; | |
| 8 | +col = eval(argv(){2}); | |
| 9 | +mult = eval(argv(){3}); | |
| 10 | +ad_opt = eval(argv(){4}); | |
| 11 | + | |
| 12 | +if length(col) == length(mult) | |
| 13 | + for i = [1:length(col)] | |
| 14 | + data.freq = load(filename)(:,col(i)).*mult(i); | |
| 15 | + if nargin == 4 | |
| 16 | + if ad_opt(i) == 1 | |
| 17 | + printf(strcat(filename, ' col', num2str(col(i)), ' drift removed\n\n')) | |
| 18 | + data.freq = detrend(data.freq); | |
| 19 | + elseif ad_opt(i) == 2 | |
| 20 | + printf(strcat(filename, ' col', num2str(col(i)), ' relative ad : mean=', num2str(mean(data.freq)), '\n\n')) | |
| 21 | + data.freq = data.freq./mean(data.freq); | |
| 22 | + elseif ad_opt(i) == 3 | |
| 23 | + printf(strcat(filename, ' col', num2str(col(i)), ' drift removed relative ad\n\n')) | |
| 24 | + data.freq = detrend(data.freq./mean(data.freq)); | |
| 25 | + end | |
| 26 | + endif | |
| 27 | + data.rate = 1; | |
| 28 | + [ad, S, err, tau] = allan_overlap(data, 2.^[0:nextpow2(length(data.freq))-3]./data.rate, strcat(strsplit(filename, '/'){end}, num2str(i)), 0); | |
| 29 | + ad_tosave{i} = vertcat(ad, err)'; | |
| 30 | + end | |
| 31 | +tosave = tau'; | |
| 32 | +for i = [1:length(col)] | |
| 33 | + tosave = horzcat(tosave, ad_tosave{i}); | |
| 34 | +end | |
| 35 | +save('-ascii', strcat(strsplit(filename, '.'){1}, '_ad.dat'), 'tosave'); | |
| 36 | +end |