# complex convolution

Started by 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?

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

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.

"estdev" <nmaedewi@yahoo.com> wrote in message
> 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