Skip to content

Commit 87679e0

Browse files
author
Tony Kirke
committed
Add process function for iir_df, use rate=32 for test_decimate
1 parent 3ca34ab commit 87679e0

File tree

2 files changed

+16
-9
lines changed

2 files changed

+16
-9
lines changed

spuce/filters/iir_df.h

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,13 @@ template <class Numeric, class Coeff = float_type> class iir_df {
3838
zeros.reset();
3939
}
4040
void set_taps(const std::vector<double>& taps) {
41-
// Divide vector in half, 1st half are feedforward, 2nd half feedback
42-
assert(taps.size() != 0);
43-
auto size = taps.size()/2;
44-
zeros.set_size(size);
45-
poles.set_size(size-1);
41+
// Divide vector in half, 1st half are feedforward, 2nd half feedback
42+
assert(taps.size() != 0);
43+
auto size = taps.size()/2;
44+
zeros.set_size(size);
45+
poles.set_size(size-1);
4646
for (size_t i = 0; i < size; i++) { zeros.settap(i, taps[i]); }
47-
// Skip 1st feedback and negate the rest
47+
// Skip 1st feedback and negate the rest
4848
for (size_t i = 0; i < size-1; i++) { poles.settap(i, -taps[i+size+1]); }
4949
}
5050
int order(void) { return zeros.number_of_taps(); }
@@ -54,6 +54,14 @@ template <class Numeric, class Coeff = float_type> class iir_df {
5454
output = poles.iir(output);
5555
return (output);
5656
}
57+
void process(const std::vector<Numeric>& samples_in,
58+
std::vector<Numeric>& if_out)
59+
{
60+
if_out.resize(samples_in.size());
61+
for (size_t i=0;i<samples_in.size();i++) {
62+
if_out[i] = update(samples_in[i]);
63+
}
64+
}
5765
void print(void) {
5866
std::cout << "B ";
5967
zeros.print();

test_spuce/test_decimate.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ int main(int argv, char* argc[]) {
2121
const int N=256;
2222
const size_t IIR_Order = 6;
2323
const double ripple = 0.1;
24-
const int rate=6;
24+
const int rate=32;
2525
const size_t Order=(2*IIR_Order*rate)+1;
2626
const double remez_stop_atten = 60.0;
2727

@@ -32,8 +32,7 @@ int main(int argv, char* argc[]) {
3232
double remez_trans = 2*(fc - pass_edge);
3333
double remez_weight = remez_estimate_weight(ripple, remez_stop_atten);
3434
//std::cout << "pass_edge = " << pass_edge << " trans = " << remez_trans << "\n";
35-
auto BF = design_fir("remez","LOW_PASS", Order, pass_edge, 0, remez_trans, 100); //remez_weight);
36-
35+
auto BF = design_fir("remez","LOW_PASS", Order, pass_edge, 0, remez_trans, remez_weight);
3736

3837
iir_coeff* iirf = design_iir("chebyshev", "LOW_PASS", IIR_Order, pass_edge, ripple);
3938
iir_df<double, double> IIR(*iirf);

0 commit comments

Comments
 (0)