Синтез оптимального фильтра

Помогите, пожалуйста, понять как реализовать оптимальный фильтр - обнаружитель сигнала.

За основу беру статью Оптимальная линейная фильтрация.

И сигнал, и шум известны.

Как я понял: для синтеза оптимального фильтра необходимо рассчитать коэффициенты для функции filter, эти же коэффициенты можно будет указать для блока Simulink Transfer Fcn.

Набросал простой код для генерации сигнала/шума:

frames = 1000;
k = (1:frames)';
AS = 50; % амплитуда сигнала
% полезные сигналы
s1 = AS * sin( 4*(0.02:.02:6)' );
s1 = vertcat( zeros( 400, 1 ), s1, zeros( 300, 1 ) );
% входные сигналы
AN = 30; % амплитуда шума
noise = rand( frames, 1 ) * AN - AN/2;
in1 = s1 + noise;
% спектры
S1 = fft( s1 );
N1 = fft( noise );
% дисперсии
Ds1 = var( s1 );
Din1 = var( in1 );
Dnoise = var( noise );

plot( k, [s1, in1] );
legend('Полезный сигнал', 'Cигнал с шумом');

А дальше поймал полный ступор: не понимаю как рассчитывать коэффициенты, как определить пороговое значение для определения наличия сигнала.


Ответы (0 шт):