How to determine the impulse response using FFT?
Mostrar comentarios más antiguos
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.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!