Синтез оптимального фильтра
Помогите, пожалуйста, понять как реализовать оптимальный фильтр - обнаружитель сигнала.
За основу беру статью Оптимальная линейная фильтрация.
И сигнал, и шум известны.
Как я понял: для синтеза оптимального фильтра необходимо рассчитать коэффициенты для функции 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игнал с шумом');
А дальше поймал полный ступор: не понимаю как рассчитывать коэффициенты, как определить пороговое значение для определения наличия сигнала.