separating convoluted signals via the cepstrum and truncation error
I am trying to separate convoluted signals.
There is MATLAB code
>> 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
>> 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 ?