Note
Function that returns ellipse_acf parameters calculated on the autocorrelation function. But prior to the acf calculation, the mean plane is subtracted.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=R8), | intent(in), | dimension(1:long, 1:larg) | :: | tab |
2D array in |
|
integer(kind=I4), | intent(in) | :: | long |
2D array length |
||
integer(kind=I4), | intent(in) | :: | larg |
2D array height |
||
real(kind=R8), | intent(out), | dimension(1:8) | :: | res |
correlation parameters |
|
real(kind=R8), | intent(in), | optional | :: | cut |
cut height |
|
logical(kind=I4), | intent(in) | :: | sub_plane |
subtract least square plane (sampling)? |
||
real(kind=R8), | intent(in), | dimension(1:2) | :: | scale_xy |
lag along x and y in micrometers |
|
logical(kind=I4), | intent(in) | :: | omp |
multithreaded ? |
subroutine correlation_parameters(tab, long, larg, res, cut, sub_plane, scale_xy, omp) !================================================================================================ !< @note Function that returns [[ellipse_acf]] parameters calculated on the autocorrelation !< function. But prior to the acf calculation, the mean plane is subtracted. !< @endnote !------------------------------------------------------------------------------------------------ implicit none integer(kind=I4), intent(in ) :: long !! *2D array length* integer(kind=I4), intent(in ) :: larg !! *2D array height* logical(kind=I4), intent(in ) :: sub_plane !! *subtract least square plane (sampling)?* logical(kind=I4), intent(in ) :: omp !! *multithreaded ?* real (kind=R8), intent(in ), optional :: cut !! *cut height* real (kind=R8), intent(in ), dimension(1:2) :: scale_xy !! *lag along x and y in micrometers* real (kind=R8), intent(in ), dimension(1:long, 1:larg) :: tab !! *2D array in* real (kind=R8), intent(out), dimension(1:8) :: res !! *correlation parameters* real(kind=R8), dimension(1:long, 1:larg) :: tab_tmp1, tab_tmp2 if ( sub_plane ) then ! mean plane subtracted call least_squares_tcheby(tab_in = tab(1:long, 1:larg), & ! IN tab_out = tab_tmp1(1:long, 1:larg), & ! OUT long1 = long, & ! IN long2 = larg, & ! IN nvarx = 1, & ! IN nvary = 1) ! IN tab_tmp1(1:long, 1:larg) = tab(1:long, 1:larg) -tab_tmp1(1:long, 1:larg) else tab_tmp1(1:long, 1:larg) = tab(1:long, 1:larg) endif call acv( tab_in = tab_tmp1(1:long, 1:larg), & ! IN tab_out = tab_tmp2(1:long, 1:larg), & ! OUT long = long, & ! IN larg = larg, & ! IN sub_samp = sub_plane ) ! IN call ellipse_acf( tabin = tab_tmp2(1:long, 1:larg), & ! IN long = long, & ! IN larg = larg, & ! IN p_acv = res(1:8), & ! OUT cut = cut, & ! IN scale_xy = scale_xy, & ! IN omp = omp ) ! IN return endsubroutine correlation_parameters