File Exchange

image thumbnail


version 2.28 (7.98 KB) by M. A. Hopcroft
Calculates standard Allan Deviation (ADEV) of a time domain signal.


Updated 06 Sep 2019

View Version History

View License

allan.m calculates the standard Allan deviation (ADEV) of a time domain signal. It is designed for stability analysis of frequency data, although the analysis can be applied to other types of data. Fractional frequency or phase data sets with sample rate or time stamp information are handled.
Note: for overlapping and modified Allan deviation analysis, please see the files allan_modified.m (ID: #26637) and allan_overlap.m (ID: #26441).

Cite As

M. A. Hopcroft (2021). allan (, MATLAB Central File Exchange. Retrieved .

Comments and Ratings (21)

Mazen Maged

Hi Hopcroft :) my graph sort of stops at the horizontal line in the middle. Meaning that the graph doesn't rise after the horizontal line, any ideas why that might be happening? Thanks

M. A. Hopcroft

Glad this file is helpful and always happy to see comments and ratings. If you have a question, contact me directly by clicking the Contact Author link or finding my email in the m-file.

Rafail Panagi

Apologies if this is a silly question, but, can this code be used for converting from phase noise to allan deviation/variance?

Marcin Konowalczyk

tim .


I encountered an issue while using your very helpful script. I provided a list of TAU-values, that are all divisible by my DATA.rate. However not all of the values were plotted so I investigated and found out that the "m" vector did not look like I expected it to (I had several values that were integer values but looked like this: "6.000" instead of "6", ...). The fix was changing line 300.

m = data.rate.*tau;

m = floor(data.rate.*tau);

I did not notice any side effects.


Wolfgang Wallner

I get the same error as Simon, when I use allan and only provide the fields 'phase' and 'rate' and set 'verbose' to 1.

I think the usage of data.time in line 220 should be guarded with an isfield(data, 'time').

Commenting out line 220 fixes the error for me, but I did not study the script well enough to know if this creates side effects.


Dear Hopcroft, i get an error when using DATA.phase together with DATA.rate (put to 1). Maybe something to do with the latest update (18 Mar 2014 v2.24 fix bug related to phase data and timestamps)? Have no old version to compare with.

Index of element to remove
exceeds matrix dimensions.

Error in ==> allan at 220
data.time(1)=[]; % make time
stamps correspond to freq data


Hi,it is a convenient program to calculate the ADEV. However, the error bars seem incorrect. The error is not simply +/- 1-sigma estimation, as I know. I am not sure. Thank you!

M. A. Hopcroft

@Mauricio: yes, you are correct. The values returned by the function are ADEV values and you can square them to get AVAR values.


using this file produces ADEV plot, now
if I try to find the Angle Random Walk (ARW) which is found from AVAR plot at tau=1, would I just have to square the ADEV value at tau=1, or not?

Joe Wiegand

Joe Wiegand

For some reason I can't seem to determine the value for values of Tau less than 500. Any help would be greatly appreciated.

M. A. Hopcroft

I'll have a look at it if you send me an email with some more details.

Anca Nestor

The latest version available for download fails to plot the Allan Deviation. The error message indicates that the input to the semilogx function (tau or sm) is unknown. How can I correct this?

Brandon Bourn

Excellent program, works wonderfully, very useful!


Very handy tool, easy to use.
Thanks alot for your help!

M. A. Hopcroft

type "help allan" to see the help file. email me directly if you are still having trouble.

bing yi siah

can i ask how to input a series of data (100 samples data) into the code ?.. thx !!!

Bruno Sanguinetti

Very handy tool, easy to use.

MATLAB Release Compatibility
Created with R14SP3
Compatible with any release
Platform Compatibility
Windows macOS Linux

Community Treasure Hunt

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

Start Hunting!