projectNe10 / Ne10

An open optimized software library project for the ARM® Architecture

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

FIR decimator with decimation factor 3 makes needles

Radimoid opened this issue · comments

// initialization
m_neon_decimator.M = 3;
m_neon_decimator.numTaps = firLen;
m_neon_decimator.pCoeffs = firCoefs;
m_state.resize(m_neon_decimator.numTaps + len, 0.0f); // or m_neon_decimator.numTaps + len - 1 (has no effect)
m_neon_decimator.pState = &state[0];

// decimation
ne10_fir_decimate_float(&m_neon_decimator, in, out, len);

When using on ARM, there are unexpected needles in signal on the begining of each new block of data (after the len samples)
If I use just FIR filter and decimate the signal by myself, it works fine.
Is this a known issue? Can anyone explain it?

My fir coefs:
const float firCoefs[] = {
0.00000050210021190120859,
-0.000034228285083098877,
-0.000092754336923977324,
-0.00015557320504029068,
-0.00016869734220992594,
-0.000087828472441034143,
0.000072358091520568224,
0.00021834967506824691,
0.00022544194000779147,
0.000038771611527053258,
-0.00024670053427927049,
-0.00041362049666060583,
-0.00027422523534979137,
0.00014910674531216518,
0.0005731692576012164,
0.00062469059103831791,
0.00014775747227131021,
-0.00059103999780911953,
-0.0010176735959221989,
-0.00067519292096128111,
0.00033891792729655367,
0.0013125734929416611,
0.0013898320097359028,
0.00028818270514501497,
-0.0013146641601913481,
-0.0021476885952631322,
-0.0013203469118128904,
0.00081608452015475674,
0.0027021050544952805,
0.0026648119723109188,
0.00034312897240270832,
-0.0027309161564440798,
-0.0040735920911981246,
-0.002201497643114001,
0.0018983208818263899,
0.0051445223344098283,
0.0046103353139922464,
0.000058907202663463021,
-0.0053612696019353211,
-0.0071925066658073272,
-0.0032364938425027828,
0.0041692989134663652,
0.0093379081003107933,
0.0074786652256386074,
-0.0010735062279496051,
-0.010237173900496235,
-0.012324720642499232,
-0.0042723291231899089,
0.008930495381024299,
0.016990330867712209,
0.012026898235023757,
-0.0043078644993643708,
-0.020354890703290978,
-0.022247552115120393,
-0.0051166188483511921,
0.020827594074549902,
0.035303955194452105,
0.022313620924252941,
-0.015522007438030852,
-0.053627923871104419,
-0.057729259584455267,
-0.0055920695652333617,
0.09546150492724724,
0.20770789994796729,
0.28124764861749707,
0.28124764861749707,
0.20770789994796729,
0.09546150492724724,
-0.0055920695652333617,
-0.057729259584455267,
-0.053627923871104419,
-0.015522007438030852,
0.022313620924252941,
0.035303955194452105,
0.020827594074549902,
-0.0051166188483511921,
-0.022247552115120393,
-0.020354890703290978,
-0.0043078644993643708,
0.012026898235023757,
0.016990330867712209,
0.008930495381024299,
-0.0042723291231899089,
-0.012324720642499232,
-0.010237173900496235,
-0.0010735062279496051,
0.0074786652256386074,
0.0093379081003107933,
0.0041692989134663652,
-0.0032364938425027828,
-0.0071925066658073272,
-0.0053612696019353211,
0.000058907202663463021,
0.0046103353139922464,
0.0051445223344098283,
0.0018983208818263899,
-0.002201497643114001,
-0.0040735920911981246,
-0.0027309161564440798,
0.00034312897240270832,
0.0026648119723109188,
0.0027021050544952805,
0.00081608452015475674,
-0.0013203469118128904,
-0.0021476885952631322,
-0.0013146641601913481,
0.00028818270514501497,
0.0013898320097359028,
0.0013125734929416611,
0.00033891792729655367,
-0.00067519292096128111,
-0.0010176735959221989,
-0.00059103999780911953,
0.00014775747227131021,
0.00062469059103831791,
0.0005731692576012164,
0.00014910674531216518,
-0.00027422523534979137,
-0.00041362049666060583,
-0.00024670053427927049,
0.000038771611527053258,
0.00022544194000779147,
0.00021834967506824691,
0.000072358091520568224,
-0.000087828472441034143,
-0.00016869734220992594,
-0.00015557320504029068,
-0.000092754336923977324,
-0.000034228285083098877,
0.00000050210021190120859
};