`Hello`

I have a question about filter behaviour and block processing.

I have a signal x[k]=s[k]+n[k] where s is clean speech and n is

colored, gaussian noise.

In the algorithm I am working on I do block processing. Each block

xb[j]=(x[1+L*j],x[2+L*j],.....,x[L+L*j])

where xb[j] is the j'th block-input is sent thru 2 filters A and B.

The filter-coefficients of A and B vary for each block according to

some analysis

I perform (autocorrelation, spectral analysis etc.).

In the noiseless case where x[k]=s[k] I expect the output of the

algorithm to be

as close to s[k] as possible if not equal.

Furthermore, if x[k]=s[k] then the time-varying filter B will be the

inverse

of A for any block j.

My question is then:

Should I implement the filters A and B with filter-states (initial &

final conditions) ?

Or should I implement the filters A and B without filter-states?

I did some simulation in matlab which showed me that I would get a

better result

if I implemented the filters without filter-states. So I used the

syntax:

filter_output=filter(numerator filter coefficients,denominator

filter coefficients,block j)

instead of:

[filter_output, final_state]=filter(numerator filter

coefficients,denominator filter coefficients,block j, initial_state);

initial_state=final_state; However, I lack the theoretical basis and a good explanation for

choosing to implement the

filters without filter-states. So I was hoping that somebody in this

forum could help me? Btw, filter A is a whitening filter and filter B is a "vocal-tract"

filter. Thanks in advance...

I have a question about filter behaviour and block processing.

I have a signal x[k]=s[k]+n[k] where s is clean speech and n is

colored, gaussian noise.

In the algorithm I am working on I do block processing. Each block

xb[j]=(x[1+L*j],x[2+L*j],.....,x[L+L*j])

where xb[j] is the j'th block-input is sent thru 2 filters A and B.

The filter-coefficients of A and B vary for each block according to

some analysis

I perform (autocorrelation, spectral analysis etc.).

In the noiseless case where x[k]=s[k] I expect the output of the

algorithm to be

as close to s[k] as possible if not equal.

Furthermore, if x[k]=s[k] then the time-varying filter B will be the

inverse

of A for any block j.

My question is then:

Should I implement the filters A and B with filter-states (initial &

final conditions) ?

Or should I implement the filters A and B without filter-states?

I did some simulation in matlab which showed me that I would get a

better result

if I implemented the filters without filter-states. So I used the

syntax:

filter_output=filter(numerator filter coefficients,denominator

filter coefficients,block j)

instead of:

[filter_output, final_state]=filter(numerator filter

coefficients,denominator filter coefficients,block j, initial_state);

initial_state=final_state; However, I lack the theoretical basis and a good explanation for

choosing to implement the

filters without filter-states. So I was hoping that somebody in this

forum could help me? Btw, filter A is a whitening filter and filter B is a "vocal-tract"

filter. Thanks in advance...