SciFi (11.02.2015 10:30, просмотров: 220) ответил my504 на Имеется вопрос:
Вот что филтер солюшэнз генерит: /******************************************************************************/
/* 2nd Order Low Pass Elliptic */
/* Impulse Invariant Transformation */
/* Sample Frequency = 300.0 Hz */
/* Standard Form */
/* Arithmetic Precision = 4 Digits */
/* */
/* Pass Band Frequency = 5.500 Hz */
/* Pass Band Ripple = 2 dB */
/* */
/* Stop Band Ratio = 6 */
/* Stop Band Frequency = 33.00 Hz */
/* Stop Band Attenuation = 38.72 dB */
/* */
/******************************************************************************/
/* */
/* Input Variable Definitions: */
/* Inputs: */
/* invar float The input to the filter */
/* initvar float The initial value of the filter */
/* setic bool true to initialize the filter to contents of initvar*/
/* */
/* Option Selections: */
/* C++; Initializable; Internal States; Not Optimized; */
/* */
/* There is no requirement to ever initialize the filter. */
/* The default initialization is zero when the filter is first called */
/* */
/******************************************************************************/
/* */
/* This software is automatically generated by Filter Solutions */
/* no restrictions from Nuhertz Technologies, L.L.C. regarding the use and */
/* distributions of this software. */
/* */
/******************************************************************************/
float DigFil(float invar, float initval, bool setic)
{
static float states[2] = {0.0,0.0};
const static float znum[3] = {
1.057e-02,
-1.062e-02,
1.053e-02
};
const static float zden[2] = {
.9121,
-1.902
};
if (setic){
for (int i=0;i<2;i++) states[i] = 95.4*initval;
return initval;
}
else{
float sumden(0.0), sumnum(0.0);
for (int i=0;i<2;i++){
sumden += states[i]*zden[i];
sumnum += states[i]*znum[i];
if (i<1) states[i] = states[i+1];
}
states[1] = invar-sumden;
sumnum += states[1]*znum[2];
return sumnum;
}
}
ส็็็็็็็็็็็็็็็็็็็็็็็็็༼ ຈل͜ຈ༽ส้้้้้้้้้้้้้้้้้้้้้้้