Re: Complex rebin [message #34531] |
Thu, 27 March 2003 06:24  |
the_cacc
Messages: 104 Registered: October 2001
|
Senior Member |
|
|
Ahh, of course. I knew it would be something like that - I had a
similar problem with MEDIAN a few months ago. I'm only using REBIN to
expand a 2D array to 3D (containing the same values) so I just
separated Re and Im and REBINned them separately, easy.
Thanks.
|
|
|
Re: Complex rebin [message #34534 is a reply to message #34531] |
Wed, 26 March 2003 18:35   |
MKatz843
Messages: 98 Registered: March 2002
|
Member |
|
|
> Any reason why REBIN doesn't take complex args?
I can't say why REBIN doesn't take complex args, but I can say that
you have to be very careful when you interpolate complex values if you
want to have meaningful results.
Consider these two numbers
z1 = complex(1,0) = 1.
z2 = complex(-1,0) = -1.
Suppose you were using rebin to redice the size of a linear array by
2.
Which of the following behaviors would you want?
You could separately average x and y like this, and get zero:
z_avg = (complex(1,0) + complex(-1,0))/2. = complex(0,0) = 0
Or, you could respect the fact that the phase changes by 180 degrees
but the amplitude doesn't change at all. So,
z_avg = complex(0,1) = i
This second value would come from
z1 = r1*exp(i*theta1)
z2 = r2*exp(i*theta2) ;--- note i = complex(0,1)
z_avg = ((r1+r2)/2.) * exp(i * (theta1+theta2)/2.)
To accomplish the first mode, you could break up and separately REBIN
real(a) and imaginary(a).
To accomplish the second mode, you could break up ans separately REBIN
abs(a) and atan(a, /phase)
M. Katz
|
|
|
Re: Complex rebin [message #34615 is a reply to message #34534] |
Fri, 28 March 2003 01:12  |
Craig Markwardt
Messages: 1869 Registered: November 1996
|
Senior Member |
|
|
MKatz843@onebox.com (M. Katz) writes:
>> Any reason why REBIN doesn't take complex args?
>
> I can't say why REBIN doesn't take complex args, but I can say that
> you have to be very careful when you interpolate complex values if you
> want to have meaningful results.
>
> Consider these two numbers
> z1 = complex(1,0) = 1.
> z2 = complex(-1,0) = -1.
>
> Suppose you were using rebin to redice the size of a linear array by
> 2.
> Which of the following behaviors would you want?
>
> You could separately average x and y like this, and get zero:
> z_avg = (complex(1,0) + complex(-1,0))/2. = complex(0,0) = 0
This one. It's what all the other flavors of REBIN do.
It's the "compress" form of REBIN that I would be really interested
in, i.e. the ability to sum up loads of complex values.
Craig
--
------------------------------------------------------------ --------------
Craig B. Markwardt, Ph.D. EMAIL: craigmnet@cow.physics.wisc.edu
Astrophysics, IDL, Finance, Derivatives | Remove "net" for better response
------------------------------------------------------------ --------------
|
|
|