#include <iostream>
int main(
int argc,
char *argv[]){
int chCnt=10;
Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic> B, A;
B=Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic>::Random(N,chCnt);
A=Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic>::Random(N-5,chCnt);
B/=100.;
A/=100.;
A.row(0)=Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic>::Ones(1,chCnt);
N=12800;
Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic>
x,
y;
x=Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic>::Random(N,chCnt);
y.resize(x.rows(), x.cols());
vector<string> args(1); args[0]=string("");
Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic> yHat;
yHat.resize(x.rows(), x.cols());
for (int i=0; i<chCnt; i++){
vector<Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic> > input, output;
input.push_back(B.col(i));
input.push_back(A.col(i));
input.push_back(x.col(i));
octave.
runM(
"filter", input, output);
yHat.col(i)=output[0];
}
cout<<(y-yHat).array().abs().sum()/y.rows()/y.cols()<<endl;
return 0;
}