А вот я еще спрошу.
Мне вот понравилась идея, вытекающая из постов pv + alex_os. А именно, не делать никаких ФНЧ и ресемплингов, а просто взять и посчитать в квадратурах коэффициенты для sin и cos составляющих фильтруемой частоты. И вот я написал пару интегралов:
1) S(N) = Int([0..N*T0], sin(w*t)*sin(w0*t))
2) C(N) = Int([0..N*T0], cos(w*t)*sin(w0*t))
В идеале для очень большого N результат должен стремиться к интегралу Фурье. Но я пока построил графики для N=1, N=4, N=32. Вот они.
На графиках зеленым цветом показан интеграл 1, а синим цветом - интеграл 2. По горизонтали отложена безразмерная частота w/w0.
Видно, что
1) для w=w0 выполняется условие ортогональности sin(w0*t) и cos(w0*t).
2) для w=0 и для целых w/w0, больших 2, оба интеграла дают 0, что вполне законно.
Но вот при промежуточных значениях w, близких к w0, возникают паразитные отклики, которые выдают довольно большие амплитуды синуса и косинуса. Будет ли в этом случае наблюдаться эффект компенсации помехи, или, наоборот, фильтр начнет сам добавлять w0.
Можно ли для расчета амплитуд для синуса и косинуса делать измерения для нескольких разных N? Например, (S(8)*3 + S(4))/4 подавляет часть боковых лепестков на приведенном графике. Вначале я было подумал, что в этом есть смысл, но вот когда подал в качестве эталонного входа cos(wt) вместо sin(wt), то амплитуда sin-составляющей для некоторых стала w даже больше, чем при использовании только S(4) для оценки амплитуды sin-составляющей.
В принципе такая схема, получается, работает, если известно, что вблизи w0 в спектре нет других частот, так что отклика по ним фильтр не выдаст.
Сообщение отредактировал Hoodwin - Jun 28 2013, 10:44
Эскизы прикрепленных изображений