DSPRelated.com
Forums

Determining "effective" length of signal from frequency spectrum

Started by Andy365 March 24, 2011
Hello gurus,
say you have an (almost) random real frequency spectrum: G(f).
You sample this spectrum at df: Gi = G(i*df).
Next you take the IDFT of this spectrum: gi = g(i*dt).
Nyquist tells us that the extent of this signal, tN is given by:
tN = 1/(2*df)
However our signals have the property that the signal is only nonzero
up to tmax:
|g(t)| > 0 for 0 < t <= tmax, |g(t)| = 0 for tmax < t <= tN.
And tmax vary from signal to signal.

Is there a way to determine tmax from G(f) without actually doing the
IDFT?

Thanks in advance for any answers!
Andreas Werner Paulsen
On Mar 24, 10:23&#4294967295;am, Andy365 <andreas_w_paul...@yahoo.com> wrote:
> Hello gurus, > say you have an (almost) random real frequency spectrum: G(f). > You sample this spectrum at df: Gi = G(i*df). > Next you take the IDFT of this spectrum: gi = g(i*dt). > Nyquist tells us that the extent of this signal, tN is given by: > tN = 1/(2*df) > However our signals have the property that the signal is only nonzero > up to tmax: > |g(t)| > 0 for 0 < t <= tmax, |g(t)| = 0 for tmax < t <= tN. > And tmax vary from signal to signal. > > Is there a way to determine tmax from G(f) without actually doing the > IDFT? > > Thanks in advance for any answers! > Andreas Werner Paulsen
No. Rune
Hello again,
I just wanted to mention my motivation:

1.
When I do the IDFT I have to decide on the sampling in the frequency
specter, df. If I choose to large df; the IDFT will truncate the
signal: tmax > tN.
Visually it would be easy for me to see if I truncated the signal and
go back and refine the sampling,
however this process will be done by a software program I am working
on.
So how can the program detect that it have truncated the signal?

2.
The IDFT is time consuming and therefore I would like to do it on as
few as possible samples (large df) but without truncating the signal.
So ideally I would like to determine tmax from G(f) without actually
doing the
IDFT. I understand an exact solution may not be possible.
However an upper limit would suffice.

Andreas Werner Paulsen

On Mar 24, 11:39&#4294967295;am, Andy365 <andreas_w_paul...@yahoo.com> wrote:
> Hello again, > I just wanted to mention my motivation: > > 1. > When I do the IDFT I have to decide on the sampling in the frequency > specter, df. If I choose to large df; the IDFT will truncate the > signal: tmax > tN. > Visually it would be easy for me to see if I truncated the signal and > go back and refine the sampling, > however this process will be done by a software program I am working > on. > So how can the program detect that it have truncated the signal? > > 2. > The IDFT is time consuming and therefore I would like to do it on as > few as possible samples (large df) but without truncating the signal. > So ideally I would like to determine tmax from G(f) without actually > doing the > IDFT. I understand an exact solution may not be possible. > However an upper limit would suffice.
Can't be done. Consider the delta impolse d[n] = 1, n = 0; d[n] = 0, n =/= 0. This signal has the shortest possible duration. All its DFT coefficients have the same magnitude, and constant phase. Next consider the (admittedly crude) white noise generator, that works like this: 1) Specify a spectrum with constant magnitude 2) Apply a random phase component to each DFT component 3) Convert from polar to carthesian form 4) IDFT to get the pseudorandom sequence There is no way you can achieve what you want, let alone in shorter time than what it takes to do the IDFT. Do the IDFT. Rune
On Mar 24, 12:07&#4294967295;pm, Rune Allnor <all...@tele.ntnu.no> wrote:
> On Mar 24, 11:39&#4294967295;am, Andy365 <andreas_w_paul...@yahoo.com> wrote: > > > > > > > Hello again, > > I just wanted to mention my motivation: > > > 1. > > When I do the IDFT I have to decide on the sampling in the frequency > > specter, df. If I choose to large df; the IDFT will truncate the > > signal: tmax > tN. > > Visually it would be easy for me to see if I truncated the signal and > > go back and refine the sampling, > > however this process will be done by a software program I am working > > on. > > So how can the program detect that it have truncated the signal? > > > 2. > > The IDFT is time consuming and therefore I would like to do it on as > > few as possible samples (large df) but without truncating the signal. > > So ideally I would like to determine tmax from G(f) without actually > > doing the > > IDFT. I understand an exact solution may not be possible. > > However an upper limit would suffice. > > Can't be done. > > Consider the delta impolse d[n] = 1, n = 0; d[n] = 0, n =/= 0. > This signal has the shortest possible duration. All its DFT > coefficients > have the same magnitude, and constant phase. > > Next consider the (admittedly crude) white noise generator, that works > like this: > > 1) Specify a spectrum with constant magnitude > 2) Apply a random phase component to each DFT component > 3) Convert from polar to carthesian form > 4) IDFT to get the pseudorandom sequence > > There is no way you can achieve what you want, let alone in shorter > time than what it takes to do the IDFT. > > Do the IDFT. > > Rune- Hide quoted text - > > - Show quoted text -
Thank you Rune for your answer! I am not quite sure I understand what you are saying though. Are you saying that since a delta impulse and a pseudo random sequence can have the same |G(f)| this can not be done? Maybe I misused the term frequency specter; but I do know G(f) not just |G(f)|. One approach I have been considering is this: introduce: En = Sum( |G(fi)|^2 ), over n samples. Now calculate e.g. E32 and E64. En approaches the correct energy from above as n ->infinity. If E32/E64 ~= 1; then n = 32 samples is enough. If not increase the number of samples: calculate E64 and E128. If E64/E128 ~= 1; then n = 64 samples is enough, etc. Andreas W. P. I am sorry that I misexplained this but G(f) is not real as I stated to begin with. Instead g(t) is real => G(-f) = [G(f)]* and Im{ G(f) } = 0 for f > 0
Please disregard the last 3 lines in may last post!
A. W. P.
On Mar 24, 1:14&#4294967295;pm, Andy365 <andreas_w_paul...@yahoo.com> wrote:
> On Mar 24, 12:07&#4294967295;pm, Rune Allnor <all...@tele.ntnu.no> wrote: > > > > > > > On Mar 24, 11:39&#4294967295;am, Andy365 <andreas_w_paul...@yahoo.com> wrote: > > > > Hello again, > > > I just wanted to mention my motivation: > > > > 1. > > > When I do the IDFT I have to decide on the sampling in the frequency > > > specter, df. If I choose to large df; the IDFT will truncate the > > > signal: tmax > tN. > > > Visually it would be easy for me to see if I truncated the signal and > > > go back and refine the sampling, > > > however this process will be done by a software program I am working > > > on. > > > So how can the program detect that it have truncated the signal? > > > > 2. > > > The IDFT is time consuming and therefore I would like to do it on as > > > few as possible samples (large df) but without truncating the signal. > > > So ideally I would like to determine tmax from G(f) without actually > > > doing the > > > IDFT. I understand an exact solution may not be possible. > > > However an upper limit would suffice. > > > Can't be done. > > > Consider the delta impolse d[n] = 1, n = 0; d[n] = 0, n =/= 0. > > This signal has the shortest possible duration. All its DFT > > coefficients > > have the same magnitude, and constant phase. > > > Next consider the (admittedly crude) white noise generator, that works > > like this: > > > 1) Specify a spectrum with constant magnitude > > 2) Apply a random phase component to each DFT component > > 3) Convert from polar to carthesian form > > 4) IDFT to get the pseudorandom sequence > > > There is no way you can achieve what you want, let alone in shorter > > time than what it takes to do the IDFT. > > > Do the IDFT. > > > Rune- Hide quoted text - > > > - Show quoted text - > > Thank you Rune for your answer! > I am not quite sure I understand what you are saying though. > Are you saying that since a delta impulse and a pseudo random > sequence can have the same |G(f)| this can not be done?
Yes. Rune