I am de-convolving A and B by the standard method of taking FFTs of both time
signals and dividing FFT of B by FFT of A, then taking the iFFT of the result to
get the de-convolved time signal. A is a time domain signal of 650 discrete data
points and B is a time domain signal of 3500 discrete data points.

My question/problem is about the differing signal lengths, also getting my head
around the theory. I am zero-padding both signals out to 4096 discrete data
points before FFTs occur.

i. Is my matlab code (or more impotantly my process) correct to properly
de-convolve these 2 signals?

ii. Can 2 signals of different lengths be successfully de-convolved?

iii. What is the correct length of the resultant de-convolved signal (H(t)),
1725 ns or some other length of time?

%% Read in data from the two files

A = xlsread('signal_A'); % signal A of length 650 data points (-15 -> 310 ns)

B = xlsread('signal_B'); % signal B of length 3500 data points (-20 -> 1705
ns)

%% Sampling time

Ts = 0.5*10^-9; % sample time is 0.5ns for both signals

t = 0:Ts:(Ts * 4095); % Not sure about this, it sets final signal length

%% FFT of A and FFT of B

A_freq = fft(A, 4096); % FFT of A, padding out to 4096 points

B_freq = fft(B, 4096); % FFT of B, padding out to 4096 points

%% Find channel response

H(f) = B_freq ./ A_freq; % Effective de-convolution

%% calculate ifft

H(t) = ifft( H(f) ); % this gives resultant time domain signal

plot (t,H(t))

# Signal processing help required

Started by ●January 8, 2008

Reply by ●January 10, 20082008-01-10

What you are doing is essentially correct. Zero-Padding does not alter the
structure of the problem in any way. However, deconvolution by dividing the
FFT's is not always a good technique. If the signal in the denominator has
values close to zero for a range of frequencies then the deconvolution will blow
up and you will essentially end up with a lot of noise. A better way would be
use least squares formulation with Tikhonov regularization. If you are loathe to
doing this then you might consider using the inbuilt function deconvreg in
matlab.

Regards

Gokul

----- Original Message ----

From: "p...@nrc.ac.uk"

To: m...

Sent: Monday, 7 January, 2008 10:22:58 AM

Subject: [matlab] Signal processing help required

I am de-convolving A and B by the standard method of taking FFTs of both time signals and dividing FFT of B by FFT of A, then taking the iFFT of the result to get the de-convolved time signal. A is a time domain signal of 650 discrete data points and B is a time domain signal of 3500 discrete data points.

My question/problem is about the differing signal lengths, also getting my head around the theory. I am zero-padding both signals out to 4096 discrete data points before FFTs occur.

i. Is my matlab code (or more impotantly my process) correct to properly de-convolve these 2 signals?

ii. Can 2 signals of different lengths be successfully de-convolved?

iii. What is the correct length of the resultant de-convolved signal (H(t)), 1725 ns or some other length of time?

%% Read in data from the two files

A = xlsread('signal_ A'); % signal A of length 650 data points (-15 -> 310 ns)

B = xlsread('signal_ B'); % signal B of length 3500 data points (-20 -> 1705 ns)

%% Sampling time

Ts = 0.5*10^-9; % sample time is 0.5ns for both signals

t = 0:Ts:(Ts * 4095); % Not sure about this, it sets final signal length

%% FFT of A and FFT of B

A_freq = fft(A, 4096); % FFT of A, padding out to 4096 points

B_freq = fft(B, 4096); % FFT of B, padding out to 4096 points

%% Find channel response

H(f) = B_freq ./ A_freq; % Effective de-convolution

%% calculate ifft

H(t) = ifft( H(f) ); % this gives resultant time domain signal

plot (t,H(t))

Regards

Gokul

----- Original Message ----

From: "p...@nrc.ac.uk"

To: m...

Sent: Monday, 7 January, 2008 10:22:58 AM

Subject: [matlab] Signal processing help required

I am de-convolving A and B by the standard method of taking FFTs of both time signals and dividing FFT of B by FFT of A, then taking the iFFT of the result to get the de-convolved time signal. A is a time domain signal of 650 discrete data points and B is a time domain signal of 3500 discrete data points.

My question/problem is about the differing signal lengths, also getting my head around the theory. I am zero-padding both signals out to 4096 discrete data points before FFTs occur.

i. Is my matlab code (or more impotantly my process) correct to properly de-convolve these 2 signals?

ii. Can 2 signals of different lengths be successfully de-convolved?

iii. What is the correct length of the resultant de-convolved signal (H(t)), 1725 ns or some other length of time?

%% Read in data from the two files

A = xlsread('signal_ A'); % signal A of length 650 data points (-15 -> 310 ns)

B = xlsread('signal_ B'); % signal B of length 3500 data points (-20 -> 1705 ns)

%% Sampling time

Ts = 0.5*10^-9; % sample time is 0.5ns for both signals

t = 0:Ts:(Ts * 4095); % Not sure about this, it sets final signal length

%% FFT of A and FFT of B

A_freq = fft(A, 4096); % FFT of A, padding out to 4096 points

B_freq = fft(B, 4096); % FFT of B, padding out to 4096 points

%% Find channel response

H(f) = B_freq ./ A_freq; % Effective de-convolution

%% calculate ifft

H(t) = ifft( H(f) ); % this gives resultant time domain signal

plot (t,H(t))

Reply by ●January 14, 20082008-01-14

What you are doing is essentially correct. Zero-Padding does not alter the
structure of the problem in any way. However, deconvolution by dividing the
FFT's is not always a good technique. If the signal in the denominator has
values close to zero for a range of frequencies then the deconvolution will blow
up and you will essentially end up with a lot of noise. A better way would be
use least squares formulation with Tikhonov regularization. If you are loathe to
doing this then you might consider using the inbuilt function deconvreg in
matlab.

Regards

Gokul

Thanks for the reply. I tried the deconv function in Matlab and it gave one of the files in the residual part of the deconv and a straight line in the other part (the result). It seems deconv doesn't work with my 2 files in their current form. Any advice?

As for the Tikhonov, I will maybe leave that to plan B as I don't know where to start even after some reading!!

Thanks,

Phil

Regards

Gokul

Thanks for the reply. I tried the deconv function in Matlab and it gave one of the files in the residual part of the deconv and a straight line in the other part (the result). It seems deconv doesn't work with my 2 files in their current form. Any advice?

As for the Tikhonov, I will maybe leave that to plan B as I don't know where to start even after some reading!!

Thanks,

Phil

Reply by ●January 16, 20082008-01-16

In addition to the above question, I have a question on the same subject
classified as follows:

I have two sets of data: (1)excitation time history obtained from a single point at sampling frequency 500Hz (vector), and (2)response time series measured at 4 points with sampling frequency (matrix).

First, how can I calculate and plot the FFT versus frequency of the time series data in MATLAB taking into consideration the different sampling frequency.

Secondly, I need some explanation/suggestion on how to determine the frequency response functions (FRFs) of the (Nx4) response matrix with respect to the excitation vectors, each of different sampling rate.

I appreciate your gesture.

I have two sets of data: (1)excitation time history obtained from a single point at sampling frequency 500Hz (vector), and (2)response time series measured at 4 points with sampling frequency (matrix).

First, how can I calculate and plot the FFT versus frequency of the time series data in MATLAB taking into consideration the different sampling frequency.

Secondly, I need some explanation/suggestion on how to determine the frequency response functions (FRFs) of the (Nx4) response matrix with respect to the excitation vectors, each of different sampling rate.

I appreciate your gesture.