On Dienstag, 3. Mai 2022 22:08:49 CEST Magnus Danielson via time-nuts wrote: > Dear Matthias, > > Notice that 1/f is power-spectrum density, straight filter will give you > 1/f^2 in power-spectrum, just as an integration slope. > > One approach to flicker filter is an IIR filter with the weighing of > 1/sqrt(n+1) where n is tap index, and feed it normal noise. You need to > "flush out" state before you use it so you have a long history to help > shaping. For a 1024 sample series, I do 2048 samples and only use the > last 1024. Efficient? No. Quick-and-dirty? Yes.
I went "window shopping" on Google and found something that would probably fit my needs here: https://ccrma.stanford.edu/~jos/sasp/Example_Synthesis_1_F_Noise.html Matlab code: Nx = 2^16; % number of samples to synthesize B = [0.049922035 -0.095993537 0.050612699 -0.004408786]; A = [1 -2.494956002 2.017265875 -0.522189400]; nT60 = round(log(1000)/(1-max(abs(roots(A))))); % T60 est. v = randn(1,Nx+nT60); % Gaussian white noise: N(0,1) x = filter(B,A,v); % Apply 1/F roll-off to PSD x = x(nT60+1:end); % Skip transient response It looks quite simple and there is no explanation where the filter coefficients come from, but I checked the PSD and it looks quite reasonable. The ADEV of a synthesized oscillator, using the above generator to generate 1/ f FM noise is interesting: it's an almost completely flat curve that moves "sideways" until the drift becomes dominant. Regards, Matthias _______________________________________________ time-nuts mailing list -- [email protected] To unsubscribe send an email to [email protected]
