5.6. Линейный фильтр

B некоторых случаях сглаживание функции, связанное с устра­нением высокочастотных со­с­тав­ля­ю­щих, можно выполнить более прос­тым способом по сравнению с ап­про­к­си­ма­ци­ей рядами Фурье. Напри­мер, простой линейный фильтр позволяет сгладить функ­цию, задан­ную в равноотстоящих узлах tj , усредняя ее значения по линейной формуле:

.    

(5.6)

Заметим, что суммируется нечетное число точек. Eсли суммиру­ется четное количество точек, то используется формула:

.

  (5.7)

Вообще говоря, формулы (5.6), (5.7) верны лишь в том случае, если m<j£(nm), т.е. точка, для которой вычисляется новое значение функции, отстоит достаточно далеко от границы. Bо всех других случаях соответствующим образом изменяются нижний и верх­ний пределы суммирования и знаменатель. Tакой фильтр уменьшает амплитуды гармоник в верхней половине спектра. Более подробный анализ линейных фильтров можно найти в монографии Xемминга [лит].

Описываемый метод сглаживания реализован в программе LINFIL. Более сложные фильтры можно построить с использованием метода наименьших квадратов и соответствующих программ, описанных в этой главе.

Программа LINFIL (A, B, N, M) позволяет сгладить заданную на равномерной сетке функцию с использованием линейного фильтра. Параметры программы следующие:

A

вектор значений функции (длины |N|);

B

вектор усредненных значений функции в узлах (длины |N|);

N

число узлов сетки;

M

параметр, определяющий число узлов, участвующих в сумми­ровании (индекс m из формул (5.6) и (5.7)).

При N>0 суммирование ведется по формуле (5.6), при N<0 используется формула (5.7). Число узлов берется равным |N|.

Eсли в обращении к программе в качестве формальных парамет­ров A и B указан один и тот же вектор, то в сумму войдут вновь вычисленные значения функции в узлах, расположенных слева от текущего узла. Этот способ может быть полезен, если используется формула (5.7).

 

Рис.5.6. Пример использования линейного фильтра.

 

рис.5.6 показан пример сглаживания функции с помощью линейного фильтра (ср. с рис.5.5).

      DIMENSIОN Y(140),Z(140) 
      READ 5,Y 
    5 FОRMAT(7F10.3) 
      CALL PAGE(16.,25.,'5.6',3,0) 
      CALL LINFIL(Y,Z,-137,1) 
      CALL MINMAX(Y,137,ZMN,ZMX) 
      CALL REGIОN(1.,.5,15.,10.,0,0,0) 
      CALL LIMITS(0.,15.,ZMN,ZMX) 
      CALL INCLIN(0.,.1,0,Y,137,0,0) 
      CALL INCLIN(0.,.1,0,Z,137,0,0) 
      CALL AXES(0,0,0.,0,0,0,0.,0,0) 
      CALL REGIОN(1.,11.,15.,10.,0,0,0) 
      CALL INCLIN(0.,.1,0,Y,137,-2,-1) 
      CALL LINFIL(Y,Y,137,1) 
      CALL INCLIN(0.,.1,0,Y,137,0,0) 
      CALL AXES(0,0,0.,0,0,0,0.,0,0) 
      CALL ENDPG(0) 
      END