\(\renewcommand\AA{\unicode{x212B}}\)

FFTDerivative v1

../_images/FFTDerivative-v1_dlg.png

FFTDerivative dialog.

Summary

Calculated derivatives of a spectra in the MatrixWorkspace using Fast Fourier Transform (FFT).

Properties

Name Direction Type Default Description
InputWorkspace Input MatrixWorkspace Mandatory Input workspace for differentiation
OutputWorkspace Output MatrixWorkspace Mandatory Workspace with result derivatives
Order Input number 1 The order of the derivative

Description

Calcuates the derivative of the specta in a workspace using FFT v1.

Usage

Example: Different Orders of Derivative

wsOriginal = CreateSampleWorkspace(XMax=20,BinWidth=0.2,BankPixelWidth=1,NumBanks=1)
wsOrder1 = FFTDerivative(wsOriginal,Order=1)
wsOrder2 = FFTDerivative(wsOriginal,Order=2)
wsOrder3 = FFTDerivative(wsOriginal,Order=3)

print("bin Orig  1st    2nd   3rd")
for i in range (41,67,5):
    print("{}  {:.2f}  {:.2f}  {:.2f}  {:.2f}".format(i, wsOriginal.readY(0)[i], wsOrder1.readY(0)[i], wsOrder2.readY(0)[i], wsOrder3.readY(0)[i]))
../_images/FFTDerivativeExample.png

Output:

bin Orig  1st    2nd   3rd
41  0.67  1.35  4.20  9.93
46  5.50  8.50  3.25  -29.37
51  9.90  -3.92  -17.99  23.34
56  2.60  -5.63  9.10  0.70
61  0.37  -0.32  1.30  -4.51
66  0.30  -0.00  0.01  -0.07

Example: Different Orders of Derivative

wsOriginal = CreateSampleWorkspace(XMax=20,BinWidth=0.2,BankPixelWidth=1,NumBanks=1)
wsOrder1 = FFTDerivative(wsOriginal,Order=1)
wsOrder2 = FFTDerivative(wsOriginal,Order=2)

wsOrder2Test = FFTDerivative(wsOrder1,Order=1)

print("The direct 2nd order derivative and the derivative of a derivative should match")
print(CompareWorkspaces(wsOrder2,wsOrder2Test,CheckAllData=True,Tolerance=1e10)[0])

Output:

The direct 2nd order derivative and the derivative of a derivative should match
True

Categories: AlgorithmIndex | Arithmetic\FFT

Source

C++ header: FFTDerivative.h

C++ source: FFTDerivative.cpp