Dear Ifeffit Users, I changed to iFeffit recently and like the improved functionality very much. During my test runs I experienced some strange behaviour of the fft functions when using a non-standard k grid. I take from the Ifeffit documentation: - that all the functions performing fourier transforms should yield the same results (given the same parameters as input, of course). Specifically: I understand that fftf() and feffit() both compute ffts from k to R space for the chi data given with the "real=..." and "chi=..." parameters, respectively. - that these functions all use a k grid starting from 0 and having a grid width of 0.05. - that the non-standard k-grid of my data is automatically interpolated to the required k grid whenever the "k=..." parameter is set. This is especially true for the fftf() function as well as for the feffit() function. If these assumptions are right, I do not understand the results of the forward fft of the data array performed by the feffit() command. The fft by feffit() looks like the fft by fftf() when the k array is NOT defined. Is this behaviour correct? Does it affect the fit? Am I making a silly beginners mistake? Is this a bug? Thanks for your help! Peter PS: I am using Ifeffit 1.0076 with the G.I.feffit GUI 0.9 on a Win98SE system. I have attached a Ifeffit input file that tests these differences. -------------------------------------------------------------- Peter Pfalzer Universitaet Augsburg Tel: +49-821-598-3215 Lehrstuhl fuer Experimentalphysik II Fax: +49-821-598-3411 Universitaetsstr. 1 D-86135 Augsburg Germany Peter.Pfalzer@physik.uni-augsburg.de -------------------------------------------------------------- Der folgende Teil dieser Nachricht enthält einen Anhang im sogenannten Internet MIME Nachrichtenformat. Wenn Sie Pegasus Mail oder ein beliebiges anderes MIME-kompatibles Email-System verwenden, sollte Sie den Anhang mit Ihrem Email-System speichern oder anzeigen können. Anderenfalls fragen Sie Ihren Administrator. The following section of this message contains a file attachment prepared for transmission using the Internet MIME message format. If you are using Pegasus Mail, or any another MIME-compliant system, you should be able to save it or view it from within your mailer. If you cannot, please ask your system administrator for assistance. ---- Datei Information/File information ----------- Datei/File: test_fft1.iff Datum/Date: 11 Mar 2003, 10:42 Größe/Size: 1454 bytes. Typ/Type: Text Der folgende Teil dieser Nachricht enthält einen Anhang im sogenannten Internet MIME Nachrichtenformat. Wenn Sie Pegasus Mail oder ein beliebiges anderes MIME-kompatibles Email-System verwenden, sollte Sie den Anhang mit Ihrem Email-System speichern oder anzeigen können. Anderenfalls fragen Sie Ihren Administrator. The following section of this message contains a file attachment prepared for transmission using the Internet MIME message format. If you are using Pegasus Mail, or any another MIME-compliant system, you should be able to save it or view it from within your mailer. If you cannot, please ask your system administrator for assistance. ---- Datei Information/File information ----------- Datei/File: feff0001.dat Datum/Date: 11 Mar 2003, 9:57 Größe/Size: 6211 bytes. Typ/Type: Text
Hi Peter, Thanks for the report. I've verified your findings that feffit() is doing the wrong thing for the Fourier transforms for data on grids other than k-grid of 0.05Ang^-1. Here's what is happening: feffit() really is interpolating data internally onto the 0.05 grid for the fit. The fit _should_ procede correctly for data on any grid. Anyway, at the end of feffit() command it sends the data off to the fftf() command to make the chir_mag, etc arrays. It is at this point that the k-array in ***NOT*** being sent to the FFT. I've verified in my own tests that including the k-array in the FFT works, giving the right FFT. hopefully I will get a fixed version posted this week. But currently, the r-space data (data only, not the fits) from feffit() are wrong when a non-0.05 k-grid is used. Simply doing fftf(real=data.chi, k = data.k) will give the correct r-space data. I also noticed another wart and small inconsistency between feffit() and fftf() from your example, which has the 'data' over a smaller range than the FFT window. Thanks, and sorry for the trouble, --Matt
participants (2)
-
Matt Newville
-
Peter Pfalzer