Forums

separating convoluted signals via the cepstrum and truncation error

Started by ivan...@gmail.com October 18, 2010
Hi all . I am student. Sorry for my bad English.

I am trying to separate convoluted signals.

There is MATLAB code

>> x=1:1000;
>> y=[ 0.2*sin(x) zeros(1,49000)]; % original signal
>> b=[1 0 0 0 0 0.5]; % coefficients
>> a=1; % coefficients
>>h=[1 0 0 0 0 0.5 zeros(1,49994)]; % impulse response
>> z=filter(b,a,y); % adding echo with delay=5 samples
>> chps(h); % computation complex cepstrum
>> cyps(y); % computation complex cepstrum
>> czps(z); % computation complex cepstrum

It's all right and cz=ch+cy . The same how in theory

>> plot(cz-ch-cy); % I see small values about 10^(-14 ). it's all right

But trouble is when I trying to truncate sequense 'z'. When I make last five samples = 0 there is very big error

>> z(1001:1005)=0;
>> czps(z);

>> plot(cz-ch-cy); There is big values.

It seems that 'cz' not equal 'ch+cy' .

I read some articles about windowing and truncation, but I dont understand what I need to do . Can you help me please?

How can I separate impulse response from audio signal ?