DSPRelated.com
Forums

Extending unknown complex exponential in time

Started by waze...@gmail.com June 25, 2009
I'm looking for a method (preferably of low computational complexity)
that will allow me to extend a sum of complex exponential from a small
period to a greater one.

More precisely I have (discrete):

sum(a_i * E^(i*2pi*f_i + theta_i)) for t over {1,K} for some set of
a_i, f_i, theta_i...
and would like to produce:
sum(a_i * E^(i*2pi*f_i + theta_i)) for t over {1,N}

for N >> K

K is, of course, more than the number of complex exponentials.

Any ideas?  Something like zero-stuffing will create phase
discontinuities in the other domain so this does now work.

Thanks in advance,


Martin
On Jun 25, 10:58&#4294967295;am, "wazerf...@gmail.com" <wazerf...@gmail.com>
wrote:
> I'm looking for a method (preferably of low computational complexity) > that will allow me to extend a sum of complex exponential from a small > period to a greater one. > > More precisely I have (discrete): > > sum(a_i * E^(i*2pi*f_i + theta_i)) for t over {1,K} for some set of > a_i, f_i, theta_i... > and would like to produce: > sum(a_i * E^(i*2pi*f_i + theta_i)) for t over {1,N} > > for N >> K > > K is, of course, more than the number of complex exponentials. > > Any ideas? &#4294967295;Something like zero-stuffing will create phase > discontinuities in the other domain so this does now work. > > Thanks in advance, > > Martin
I apologize for not pluralizing half of the 'exponential's
On Jun 25, 10:59&#4294967295;am, "wazerf...@gmail.com" <wazerf...@gmail.com>
wrote:
> On Jun 25, 10:58&#4294967295;am, "wazerf...@gmail.com" <wazerf...@gmail.com> > wrote: > > > > > I'm looking for a method (preferably of low computational complexity) > > that will allow me to extend a sum of complex exponential from a small > > period to a greater one. > > > More precisely I have (discrete): > > > sum(a_i * E^(i*2pi*f_i + theta_i)) for t over {1,K} for some set of > > a_i, f_i, theta_i... > > and would like to produce: > > sum(a_i * E^(i*2pi*f_i + theta_i)) for t over {1,N} > > > for N >> K > > > K is, of course, more than the number of complex exponentials. > > > Any ideas? &#4294967295;Something like zero-stuffing will create phase > > discontinuities in the other domain so this does now work. > > > Thanks in advance, > > > Martin > > I apologize for not pluralizing half of the 'exponential's
grr... and there is obviously supposed to be a 't' in there: sum(a_i * E^(i*2pi*f_i*t + theta_i)) Sorry for spamming the group. -Martin
On 25 Jun, 10:58, "wazerf...@gmail.com" <wazerf...@gmail.com> wrote:
> I'm looking for a method (preferably of low computational complexity) > that will allow me to extend a sum of complex exponential from a small > period to a greater one. > > More precisely I have (discrete): > > sum(a_i * E^(i*2pi*f_i + theta_i)) for t over {1,K} for some set of > a_i, f_i, theta_i... > and would like to produce: > sum(a_i * E^(i*2pi*f_i + theta_i)) for t over {1,N} > > for N >> K > > K is, of course, more than the number of complex exponentials. > > Any ideas? &#4294967295;Something like zero-stuffing will create phase > discontinuities in the other domain so this does now work.
Can't see how this can be done without first solving for the exponentials, and then extend the parametric model. Rune
On Jun 25, 11:14&#4294967295;am, Rune Allnor <all...@tele.ntnu.no> wrote:
> On 25 Jun, 10:58, "wazerf...@gmail.com" <wazerf...@gmail.com> wrote: > > > > > I'm looking for a method (preferably of low computational complexity) > > that will allow me to extend a sum of complex exponential from a small > > period to a greater one. > > > More precisely I have (discrete): > > > sum(a_i * E^(i*2pi*f_i + theta_i)) for t over {1,K} for some set of > > a_i, f_i, theta_i... > > and would like to produce: > > sum(a_i * E^(i*2pi*f_i + theta_i)) for t over {1,N} > > > for N >> K > > > K is, of course, more than the number of complex exponentials. > > > Any ideas? &#4294967295;Something like zero-stuffing will create phase > > discontinuities in the other domain so this does now work. > > Can't see how this can be done without first solving > for the exponentials, and then extend the parametric > model. > > Rune
That was my worry.
On Jun 25, 6:01&#4294967295;am, "wazerf...@gmail.com" <wazerf...@gmail.com> wrote:
> On Jun 25, 11:14&#4294967295;am, Rune Allnor <all...@tele.ntnu.no> wrote: > > > > > > > On 25 Jun, 10:58, "wazerf...@gmail.com" <wazerf...@gmail.com> wrote: > > > > I'm looking for a method (preferably of low computational complexity) > > > that will allow me to extend a sum of complex exponential from a small > > > period to a greater one. > > > > More precisely I have (discrete): > > > > sum(a_i * E^(i*2pi*f_i + theta_i)) for t over {1,K} for some set of > > > a_i, f_i, theta_i... > > > and would like to produce: > > > sum(a_i * E^(i*2pi*f_i + theta_i)) for t over {1,N} > > > > for N >> K > > > > K is, of course, more than the number of complex exponentials. > > > > Any ideas? &#4294967295;Something like zero-stuffing will create phase > > > discontinuities in the other domain so this does now work. > > > Can't see how this can be done without first solving > > for the exponentials, and then extend the parametric > > model. > > > Rune > > That was my worry.- Hide quoted text - > > - Show quoted text -
I assume a correlation-based approach has been considered and rejected?
On Jun 25, 12:01&#4294967295;pm, "wazerf...@gmail.com" <wazerf...@gmail.com>
wrote:
> On Jun 25, 11:14&#4294967295;am, Rune Allnor <all...@tele.ntnu.no> wrote: > > > > > On 25 Jun, 10:58, "wazerf...@gmail.com" <wazerf...@gmail.com> wrote: > > > > I'm looking for a method (preferably of low computational complexity) > > > that will allow me to extend a sum of complex exponential from a small > > > period to a greater one. > > > > More precisely I have (discrete): > > > > sum(a_i * E^(i*2pi*f_i + theta_i)) for t over {1,K} for some set of > > > a_i, f_i, theta_i... > > > and would like to produce: > > > sum(a_i * E^(i*2pi*f_i + theta_i)) for t over {1,N} > > > > for N >> K > > > > K is, of course, more than the number of complex exponentials. > > > > Any ideas? &#4294967295;Something like zero-stuffing will create phase > > > discontinuities in the other domain so this does now work. > > > Can't see how this can be done without first solving > > for the exponentials, and then extend the parametric > > model. > > > Rune > > That was my worry.
It looks like using the auto regressive model is necessary. For the future reference of others, I took the following approach: - given some y of length 100 which contains the sum of a few complex exponentials: [U,S,V] = svd(y,'econ'); b = V(:,size(V,2)); %auto regressive model coefficients: alphas = flipud(-b0(2:3) ./ b0(1)); %construct a y2 which has an additional 100 samples of the exponentials: y2 = [y;zeros(100,1)]; %apply autoregressive model: for(m=101:200) y2(m) = y2((m-2):(m-1)).'*alphas; end I think this is about as good as can be done unless anyone has some other approaches...
On Jun 26, 11:07&#4294967295;am, "wazerf...@gmail.com" <wazerf...@gmail.com>
wrote:
> On Jun 25, 12:01&#4294967295;pm, "wazerf...@gmail.com" <wazerf...@gmail.com> > wrote: > > > > > On Jun 25, 11:14&#4294967295;am, Rune Allnor <all...@tele.ntnu.no> wrote: > > > > On 25 Jun, 10:58, "wazerf...@gmail.com" <wazerf...@gmail.com> wrote: > > > > > I'm looking for a method (preferably of low computational complexity) > > > > that will allow me to extend a sum of complex exponential from a small > > > > period to a greater one. > > > > > More precisely I have (discrete): > > > > > sum(a_i * E^(i*2pi*f_i + theta_i)) for t over {1,K} for some set of > > > > a_i, f_i, theta_i... > > > > and would like to produce: > > > > sum(a_i * E^(i*2pi*f_i + theta_i)) for t over {1,N} > > > > > for N >> K > > > > > K is, of course, more than the number of complex exponentials. > > > > > Any ideas? &#4294967295;Something like zero-stuffing will create phase > > > > discontinuities in the other domain so this does now work. > > > > Can't see how this can be done without first solving > > > for the exponentials, and then extend the parametric > > > model. > > > > Rune > > > That was my worry. > > It looks like using the auto regressive model is necessary. &#4294967295;For the > future reference of others, I took the following approach: > > - given some y of length 100 which contains the sum of a few complex > exponentials: > > [U,S,V] = svd(y,'econ'); > b = V(:,size(V,2)); > > %auto regressive model coefficients: > alphas = flipud(-b0(2:3) ./ b0(1)); > > %construct a y2 which has an additional 100 samples of the > exponentials: > > y2 = [y;zeros(100,1)]; > > %apply autoregressive model: > for(m=101:200) > &#4294967295; &#4294967295;y2(m) = y2((m-2):(m-1)).'*alphas; > end > > I think this is about as good as can be done unless anyone has some > other approaches...
b = V(:,size(V,2)); should be: b0 = V(:,size(V,2));
On 26 Jun, 11:07, "wazerf...@gmail.com" <wazerf...@gmail.com> wrote:
> On Jun 25, 12:01&#4294967295;pm, "wazerf...@gmail.com" <wazerf...@gmail.com> > wrote: > > > > > > > On Jun 25, 11:14&#4294967295;am, Rune Allnor <all...@tele.ntnu.no> wrote: > > > > On 25 Jun, 10:58, "wazerf...@gmail.com" <wazerf...@gmail.com> wrote: > > > > > I'm looking for a method (preferably of low computational complexity) > > > > that will allow me to extend a sum of complex exponential from a small > > > > period to a greater one. > > > > > More precisely I have (discrete): > > > > > sum(a_i * E^(i*2pi*f_i + theta_i)) for t over {1,K} for some set of > > > > a_i, f_i, theta_i... > > > > and would like to produce: > > > > sum(a_i * E^(i*2pi*f_i + theta_i)) for t over {1,N} > > > > > for N >> K > > > > > K is, of course, more than the number of complex exponentials. > > > > > Any ideas? &#4294967295;Something like zero-stuffing will create phase > > > > discontinuities in the other domain so this does now work. > > > > Can't see how this can be done without first solving > > > for the exponentials, and then extend the parametric > > > model. > > > > Rune > > > That was my worry. > > It looks like using the auto regressive model is necessary. &#4294967295;
Since you have undamped exponentials, there are a few trade-offs to consider with the AR model: - If you use the Yule-Walker equations with the 'usual' biased estimator for the covariance matrix, the roots of the corresponding AR filter are strictly inside, not on, the unit circle. Which violates you model. - If you use the YW equations with the modified covariance equations (see Marple's 1987 book), you can get roots *on* the unit circle, but you are likely to get an unstable filter. Which will do you no good. If you have real-life data, there might not be much harm in using the 'usual' AR method. You might end up in trouble if you use it in with simulated data, though. BTW, what are you using these data for? It seems a bit, well, curious that you want to artificially extrapolate a data set? Particularly if they are measured data... Rune
On Jun 25, 4:58&#4294967295;am, "wazerf...@gmail.com" <wazerf...@gmail.com> wrote:
> I'm looking for a method (preferably of low computational complexity) > that will allow me to extend a sum of complex exponential from a small > period to a greater one. > > More precisely I have (discrete): > > sum(a_i * E^(i*2pi*f_i + theta_i)) for t over {1,K} for some set of > a_i, f_i, theta_i... > and would like to produce: > sum(a_i * E^(i*2pi*f_i + theta_i)) for t over {1,N} > > for N >> K > > K is, of course, more than the number of complex exponentials. > > Any ideas? &#4294967295;Something like zero-stuffing will create phase > discontinuities in the other domain so this does now work. > > Thanks in advance, > > Martin
I would look at using an LPC analysis and synthesis. The analysis involves autocorrellation and solving a teoplitz matrix (efficiently done via Durbin's recursion). The synthesis is much simpler - An all pole filter triggered with an impulse. You find actually find code for these methods on books and papers involving speech processing. Try looking at different LPC orders ontil you find one that leaves little residual. IHTH, Clay