Register to reply 
Deconvolution  signal processing 
Share this thread: 
#1
Jan2605, 09:40 PM

P: n/a

Hi. I have a data gaussian g(t) and data that I suspect is a convolution (g*f). I want to find f(t), so I need to deconvolute (using Origin preferably).
If I convolute [tex]g*g[/tex], I get something very beautiful. If I convolute [tex](g*f)*(g*f)[/tex], I get something very beautiful. If I deconvolute [tex]g*^^1g[/tex], I get something very beautiful. If I deconvolute [tex](g*f)*^^1(g*f)[/tex], I get something very beautiful. If I convolute [tex]g*(g*f)[/tex], I get something acceptably beautiful. But why is it that when I deconvolute [tex](g*f)*^^1g[/tex], which should recover the f I'm looking for, I get the most horrible noise graph I've ever seen? Roughly a very thick (zigzag) useless straight line. How do I recover f with minimal noise? Edited with Latex notation after first reply 


#2
Jan2605, 11:04 PM

P: 2,251

since we can really mark this up with real math using: [tex] x(t)=e^{j \omega t} [/tex] in this forum, why not use it so we can know what you're typing about. of course, you can use that form USENET, so you will need to express your math with ASCII somehow if you post to comp.dsp. r bj 


#3
Jan2705, 09:43 AM

P: n/a

I understand that where * can be the symbol for convolution, [tex]*^^1[/tex] can be the symbol for decovolution (1 is meant to be an "exponent" to the *, like [tex]2^^1 = 1/2[/tex]). I just Latexed it, thank.
http://www.kcci.virginia.edu/FRETFL...ate/deconv.htm My problem seems to simply be that when I deconvolute, I get so much noise, it buries the function I'm looking for. 


#4
Jan2705, 11:59 AM

P: 2,251

Deconvolution  signal processing
To say [tex] f = h (*) g [/tex] is the same as saying [tex] F = H G [/tex] where [tex] F [/tex], [tex] G [/tex], and [tex] H [/tex] are the Fourier Transform of [tex] f [/tex], [tex] g [/tex], and [tex] h [/tex]. To recover [tex] G [/tex] from [tex] F [/tex] and [tex] H [/tex], we divide: [tex] G = H^{1} F [/tex] and then inverse Fourier Transform that to get [tex] g [/tex]. i guess you could say, with some abuse of notation that this is [tex] g = (h^{1}) (*) f [/tex]. the notation you referred to make no sense. now if [tex] H \approx 0 [/tex] anywhere, then the inverse (reciprocal) could get very nasty. it is not always possible to invert a "transfer function" (which is the role that i'm giving [tex] H [/tex]. if your "deconvolution" requires that, you got some basic mathematical problems. r bj 


#5
Jan2705, 01:39 PM

P: n/a

The notation is an abuse, but probably the next best thing without going into the Fourier transforms. Anyhow.
Not sure what you mean with [tex]H \approx 0[/tex]. All the functions invloved surely become 0 when they tend to either infinity. My raw data (f*g and g) is really not that noisy, only one hump each, same order of magnitude. Heck, here it is (f*g left, g right), any time scale is good : 0 0 0 0.00339 0.03315 0 0.04222 0.00339 0.12988 0 0.33524 0.00339 0.63104 0.01017 0.81368 0.02373 0.93687 0.06441 0.99383 0.14915 1 0.34915 0.9216 0.64407 0.70303 0.92542 0.54662 1 0.46232 0.92542 0.40534 0.64407 0.35129 0.34915 0.29124 0.14915 0.25822 0.06441 0.22819 0.02373 0.19514 0.01017 0.18916 0.00339 0.15315 0 0.14712 0.00339 0.12906 0 0.1231 0.00339 0.09908 0 0.09908 0.08407 0.08407 0.08105 0.07804 0.06305 0.0601 0.06322 0.06303 0.06005 0.04513 0.04804 0.05107 0.04199 0.04508 0.048 0.03891 0.04206 0.04502 0.03903 0.03594 0.03622 0.03605 0.02721 0.03305 0.02705 0.03301 0.03301 0.02407 0.03 0.027 0.02709 0.03005 0.02404 0.021 0.02404 0.02109 0.02398 0.02407 0.02712 0 0 


#6
Jan2705, 03:04 PM

P: 2,251

[tex] f = h (*) g [/tex] and [tex] F = H G [/tex]. when they say [tex] g = (h^{1}) (*) f [/tex] and [tex] G = H^{1} F [/tex]. inverting (computing the reciprocal of) [tex] H [/tex] to get [tex] H^{1} [/tex] is nasty if [tex] H \approx 0 [/tex], even worse if [tex] H=0 [/tex]. r bj 


#7
Jan2705, 03:56 PM

P: n/a

I understand the transforms. But I didn't know H=0 was problematic. Gaussians and their transforms go to 0, yet they easily convolute and deconvolute, don't they? I can't imagine a useful function that doesn't go to 0. Wouldn't the transform of any pulse, or signal do so? 


#8
Jan2805, 12:44 PM

P: 2,251

r bj 


#9
Jan3105, 08:47 PM

P: n/a

Ok, I follow. Interesting stuff. So the best way to do this would be to have a higher sampling rate during the measurement, right?
And if that's not possible, I could interpolate between the points I have. 


#10
Jan3105, 10:38 PM

P: 2,251

is [tex] e^{ \pi f^2} [/tex]. i'm not so sure how that will look with discretetime functions but it should be very similar if the sampling rate is fast enough and if the sample size is large enough. even though the gaussian pulse never gets to zero, it gets awful damn close in a hurry. so you end up dividing by something close to zero. perhaps adding a small DC value to the F.T. of your g function will do it. that would be adding a small spike at the g(0) term before transformation. i dunno. r bj 


#11
Feb105, 09:13 AM

P: n/a

One function is a gaussian pulse. The one I'm looking should fit with a decreasing exponential [tex]h = ae^^b^t[/tex]. (more specifically a sum of N decreasing exponentials, such that the greater the N the better the precision, but N=1 is fine for now). Same order of duration as the gaussian. The data I have is for the gaussian, and for the convolution of the two.
The FFT of my discrete gaussian does look like another gaussian (I verified that it would get smoother with a better sampling rate). 


Register to reply 
Related Discussions  
Signal Processing FFT help  Electrical Engineering  4  
Signal Processing  Programming & Computer Science  5  
8bit binary signal processing  Electrical Engineering  2  
Signal Processing question  Engineering, Comp Sci, & Technology Homework  2  
Signal processing  Computing & Technology  5 