В GNU Octave (аналог Matlab) я генерировал приближение к частотно-ограниченному белому шуму, как сумму синусов со случайными фазами.
Вот код:
Код:
## -*- texinfo -*-
## @deftypefn {Function File} {@var{out}=} noise (@var{t}, @var{phi})
##
## Generates the periodical noise signal as sum of sine waves with equal
## amplitudes, but random phases. Number of waves are calculated from
## length of @var{phi} vector. Noise period are equal to 2*pi.
##
## @end deftypefn
function OUT = noise (t, phi)
temp = 1/2;
N = length (phi);
for i = 1:N
temp = temp .+ 1.*sin(i.*t .+ phi(i));
endfor
OUT = temp;
endfunction
Второй аргумент у функции noise это вектор случайных чисел, равномерно распределённых от нуля до двух пи радиан. В самом начале вашей программы нужно создать вектор случайных фаз, а потом вызывать с ним noise вот так:
Код:
@(t) noise (t, phi);
fplot (@(t) noise (t, phi), [0 2*pi]);
Ширина спектра задаётся с помощью размера вектора случайных фаз, сколько в нём членов, столько и гармоник.