Speciaal voor FElix
Dependencies: biquadFilter mbed
Diff: main.cpp
- Revision:
- 0:97b158e017b8
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Mon Oct 22 13:07:40 2018 +0000 @@ -0,0 +1,47 @@ +/** + * Demo program for BiQuad and BiQuadChain classes + * author: T.J.W. Lankhorst <t.j.w.lankhorst@student.utwente.nl> + */ + +#include <stdlib.h> +#include <iostream> +#include <iomanip> +#include <complex> +#include "BiQuad.h" + +// Example: 3th order Butterworth LP (w_c = 0.1*f_nyquist) +BiQuadChain bqc; + +BiQuad bq1( 9.20511e-02, -1.84501e-01, 9.24506e-02, -1.99997e+00, 9.99976e-01 ); +BiQuad bq2( 1.00000e+00, -2.00367e+00, 1.00368e+00, -1.99998e+00, 9.99983e-01 ); + +bqc.add( &bq1 ).add( &bq2 ); +int main() +{ + + bqc = bq1 * bq2; + + // Find the poles of the filter + std::cout << "Filter poles" << std::endl; + std::vector< std::complex<double> > poles = bqc.poles(); + for( size_t i = 0; i < poles.size(); i++ ) + std::cout << "\t" << poles[i] << std::endl; + + // Find the zeros of the filter + std::cout << "Filter zeros" << std::endl; + std::vector< std::complex<double> > zeros = bqc.zeros(); + for( size_t i = 0; i < poles.size(); i++ ) + std::cout << "\t" << zeros[i] << std::endl; + + // Is the filter stable? + std::cout << "This filter is " << (bqc.stable() ? "stable" : "instable") << std::endl; + + // Output the step-response of 20 samples + std::cout << "Step response 20 samples" << std::endl; + for( int i = 0; i < 20; i++ ) + std::cout << "\t" << bqc.step( 1.0 ) << std::endl; + + // Done0 + return EXIT_SUCCESS; + +}