How to determine the impulse response using FFT?

Hi, everyone. I have the input data and output data of a system and want to get the impulse response of the system. I've learned that this a kind of problem named deconvolution. I have some question about deconvolution and FFT. To show my problem, I make up some example data and suppose they are clean. my algorithm is
input=[1 3 5 8 8 6 4 2];
output=[1 2 3 4 5 6 7 8];
f_input=fft(input, 15); %padding
f_output=fft(output,15);
f_response=f_output./f_input;
response=ifft(f_response);
conv_output=conv(input,response);%linear convolution
cconv_ouput=cconv(input,response,15);%circular convolution
The f_input doesn't have near-zero elements so I think the ill-posed problem of deconvolution can be ignored here. The 'conv_output' is not the same as 'output'.The multiplication in frequency domain corresponds to the circular convolution in time domain, and now what I want is the impulse response which can make its linear convolution with the input equals to the output. The padding doesn't work because the response obtained doesn't have zeros in the last 7 columns, so the aliasing caused by fft is not avoid.And also the linear convolution results in a n+m-1 vector, which I don't know how to deal with.Can anyone help me get the impulse response? Many thanks

Respuestas (0)

Categorías

Más información sobre Fourier Analysis and Filtering en Centro de ayuda y File Exchange.

Preguntada:

el 15 de Jun. de 2014

Editada:

el 16 de Jun. de 2014

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by