DSPRelated.com
Forums

complex convolution

Started by estdev May 11, 2005
Dear All,


I would like to convolve two complex sequences. Could anybody help me
how to define the convolution of two complex sequences please?

Thanks in advanced.

Regard,
estdev

estdev wrote:

> Dear All, > > > I would like to convolve two complex sequences. Could anybody help me > how to define the convolution of two complex sequences please? > > Thanks in advanced. > > Regard, > estdev >
Convolution with complex numbers is the same as convolution with real numbers, except that (I am 99.44% sure) you have to take the conjugate of one of the series. ------------------------------------------- Tim Wescott Wescott Design Services http://www.wescottdesign.com
"Tim Wescott" <tim@seemywebsite.com> wrote in message 
news:11852b9qq14452d@corp.supernews.com...
> estdev wrote: > >> Dear All, >> >> >> I would like to convolve two complex sequences. Could anybody help me >> how to define the convolution of two complex sequences please? >> >> Thanks in advanced. >> >> Regard, >> estdev >> > Convolution with complex numbers is the same as convolution with real > numbers, except that (I am 99.44% sure) you have to take the conjugate of > one of the series. > > ------------------------------------------- > Tim Wescott > Wescott Design Services > http://www.wescottdesign.com
Tim, I think convolution is the simplest form with no conjugates. Correlation uses the conjugate of one of the arguments. Fred
Tim Wescott <tim@seemywebsite.com> writes:

> estdev wrote: > >> Dear All, >> I would like to convolve two complex sequences. Could anybody help me >> how to define the convolution of two complex sequences please? >> Thanks in advanced. >> Regard, >> estdev >> > Convolution with complex numbers is the same as convolution with real > numbers, except that (I am 99.44% sure) you have to take the conjugate > of one of the series.
It's the same in both cases, but the conjugate of a real number doesn't change the number. (g*h)(t) = \int_{-\infty}^{+\infty} g(\tau) h*(t-\tau) d\tau. -- % Randy Yates % "Watching all the days go by... %% Fuquay-Varina, NC % Who are you and who am I?" %%% 919-577-9882 % 'Mission (A World Record)', %%%% <yates@ieee.org> % *A New World Record*, ELO http://home.earthlink.net/~yatescr
in article 9qKdnap81OQ9Ox_fRVn-oQ@centurytel.net, Fred Marshall at
fmarshallx@remove_the_x.acm.org wrote on 05/11/2005 20:41:

> > "Tim Wescott" <tim@seemywebsite.com> wrote in message > news:11852b9qq14452d@corp.supernews.com... >> estdev wrote: >> >>> I would like to convolve two complex sequences. Could anybody help me >>> how to define the convolution of two complex sequences please? >>> >> Convolution with complex numbers is the same as convolution with real >> numbers, except that (I am 99.44% sure) you have to take the conjugate of >> one of the series. > > I think convolution is the simplest form with no conjugates. > Correlation uses the conjugate of one of the arguments.
and if flips the time axis around of one of the arguments (i think the same one as what get conjugated). -- r b-j rbj@audioimagination.com "Imagination is more important than knowledge."
"Fred Marshall" <fmarshallx@remove_the_x.acm.org> wrote in message 
news:9qKdnap81OQ9Ox_fRVn-oQ@centurytel.net...
> Tim, > > I think convolution is the simplest form with no conjugates. > Correlation uses the conjugate of one of the arguments.
Yes, but now the OP needs an authoritative reference: http://mathworld.wolfram.com/Cross-Correlation.html -- Matt
Perhaps it will be helpful to define complex convolution in terms of real 
convolutions such that you can put a wrapper around an existing library 
function for real convolution.  Let's say we want to convolve f[n] and g[n] 
where both f and g are sequences of complex numbers.  Say f[n] = f_r[n] + 
jf_i[n] and g[n] = g_r[n] + jg_i[n].

Hence we get:

f[n] * g[n]  = (f_r[n] + jf_i[n]) * (g_r[n] + jg_i[n])
= f_r[n]*g_r[n] + j f_r[n]*g_i[n] + j f_i[n]*g_r[n] - f_i[n]*g_i[n]
= (f_r[n]*g_r[n] - f_i[n]*g_i[n]) + j(f_r[n]*g_i[n] + f_i[n]*g_r[n]))

Now if you have access to a real convolution function you could just put a 
wrapper around it to get out your complex convolution.  You may need to 
modify the original convolution algorithm to have some stride between 
elements or else you'll need to separate the real and imaginary parts into 
their own arrays.

Brad

"estdev" <nmaedewi@yahoo.com> wrote in message 
news:1115840912.570067.275400@g47g2000cwa.googlegroups.com...
> Dear All, > > > I would like to convolve two complex sequences. Could anybody help me > how to define the convolution of two complex sequences please? > > Thanks in advanced. > > Regard, > estdev >
"Matt Timmermans" <mt0000@sympatico.nospam-remove.ca> writes:

> "Fred Marshall" <fmarshallx@remove_the_x.acm.org> wrote in message > news:9qKdnap81OQ9Ox_fRVn-oQ@centurytel.net... > > Tim, > > > > I think convolution is the simplest form with no conjugates. > > Correlation uses the conjugate of one of the arguments. > > Yes, but now the OP needs an authoritative reference: > > http://mathworld.wolfram.com/Cross-Correlation.html
A good, authoritative hardcopy reference on the subject is @BOOK{bracewell, title = "{The Fourier Transform and Its Applications}", author = "{Ronald~N.~Bracewell}", publisher = "McGraw-Hill", edition = "second, revised", year = "1986"} -- Randy Yates Sony Ericsson Mobile Communications Research Triangle Park, NC, USA randy.yates@sonyericsson.com, 919-472-1124
estdev wrote:
> Dear All, > > > I would like to convolve two complex sequences. Could anybody help me > how to define the convolution of two complex sequences please?
The convolution between of two complex-valued sequences is written as the real-valued convolution integral, with no conjugates. While I suspect the conjugate/no conjugate issue could be a matter of convention, an appealing argument in favour of no conjugates is that the frequency-domain expression becomes Y(w) = X(w)H(w) where Y(w), X(w) and H(w) are Fourier transforms of complex- valued y(t), x(t) and h(t), respectively. Rune
Randy Yates <yates@ieee.org> writes:
> [...] > It's the same in both cases, but the conjugate of a real number doesn't change the > number. > > (g*h)(t) = \int_{-\infty}^{+\infty} g(\tau) h*(t-\tau) d\tau.
The above is WRONG. There is no complex conjugate in convolution, according to Bracewell [1]. A complex conjugate exists in correlation when the functions are complex, (g*h)(t) = \int_{-\infty}^{+\infty} g*(\tau) h*(\tau+t) d\tau. [1] @BOOK{bracewell, title = "{The Fourier Transform and Its Applications}", author = "{Ronald~N.~Bracewell}", publisher = "McGraw-Hill", edition = "second, revised", year = "1986"} -- Randy Yates Sony Ericsson Mobile Communications Research Triangle Park, NC, USA randy.yates@sonyericsson.com, 919-472-1124