The automated Frequency Domain Decomposition presented here is inspired by the Frequency Domain Decomposition (FDD) introduced by [1, 2]. The goal is to identify the mode shapes, eigenfrequencies and modal damping ratios from acceleration records obtained during structural health monitoring of civil engineering structures subjected to ambient noise.
In this submission, an automated procedure is implemented in addition to the manual one proposed by . For the automated procedure, I am using the peak picking function “pickpeaks” developed by  and available in , which was much more efficient than the Matlab function "findpeaks" for this purpose. I am, therefore, indebted to [3-5] for their previous works. The modal damping ratios are determined for each mode by using . The acceleration data comes from a time domain simulation of a clamped-free beam response to white noise excitation. The target modal properties from the beam come from .
The submission contains:
- The function AFDD
- an Example file Example2.m
- acceleration data beamData.m (4 Mb)
- The function pickpeaks.m 
Any comment, suggestion and question is welcome.
 Brincker, R.; Zhang, L.; Andersen, P. (2001). "Modal identification of output-only systems using frequency domain decomposition". Smart Materials and Structures 10 (3): 441. doi:10.1088/0964-1726/10/3/303.
 Brincker, R., Zhang, L., & Andersen, P. (2000, February). Modal identification from ambient responses using frequency domain decomposition. In Proc. of the 18*‘International Modal Analysis Conference(IMAC), San Antonio, Texas.
 Antoine Liutkus. Scale-Space Peak Picking. [Research Report] Inria Nancy - Grand Est (Villers-lès-Nancy, France). 2015. <hal-01103123v2>.
E. Cheynet (2019). Automated Frequency Domain Decomposition (AFDD) (https://www.mathworks.com/matlabcentral/fileexchange/57153-automated-frequency-domain-decomposition-afdd), MATLAB Central File Exchange. Retrieved .
we have a triaxial accelerometer having data in all 3 axis. i wanted to use FDD method to extract modal parameters but confused regarding how to use all the 3 axis data. can you put more light on how to use multiple axis data for extraction of torsional modes.
Is the approach like taking FFT & PSD for all axes separately and then going forward with CPSD or
We need to merge the data of all the three axes X.YZ first
Thank for your feedback!
If you can isolate first the motion of your structure in a particular direction, it is easier to extract its modal parameters associated with that particular direction. In the example I used, I focused on the vertical motion (Z axis), but you can use also the torsional motion, the axial one or the transversal one (if you have access to them)
Hi,i have used this AFDD function,i am impressed with your work.my doubt is, you have taken acceleration in Z direction,is it like always we should consider this axis? or how to choose which axis data we need to take?is to possible to choose all axis data and perform modal parameter extraction?
I think you have two very good comments here.
I have updated the function AFDD.m and the example file to allow the possibility to manually enter the lower and upper boundaries of the selected peaks. The use of the MAC with the FDD algorithm is a good thing. Although, the use of the MAC cannot replace the selection of the boundaries, it can be used to ensure that the boundaries are good enough (I should implement the MAC in the future).
The use of the IRF is a personal choice here. The "smoothness" of the IRF will depend on the parameters entered by the user to compute the PSD of the acceleration or displacement response (here the number of data points M for example). It is probably a case-by-case approach when it comes to decide how many points should be used. That means also that acceleration records with a sufficient duration are required. Anyway, this underlines that modal parameter identifications is not necessarily straightforward.
N.B.: The FDD algorithm and other identification techniques using a frequency domain approach are known to have a limited applicability when it comes to identify closely spaced modes.
Thank you very much for the nice work and especially for sharing it.
I have a few comments (not criticism) in case you would like to consider:
- The left and right boundaries for the selected peak seem too much, especially for complex structures with close modes.
You might find using MAC to determine the boundaries more useful (see, Brincker et al.- Damping Estimation by FDD).
- Damping estimation from the exponential fit to the autocorrelation decay seems to differ significantly from the damping found via logaritmic decrement when the IRF is not very smooth and nice.
All the best.
Nmodes is the parameter that gives the number of peaks. So If you write Nmodes = 4, then you will select 4 peaks
thank you very much, but how can we decide the number of peaks?
Thanks for sharing and you have done a great job....
thanks very much
Awesome, congrats for this great contribution!
Added project website
Picture and some typo in the example file
The user can now specify the lower and upper boundaries for the spectral peaks associated with the identified eigen frequencies. An additional example is given in Example2.m to illustrate the use of this new option.
- Some useless elements have been removed, in particular one calling for the mapping toolbox.
The modal damping ratio is now correctly displayed in Example2.m
Reference list updated
Description + picture