File Exchange

image thumbnail

Automated Frequency Domain Decomposition (AFDD)

version 1.6 (4.02 MB) by E. Cheynet
Modal parameters identification from ambient vibrations measurement using the FDD


Updated 17 Nov 2020

From GitHub

View Version History

View license on GitHub

The automated Frequency Domain Decomposition presented was applied in [1]. It inspired by the Frequency Domain Decomposition (FDD) introduced by [2, 3]. 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 [4]. For the automated procedure, I am using the peak picking function “pickpeaks” developed by [5] and available in [6], which was much more efficient than the Matlab function "findpeaks" for this purpose. I am, therefore, indebted to [4-6] for their previous works. The modal damping ratios are determined for each mode by using [7]. 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 [8].

The submission contains:
- The function AFDD
- A Matlab livescript file Documentation.mlx
- acceleration data beamData.m (4 Mb)
- The function pickpeaks.m [6]

Any comment, suggestion and question are welcome.

[1] Cheynet, E., Jakobsen, J. B., & Snæbjörnsson, J. (2017). Damping estimation of large wind-sensitive structures. Procedia engineering, 199, 2047-2053.
[2] 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.
[3] 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.
[5] Antoine Liutkus. Scale-Space Peak Picking. [Research Report] Inria Nancy - Grand Est (Villers-lès-Nancy, France). 2015. .

Cite As

Cheynet, Etienne, et al. “Damping Estimation of Large Wind-Sensitive Structures.” Procedia Engineering, vol. 199, Elsevier BV, 2017, pp. 2047–53, doi:10.1016/j.proeng.2017.09.471.

View more styles

Comments and Ratings (31)

E. Cheynet

Hi Tran,
I have just downloaded the file to check and I confirm that the file beamData.mat is not missing. Maybe you can try downloading the file again? The file is also available on Github (

Tran Hoa

Dear, I loaded the file but it lacks of acceleration data beamData.m (4 Mb). Please upload again. Thank a lot.

E. Cheynet

Hi 健 周,

Ts is related to the "lag" for the auto and cross-correlation function ( If your time lag is larger than the duration of your record then you will trigger an error. In general, Ts should be much shorter than the duration of your record. If you study a structure with the lowest frequency of n seconds, you can get a first guess for Ts as Ts ranging from 2 x n to 6 x n (rule of thumb, there might be some cases where you need shorter or longer Ts values). For example, if n = 10 seconds, you can try Ts ranging from 20 seconds to 60 seconds. if n = 0.2 seconds, you can try Ts values between 0.4 seconds and 1.2 seconds. Taking too large value of Ts is not recommended as you will have some "beating" phenomenon which can perturbate the evaluation of the damping ratios.

健 周

what is Ts(option for duration of autocorrelation function )?why i must set it smaller so i can calculate,error:Index exceeds the number of array elements.and how can i set a reasonable Ts can calculate precisely?

This is awesome! Thank you for sharing.

E. Cheynet

Hi Joshua,

These are simulated data. To get "t" with real data you need to know the duration of your record and the sampling frequency at which your data were recorded

Joshua Liau

Hi Sir, just wanted to check, my accelerometer data does not have the value of t, may i confirm how you obtained the value of t in the Beamdata.m?


LIU Likun

ba chen

E. Cheynet

Hi LIU Likun,
It depends on several parameters, such as the range of frequencies you investigate, the duration of the records or how close are the modes of vibrations. The idea with the range [0.9 1.1] is to select a range of frequencies around the resonant peak that is narrow enough to include only this peak and large enough to capture the entire peak. However, the range [0.9 1.1] is not "universal". Therefore, in some cases, it may not be appropriate.

LIU Likun

Is the theoretical damping value and identification damping value correct? I found that the identified damping value is ten times smaller than the real value. Is it suitable to determine the left and right boundary of the singular value spectrum according to 0.9 and 1.1 times of the frequency?

E. Cheynet

Hi Saqib,
The results of the identification will depend on the location of the accelerometers. First, you should try to isolate the "lateral" and "transverse" vibrations, if possible. Then, you just need to apply the AFDD. Depending on your instrumentation setup, you may also record the torsional motion. And finally, depending on the dimensions of your building, the AFDD may not be easily applicable due to the fact that the mode shapes may be more complicated than for a line-like structure.

E. Cheynet

Hi Saqib,
My previous comment was taking the case of wind-induced vibrations of your building. A better wording would be "lateral" and "transverse" vibrations. Depending on your instrumentation setup, you may also record the torsional motion. And finally, depending on the dimensions of your building, the AFDD may not be easily applicable.

Saqib Mehboob

Hi Cheynet
I have acceleration data of four story building. There is one accelerometer at each story level. All acceleration data is recorded for only one direction i.e., x-axis.
Can you please explain how to use this AFDD code to analyses my data and extract modal parameters?
Thanks in anticipation

Mohammad Farshchin

shalini narayanappa

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

E. Cheynet

Hi shalini,
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)

shalini narayanappa

Hi,i have used this AFDD function,i am impressed with your 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?

shalini narayanappa

Maede Zolanvari

Semih Gonen

E. Cheynet

Hi Semih,

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.

E. Cheynet

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.

Semih Gonen

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.

E. Cheynet

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....

chenglong wei

thanks very much



Antoine Liutkus

Awesome, congrats for this great contribution!

MATLAB Release Compatibility
Created with R2020b
Compatible with R2014b and later releases
Platform Compatibility
Windows macOS Linux

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!