You are here: Start » AVL.NET » AVL.ProfileAutocorrelation

Computes the correlation between neighboring sub-profiles of different sizes and infers the most probable period length.

Namespace: | AvlNet |
---|---|

Assembly: | AVL.NET.dll |

### Syntax

public static void ProfileAutocorrelation ( AvlNet.Profile inProfile, int inStart, int inMinPeriod, int inMaxPeriod, int inMinVerifiedLength, bool inFlexibleVerification, int inMinRepeatCount, float inHarmonicHysteresis, AvlNet.PeriodPrecisionMethod inPrecisionMethod, IList<float> outAutocorrelationValues, out float outPeriod, out float outPeriodScore )

### Parameters

Name | Type | Range | Default | Description | |
---|---|---|---|---|---|

inProfile | AvlNet.Profile | Input profile. | |||

inStart | int | <0, INF> | Beginning index of the sub-profile of interest. | ||

inMinPeriod | int | <2, INF> | 2 | Minimum period length. Default value: 2. | |

inMaxPeriod | int | <2, INF> | 2 | Maximum period length. Default value: 2. | |

inMinVerifiedLength | int | <1, INF> | 1 | Minimum number of profile points that verify single period (increases the actual RepeatCount for small periods). Default value: 1. | |

inFlexibleVerification | bool | Compensates errors resulting from whole-pixel precision. | |||

inMinRepeatCount | int | <1, INF> | 1 | The number of repeats for sufficiently big periods. Default value: 1. | |

inHarmonicHysteresis | float | <0.0f, 1.0f> | 0.05f | Defines how much better must be the period T than T/2, T/3 etc. to be accepted. Default value: 0.05f. | |

inPrecisionMethod | AvlNet.PeriodPrecisionMethod | Defines if and how sub-point precision is achieved. | |||

outAutocorrelationValues | System.Collections.Generic.IList<float> | Autocorrelation values for consecutive period values. | |||

outPeriod | float | Estimated period length. | |||

outPeriodScore | float | Correlation value for the estimated period length. |

### Description

This filter is usually used to find a period within a profile. It tests all possible periods from the range **inMinPeriod** and **inMaxPeriod**. For each candidate period it creates several sub-profiles of that size and computes the normalized correlation between the first one and the others. As the final score, the minimum of the correlations is taken. The number of sub-profiles that is used is determined with the **inMinRepeatCount** and **inMinVerifiedLength** inputs. The latter is used to increase the number of sub-profiles that are used for small period candidates, which often cause false high-scoring periods when used without this parameter. Furthermore, as for any good period of the length T, the periods of the length T * 2, T * 3 etc. also score high, the **inHarmonicHysteresis** input can be used to define the minimum difference between the score of the tested period (T) and its integer partitions (T/2, T/3, ...).

### Examples

### Hardware Acceleration

This operation supports automatic parallelization for multicore and multiprocessor systems.

Hardware acceleration settings may be manipulated with Settings class.

### Errors

List of possible exceptions:

Error type | Description |
---|---|

DomainError |
inMinPeriod is larger than inMaxPeriod in ProfileAutocorrelation. |

DomainError |
inStart + inMinVerifiedLength is larger than the profile size in ProfileAutocorrelation. |

DomainError |
The range of applicable profile periods is empty in ProfileAutocorrelation. |