-
Notifications
You must be signed in to change notification settings - Fork 2
/
guide
95 lines (61 loc) · 5.84 KB
/
guide
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
There are lot of really good books on the subject that provide fundamental information. Therefore it is out of scope of the
guide to rep
Types of approximation
By default expected functionality of filter is to pass specified bandwidth and decay other. Mathematicaly it can be exrepseed by such equation
|H(iw)| ^ 2 = A w1 < w < w2
|H(iw)| ^ 2 = 0 for all remaining frequencies
also graphical presentation
However, it is physically impossible for some the reasons. Fortunatelly, practicaly requirements are not so strict and they allow
LUFT.
В процессе развитие теории проектирования цифровых фильтров было изобретено несколько методик построения передаточных функций, обладащимих желаемыми
характерстиками. Однако, классическим подходом является нахождения передаточной фунции нормализированого аналогово фильтра путем применения
одного из известных методов апроксимации. Далее производится соответствующего
частотного преобразования для получения желаемого типа фильтра: lowpass, highpass, bandpass or bandstop.
Следующим шагом есть применение билинейного преобразования (в случает цифрового фильтра)
At its current stage Syto implements IIR filters only. However, as Syto is young and growing library
its API will be enriched to design other families of filters soon. But for a while please keep in mind that all info below is about IIR filter only.
The great advancements in the filter design theory have given a birth to several techniques of generating the transfer functions with expected characterisitcs.
Each of them has its own pros and cons but in the majority of cases the classical approach is used. Syto exploites this method as well.
It consists of three fundamental steps:
1) Find a transfer function of normalized analog filter by applying one of known approximation
2) By means of frequency transformation, obtain the transfer function of the desired filter: lowpass, highpass, bandpass or bandstop
3) Apply bilinear transformation to convert the analog transfer function to digital one
Normalized analog filter is the filter in which the cutoff frequency is equal to 1 rad/sec
Нормализованным аналоговым фильтром считается такой фильтр, у которого угловая частота среза равняется 1 рад/сек
The most popular approximation methods are as follows
1. Butterworth
2. Chebyshev
3. Inverse-Chebyshev
4. Elliptic
5. Bessel-Thomson
and all these five types had been implemented in Syto
Наиболее часто используются такие аппроксимации.
1) Батерворда
2) Чебышева
3) Чебышева второго рода
4) Бесселя
5) Эллиптическая апроксимация или Кауэра или Золотарева
Нахождение нормализированого аналогово фильтра сводится к получению его полюсов и нулей.
Дальнейшее применение частотного преобразование позволяет получить один из жела
В случае проектировки цифрового фильтра следующим этапом есть билинейное преобразование полюсов. Целью является перенос аналоговой передаточной
функции в цифровую передаточную функцию.
Let's get started with Syto.
Filtering the data with Syto is pretty simple procedure and contains three steps only:
1) Specification of filter characterisitcs (order, ripples, cutoff frequencies). It requires some efforts of a customer.
2) Building the transfer function satisfying specified parameter and extraction it's polynomials coefficients
3) Filtering the data itself, passing the polynomials coefficients and input sequence to lfilter/filtfilt method
Фильтрование цифровых сигналов с помощью сыта не представляет ничего сложного и по сути состоит из трех шагов
1) Определение характеристик требуемого фильтра. На данном этапе эволюции сыта этот шаг возложен на пользователя.
2) Получение коефициентов полиномов, составляющих передаточную функцию
3) Непосредственная фильтрация.
Ниже приведен пример
После некоторых расчетов пользователь пришел к выводу, что ему требуется фильтр Чебышева нижних частот 3-го порядка. Следовательно,
получение коэфициентов полинома
new TransferFunctionBuilder()
.chebyshevIIApproximation(order, ripple)
.digitalize(sampleFreq)
.transformToLowPass(cufOffFreq)
.coefficients
Получив коефициенты, можно начать непосредственно процедуру фильтрации с помощью метода
lfilter(b, a, x)
Альтернативой ему может также служить метод filtfilt, отличительной особенностью которого является двойная фильтрация с нулевым сдвигом по фазе.