iir1
Toggle main menu visibility
Loading...
Searching...
No Matches
iir
State.h
1
35
36
#pragma once
37
38
#include "Common.h"
39
#include "Biquad.h"
40
41
42
#define DEFAULT_STATE DirectFormII
43
44
namespace
Iir
{
45
54
class
IIR_EXPORT DirectFormI
55
{
56
public
:
57
DirectFormI () =
default
;
58
59
void
reset ()
60
{
61
m_x1 = 0;
62
m_x2 = 0;
63
m_y1 = 0;
64
m_y2 = 0;
65
}
66
67
inline
double
filter(
const
double
in,
68
const
Biquad
& s)
69
{
70
const
double
out = s.m_b0*in + s.m_b1*m_x1 + s.m_b2*m_x2
71
- s.m_a1*m_y1 - s.m_a2*m_y2;
72
m_x2 = m_x1;
73
m_y2 = m_y1;
74
m_x1 = in;
75
m_y1 = out;
76
77
return
out;
78
}
79
80
protected
:
81
double
m_x2 = 0.0;
// x[n-2]
82
double
m_y2 = 0.0;
// y[n-2]
83
double
m_x1 = 0.0;
// x[n-1]
84
double
m_y1 = 0.0;
// y[n-1]
85
};
86
87
//------------------------------------------------------------------------------
88
98
class
IIR_EXPORT DirectFormII
99
{
100
public
:
101
DirectFormII () =
default
;
102
103
void
reset ()
104
{
105
m_v1 = 0.0;
106
m_v2 = 0.0;
107
}
108
109
inline
double
filter(
const
double
in,
110
const
Biquad
& s)
111
{
112
const
double
w = in - s.m_a1*m_v1 - s.m_a2*m_v2;
113
const
double
out = s.m_b0*w + s.m_b1*m_v1 + s.m_b2*m_v2;
114
115
m_v2 = m_v1;
116
m_v1 = w;
117
118
return
out;
119
}
120
121
private
:
122
double
m_v1 = 0.0;
// v[-1]
123
double
m_v2 = 0.0;
// v[-2]
124
};
125
126
127
//------------------------------------------------------------------------------
128
129
class
IIR_EXPORT TransposedDirectFormII
130
{
131
public
:
132
TransposedDirectFormII() =
default
;
133
134
void
reset ()
135
{
136
m_s1 = 0.0;
137
m_s1_1 = 0.0;
138
m_s2 = 0.0;
139
m_s2_1 = 0.0;
140
}
141
142
inline
double
filter(
const
double
in,
143
const
Biquad
& s)
144
{
145
const
double
out = m_s1_1 + s.m_b0*in;
146
m_s1 = m_s2_1 + s.m_b1*in - s.m_a1*out;
147
m_s2 = s.m_b2*in - s.m_a2*out;
148
m_s1_1 = m_s1;
149
m_s2_1 = m_s2;
150
151
return
out;
152
}
153
154
private
:
155
double
m_s1 = 0.0;
156
double
m_s1_1 = 0.0;
157
double
m_s2 = 0.0;
158
double
m_s2_1 = 0.0;
159
};
160
161
}
Iir::Biquad
Definition
Biquad.h:51
Iir
Definition
Biquad.cpp:40
Generated on
for iir1 by
1.17.0