From 8c4c776fedeb003055d3badde73ae014c1d51a8d Mon Sep 17 00:00:00 2001 From: ymherklotz Date: Tue, 27 Feb 2018 12:20:40 +0000 Subject: Added efficient code --- lab5/RTDSP/.launches/RTDSP.launch | 4 ++-- lab5/RTDSP/Matlab/coeff.txt | 2 ++ lab5/RTDSP/Matlab/filter_coeff_ell_a.txt | 1 - lab5/RTDSP/Matlab/filter_coeff_ell_b.txt | 1 - lab5/RTDSP/Matlab/gen_filter.m | 4 ++-- lab5/RTDSP/intio.c | 16 +++++++--------- 6 files changed, 13 insertions(+), 15 deletions(-) create mode 100644 lab5/RTDSP/Matlab/coeff.txt delete mode 100644 lab5/RTDSP/Matlab/filter_coeff_ell_a.txt delete mode 100644 lab5/RTDSP/Matlab/filter_coeff_ell_b.txt (limited to 'lab5') diff --git a/lab5/RTDSP/.launches/RTDSP.launch b/lab5/RTDSP/.launches/RTDSP.launch index d970f38..4330703 100644 --- a/lab5/RTDSP/.launches/RTDSP.launch +++ b/lab5/RTDSP/.launches/RTDSP.launch @@ -1,8 +1,8 @@ - + @@ -13,7 +13,7 @@ - + diff --git a/lab5/RTDSP/Matlab/coeff.txt b/lab5/RTDSP/Matlab/coeff.txt new file mode 100644 index 0000000..6c1b0ff --- /dev/null +++ b/lab5/RTDSP/Matlab/coeff.txt @@ -0,0 +1,2 @@ +double a[] = {1.000000000000000e+00, -3.622738280081862e+00, 5.063887790131743e+00, -3.234610259864946e+00, 7.984164681552797e-01, }; +double b[] = {9.756494393306392e-02, -3.428674269973439e-01, 4.911005379625814e-01, -3.428674269973437e-01, 9.756494393306386e-02, }; diff --git a/lab5/RTDSP/Matlab/filter_coeff_ell_a.txt b/lab5/RTDSP/Matlab/filter_coeff_ell_a.txt deleted file mode 100644 index f6d3023..0000000 --- a/lab5/RTDSP/Matlab/filter_coeff_ell_a.txt +++ /dev/null @@ -1 +0,0 @@ - 1.0000000000000000e+00 -3.6227382800818617e+00 5.0638877901317434e+00 -3.2346102598649464e+00 7.9841646815527967e-01 diff --git a/lab5/RTDSP/Matlab/filter_coeff_ell_b.txt b/lab5/RTDSP/Matlab/filter_coeff_ell_b.txt deleted file mode 100644 index c8c1e48..0000000 --- a/lab5/RTDSP/Matlab/filter_coeff_ell_b.txt +++ /dev/null @@ -1 +0,0 @@ - 9.7564943933063919e-02 -3.4286742699734390e-01 4.9110053796258135e-01 -3.4286742699734374e-01 9.7564943933063863e-02 diff --git a/lab5/RTDSP/Matlab/gen_filter.m b/lab5/RTDSP/Matlab/gen_filter.m index 618d719..6822bfe 100644 --- a/lab5/RTDSP/Matlab/gen_filter.m +++ b/lab5/RTDSP/Matlab/gen_filter.m @@ -2,10 +2,10 @@ Fs = 8000; [b,a] = elliptical (Fs); freqz(b, a); -fileID = fopen('coeff2.txt','w'); +fileID = fopen('coeff.txt','w'); fprintf(fileID, 'double a[] = {'); fprintf(fileID, '%.15e, ', a); fprintf(fileID, '};\ndouble b[] = {'); fprintf(fileID, '%.15e, ', b); -fprintf(fileID, '};'); +fprintf(fileID, '};\n'); fclose(fileID); \ No newline at end of file diff --git a/lab5/RTDSP/intio.c b/lab5/RTDSP/intio.c index 567324c..e7ae084 100644 --- a/lab5/RTDSP/intio.c +++ b/lab5/RTDSP/intio.c @@ -43,7 +43,7 @@ // PI defined here for use in your code #define PI 3.141592653589793 -#include "Matlab/coeff2.txt" +#include "Matlab/coeff.txt" int N = sizeof(a)/sizeof(a[0]); short* x; @@ -133,23 +133,21 @@ void init_HWI() void ISR_AIC() { int i = N-1; + double Y = 0.0; //Shift the values for (; i > 0; --i) { x[i] = x[i-1]; y[i] = y[i-1]; + + Y += x[i] * b[i] - y[i] * a[i]; } x[0] = mono_read_16Bit(); - y[0] = 0.0; + Y += x[0] * b[0]; - for (i = 0; i < N; ++i) { - y[0] += x[i] * b[i]; - if(i != 0) { - y[0] -= y[i] * a[i]; - } - } + y[0] = Y; - mono_write_16Bit((short)y[0]); + mono_write_16Bit((short)Y); } -- cgit