Разобрался сам.
Добавлю свои результаты в фонд будущих поколений:
Пусть нам FDATOOL выдала следующий C-header:
Код
/*
* Filter Coefficients (C Source) generated by the Filter Design and Analysis Tool
*
* Generated by MATLAB(R) 7.8 and the Signal Processing Toolbox 6.11.
*
* Generated on: 26-Apr-2010 15:26:51
*
*/
/*
* Discrete-Time IIR Filter (real)
* -------------------------------
* Filter Structure : Direct-Form II, Second-Order Sections
* Number of Sections : 3
* Stable : Yes
* Linear Phase : No
*/
/* General type conversion for MATLAB generated C-code */
#include "tmwtypes.h"
/*
* Expected path to tmwtypes.h
* C:\Program Files\MATLAB\R2009a\extern\include\tmwtypes.h
*/
#define MWSPT_NSEC 7
const int NL[MWSPT_NSEC] = { 1,3,1,3,1,2,1 };
const real64_T NUM[MWSPT_NSEC][3] = {
{
0.001582012905215, 0, 0
},
{
1, -1.997425031815, 1
},
{
0.06078064837324, 0, 0
},
{
1, -1.998996713475, 1
},
{
0.007688806860118, 0, 0
},
{
1, 1, 0
},
{
1, 0, 0
}
};
const int DL[MWSPT_NSEC] = { 1,3,1,3,1,2,1 };
const real64_T DEN[MWSPT_NSEC][3] = {
{
1, 0, 0
},
{
1, -1.996305874613, 0.9963329403565
},
{
1, 0, 0
},
{
1, -1.998581806418, 0.9986427868237
},
{
1, 0, 0
},
{
1, -0.9976855336623, 0
},
{
1, 0, 0
}
};
Прячем #include "tmwtypes.h" :
// #include "tmwtypes.h"
И заменяем "real64_T" на "double".
Для получения одного отфильтрованного отсчета сигнала надо вызвать функцию IIR_filt (X), где X - входной отсчет.
Функция возвращает отсчет отфильтрованного сигнала.
Предварительно надо задать начальные значения для массива "ячеек памяти" WHistory. Ну или просто обнулить их.
Код
#include "fdacoefs.h"
double WHistory[MWSPT_NSEC][2];
double IIR_filt (double X){
for (int i=0; i<MWSPT_NSEC; i++){
double W;
W = X;
for (int j=1; j<DL[i]; j++){
W-= DEN[i][j]*WHistory[i][j-1];
};
W*=1/DEN[i][0];
X = W * NUM[i][0];
for (int j=1; j<NL[i]; j++){
X+=NUM[i][j]*WHistory[i][j-1];
};
WHistory[i][1] = WHistory[i][0];
WHistory[i][0] = W;
};
return X;
};
Код не оптимизирован, зато даёт хорошее представление о том, чиго надо делать с хедером из FDATOOL.
Вот схематичное описание того, что далает этот код:
http://ftp.math.hkbu.edu.hk/help/toolbox/s...ilt.df2sos.html