Aicberg
Newbie level 1
Hi all . I am student.
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
>> ch=cceps(h); % computation complex cepstrum
>> cy=cceps
; % computation complex cepstrum
>> cz=cceps(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;
>> cz=cceps(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 I can separate impulse response from audio signal ?
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
>> ch=cceps(h); % computation complex cepstrum
>> cy=cceps
>> cz=cceps(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;
>> cz=cceps(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 I can separate impulse response from audio signal ?