Commit 0cbce28efb0bcd6eb69b658f0a0a8ff732e12456

Authored by bmarechal
1 parent f893fd827f
Exists in master

sim_fft-adev: add octave simulations about fft-adev

Showing 4 changed files with 174 additions and 0 deletions Inline Diff

sim_fft-adev/ad_cov.m
File was created 1 clear all
2 close all
3 clc
4
5 N = 1e5;
6 Ts = 1;
7
8 dc.rate = Ts;
9 d1.rate = Ts;
10 d2.rate = Ts;
11 dd.rate = Ts;
12
13 r = 10;
14
15 com = noise(N, 1, 'brown');
16 n1 = r.*noise(N, 1, 'brown');
17 n2 = r.*noise(N, 1, 'brown');
18
19 dc.freq = com;
20 d1.freq = com.+n1;
21 d2.freq = com.+n2;
22 dd.freq = d1.freq;
23 dd.freq2 = d2.freq;
24
25 [ad_dc, S, err_dc, tau_dc] = allan(dc,2.^[0:20],'dc',0);
26 [ad_d1, S, err_d1, tau_d1] = allan(d1,2.^[0:20],'d1',0);
27 [ad_d2, S, err_d2, tau_d2] = allan(d2,2.^[0:20],'d2',0);
28 [ad_dd, S, err_dd, tau_dd] = allan_cov(dd,2.^[0:20],'dd',0);
29
30 figure
sim_fft-adev/adev_averaging.m
File was created 1 clc
2 close all
3 clear all
4
5 Ts = 0.2;
6 N = 1e6;
7 D = 5;
8
9 data_raw.rate = 1/Ts;
10 data_raw.freq = 1/2.*noise(N, 1, 'white') + 1.*noise(N, 1, 'pink') + 1.*noise(N, 1, 'brown') + 0e-8.*[0:N-1]';
11 t_raw = [0:length(data_raw.freq)-1];
12 [ad_raw, S, err_raw, tau_raw] = allan(data_raw, 2.^[0:20].*Ts, 'raw',0);
13
14 data_avg.rate = 1/(Ts*D);
15 data_avg.freq = mean(reshape(data_raw.freq', [D, N/D]))';
16 t_avg = D.*[1:length(data_avg.freq)];
17 [ad_avg, S, err_avg, tau_avg] = allan(data_avg, 2.^[0:20].*Ts*D, 'avg',0);
18
19 data_decim.rate = 1/(Ts*D);
20 data_decim.freq = reshape(data_raw.freq', [D, N/D])(1,:)';
21 t_decim = D.*[0:length(data_decim.freq)-1];
22 [ad_decim, S, err_decim, tau_decim] = allan(data_decim, 2.^[0:20].*Ts*D, 'decim',0);
23
24 figure
25 hold on
26 loglogerr(tau_raw, ad_raw, err_raw, 'b')
27 loglogerr(tau_decim, ad_decim, err_decim, 'm')
28 loglogerr(tau_avg, ad_avg, err_avg, 'r')
29 grid on
30
sim_fft-adev/adev_tf.m
File was created 1 clc
2 close all
3 clear all
4
5 %%
6
7 N = 1e5;
8 G = tf(1, [1e3,1]);
9
10 %%
11
12 data_white.rate = 1;
13 data_white.freq = noise(N, 1, 'white');
14 [ad_white, S, err_white, tau] = allan(data_white, 2.^[0:20], 'white noise',0);
15
16 data_white_f.rate = 1;
17 data_white_f.freq = lsim(G, data_white.freq, 1:length(data_white.freq));
18 [ad_white_f, S, err_white_f, tau] = allan(data_white_f, 2.^[0:20], 'white noise filtered',0);
19
20 %%
21
22 data_pink.rate = 1;
23 data_pink.freq = noise(N, 1, 'pink');
24 [ad_pink, S, err_pink, tau] = allan(data_pink, 2.^[0:20], 'pink noise',0);
25
26 data_pink_f.rate = 1;
27 data_pink_f.freq = lsim(G, data_pink.freq, 1:length(data_pink.freq));
28 [ad_pink_f, S, err_pink_f, tau] = allan(data_pink_f, 2.^[0:20], 'pink noise filtered',0);
29
30 %%
31
32 data_brown.rate = 1;
33 data_brown.freq = noise(N, 1, 'brown');
34 [ad_brown, S, err_brown, tau] = allan(data_brown, 2.^[0:20], 'brown noise',0);
35
36 data_brown_f.rate = 1;
37 data_brown_f.freq = lsim(G, data_brown.freq, 1:length(data_brown.freq));
38 [ad_brown_f, S, err_brown_f, tau] = allan(data_brown_f, 2.^[0:20], 'brown noise filtered',0);
39
40 %%
41
42 data_red.rate = 1;
43 data_red.freq = noise(N, 1, 'red');
44 [ad_red, S, err_red, tau] = allan(data_red, 2.^[0:20], 'red noise',0);
45
46 data_red_f.rate = 1;
sim_fft-adev/psd_tf.m
File was created 1 clc
2 close all
3 clear all
4
5 %%
6 N = 1e7;
7 Fs = 1000;
8 %%
9
10 data_white.rate = Fs;
11 data_white.freq = noise(N, 1, 'white');
12 [ad_white, S, err_white, tau] = allan(data_white, 2.^[0:nextpow2(length(data_white.freq))]./Fs, 'white noise',0);
13 [p_white, f_white] = pwelch(data_white.freq, [], [], [], data_white.rate, 'onesided');
14
15 data_pink.rate = Fs;
16 data_pink.freq = noise(N, 1, 'pink');
17 [ad_pink, S, err_pink, tau] = allan(data_pink, 2.^[0:nextpow2(length(data_pink.freq))]./Fs, 'pink noise',0);
18 [p_pink, f_pink] = pwelch(data_pink.freq, [], [], [], data_pink.rate, 'onesided');
19
20
21 data_brown.rate = Fs;
22 data_brown.freq = noise(N, 1, 'brown');
23 [ad_brown, S, err_brown, tau] = allan(data_brown, 2.^[0:nextpow2(length(data_brown.freq))]./Fs, 'brown noise',0);
24 [p_brown, f_brown] = pwelch(data_brown.freq, [], [], [], data_brown.rate, 'onesided');
25
26 figure
27 hold on
28 loglogerr(tau, ad_white, err_white, 'b')
29 loglogerr(tau, ad_pink, err_pink, 'm')
30 loglogerr(tau, ad_brown, err_brown, 'k')
31 grid on