The Origin Forum
File Exchange
Try Origin for Free
The Origin Forum
Home | Profile | Register | Active Topics | Members | Search | FAQ | Send File to Tech support
Username:
Password:
Save Password
Forgot your Password? | Admin Options

 All Forums
 Origin Forum
 Origin Forum
 FFT resolution
 New Topic  Reply to Topic
 Printer Friendly
Author Previous Topic Topic Next Topic Lock Topic Edit Topic Delete Topic New Topic Reply to Topic

woodster

UK
Posts

Posted - 09/16/2004 :  09:39:28 AM  Show Profile  Edit Topic  Reply with Quote  View user's IP address  Delete Topic
Origin Version (Select Help-->About Origin): 7
Operating System:XP

Hi, another question about FFTs....

I was wondering how you change the resolution of the FFT. I'm performing an amplitude FFT on a pulse with 4096 data points, but the FFT seems as low resolution as the one i performed on a pulse with only 512 data points. I can't analyse such data since i may be missing important features in the FFT.

Thanks very much

Mike Buess

USA
3037 Posts

Posted - 09/16/2004 :  11:21:51 AM  Show Profile  Edit Reply  Reply with Quote  View user's IP address  Delete Reply
The resolution or your spectrum is defined as the increment between the frequency values. A smaller increment means better resolution. The frequency increment is the inverse of the length (duration) of your pulse. Increasing the number of data points does not necessarily improve the resolution. It depends on how you obtained the extra data points...

1. Increasing the number of points by digitizing faster increases the spectral width (you can see higher frequency features) but does not improve resolution. The pulse length is the same and so is the frequency increment.

2. Taking more points at the same digitization rate increases the pulse length and improves resolution while keeping the spectral width the same.

Lengthening the pulse will improve your resolution but merely digitizing faster will not. How did you increase your point count?

Mike Buess
Origin WebRing Member

Edited by - Mike Buess on 09/16/2004 11:45:30 AM
Go to Top of Page

woodster

UK
Posts

Posted - 09/23/2004 :  09:54:06 AM  Show Profile  Edit Reply  Reply with Quote  View user's IP address  Delete Reply
I'm scanning a pulse which has a specific lifetime, so to increase my point count i just took more samples at shorter time intervals over the same total time. This, as you said, spread all my points over a greater frequency range and so didn't actually improve the FFT resolution. What would you suggest doing to reduce the FFT frequency range whilst maintaining or increasing the point count? Bearing in mind that I have a specific time interval in which I can sample...?

Cheers again
Go to Top of Page

Mike Buess

USA
3037 Posts

Posted - 09/23/2004 :  11:34:16 AM  Show Profile  Edit Reply  Reply with Quote  View user's IP address  Delete Reply
If you can't actually increase the pulse length you can try increasing it artificially by adding zeros at the end. In pulsed NMR this is known as zero-filling. The NMR signal oscillates at the offset frequency (carrier freq - resonance freq) and decays exponentially, typically reaching the noise level before the end of the acquisition window. If N points are acquired the resolution can be doubled by appending N zeros to the time domain data before applying FFT.

If your signal is not decaying then zero-filling will not help much and may actually distort your spectrum. But it's easy to try so I'll explain how. I'll assume your pulse data is in the active worksheet with columns A(X) and B(Y). Copy the following lines and paste them to Origin's script window. Then select all lines and execute by pressing Enter.

get col(B) -e npt; // npt is the number of rows
nn=2*npt;
set %H -er nn; // double the number of rows
dwell=col(A)[2]-col(A)[1]; // dwell time
start=col(A)[1]; // first time value (row 1)
stop=start+dwell*(nn-1)); // last time value (row nn)
col(A)=data(start,stop,dwell); // fill in time column (1st half will be the same as before)
tmp=data(1,nn); // create a temporary dataset with nn rows
tmp=0; // set all values to zero
copy -b 1 col(B) tmp -b 1 -e npt; // copy existing Y values to tmp
col(B)=tmp; // copy tmp to col(B) (1st half will be the same, 2nd half will be zeros)
del tmp; // delete tmp

Good luck!

Mike Buess
Origin WebRing Member

Edited by - Mike Buess on 09/23/2004 11:37:37 AM
Go to Top of Page
  Previous Topic Topic Next Topic Lock Topic Edit Topic Delete Topic New Topic Reply to Topic
 New Topic  Reply to Topic
 Printer Friendly
Jump To:
The Origin Forum © 2020 Originlab Corporation Go To Top Of Page
Snitz Forums 2000