Текст подпрограммы и версий ( Фортран )
rsc1r.zip
Тексты тестовых примеров ( Фортран )
trsc1r.zip
Текст подпрограммы и версий ( Си )
rsc1r_c.zip
Тексты тестовых примеров ( Си )
trsc1r_c.zip
Текст подпрограммы и версий ( Паскаль )
rsc1r_p.zip
Тексты тестовых примеров ( Паскаль )
trsc1r_p.zip

Подпрограмма:  RSC1R

Назначение

Построение автокорреляционных и взаимных корреляционных функций двух случайных процессов по оценкам их спектров.

Математическое описание

Пусть SXm, SYm, SXYm - заданные значения автоспектров и взаимного спектра двух случайных процессов  X, Y на частотах  λm = m * Δλ, где  m = 0, 1, ..., NC - 1,  Δλ = 2π/(N * DT) - шаг сетки по частотной оси, N = 2 (NC - 1), DT - шаг сетки по оси времени. Доопределим (внутри подпрограммы) функции SXm, SYm, SXY1m = Re SXYm симметрично относительно точки  m = NC - 1, а функцию SXY2m = Im SXYm антисимметрично относительно  m = NC - 1. Применяя обратное дискретное преобразование Фурье к  N значениям спектров, получаем соответствующие оценки для автокорреляционных и взаимной корреляционной функций [1]:

                                   N-1
   CXs  =  1/(N*DT)    ∑    SXm exp( i λm ts)  =
                                  m=0
                                                                         N-1   
                                                   =  1/(N*DT)    ∑   SXm exp(2π i m s / N) ,
                                                                         m=0
                                   N-1
   CYs  =  1/(N*DT)    ∑    SYm exp( i λm ts)  =
                                  m=0
                                                                         N-1   
                                                   =  1/(N*DT)    ∑   SYm exp(2π i m s / N) ,
                                                                         m=0 
                                      N-1
   CXYs  =  1/(N*DT)    ∑    SXYm exp( i λm ts)  =
                                     m=0
                                                                         N-1   
                                                   =  1/(N*DT)    ∑   SXYm exp(2π i m s / N) ,
                                                                         m=0 

где   ts = S * DT,   s = 0, 1, ..., N - 1,   i = √ -1.

Построенные оценки CXs, CYs, являются вещественными функциями симметричными относительно центра S = N/2 = NC - 1. Эти оценки "циклические" [1, стp.357], поэтому рекомендуется применять данный метод для быстро затухающих корреляций.

Полное описание реализованного алгоритма содержится в статье [2] (подпрограмма CORREL).

1.  Дж.Бендат, А.Пирсол, Измерение и анализ случайных процессов, Изд - во "Мир", M., 1974.
2.  М.В.Арефьева, Корреляционный и спектральный анализ стационарных случайных процессов (часть 1), сб. "Численный анализ на ФОРТРАНе", вып.15, Изд - во МГУ, M., 1976.

Использование

    SUBROUTINE  RSC1R (SX, SY, SXY1, SXY2, NC, DT, CX, CY,
                                             CXY, R) 

Параметры

SX - одномерный массив длины NC, содержащий заданные значения автоспектра процесса  X (тип: вещественный);
SY - одномерный массив длины NC, содержащий заданные значения автоспектра процесса  Y (тип: вещественный);
SXY1 - одномерный массив длины NC, содержащий заданные значения вещественной части взаимного спектра процессов  X, Y (тип: вещественный);
SXY2 - одномерный массив длины NC, содержащий заданные значения мнимой части взаимного спектра процессов  X, Y (тип: вещественный);
NC - количество заданных значений автоспектров и взаимного спектра процессов  X, Y,  NC = 2n + 1, где n ≥ 1 - целое число (тип: целый);
DT - заданный шаг сетки по оси времени, DT > 0 (тип: вещественный);
CX - одномерный массив длины NC, содержащий вычисленные значения автокорреляционной функции процесса  X (тип: вещественный);
CY - одномерный массив длины NC, содержащий вычисленные значения автокорреляционной функции процесса  Y (тип: вещественный);
CXY - одномерный массив длины 2 NC - 1, содержащий в первых (2 NC - 2) элементах вычисленные значения взаимной корреляционной функции процессов  X, Y (тип: вещественный);
R - одномерный массив длины 2 NC - 1, используемый в подпрограмме как рабочий (тип: вещественный).

Версии: нет

Вызываемые подпрограммы

FTF1C - подпрограмма вычисления дискретного или обратного дискретного преобразования Фурье комлексного ряда длины, равной степени двух, методом быстрого преобразования Фурье.

Замечания по использованию

  1. 

C целью экономии числа используемых массивов результаты можно получать на месте исходной информации, а именно, допустимы совпадения параметров: CX = SX,  CY = SY.

  2.  B частных случаях применения подпрограммы возможны совмещения массивов: SX = SY = SXY1 = SXY2,  CX = CY - при построении автокорреляционной функции одного случайного процесса  X и SY = SXY1 = SXY2 - при построении только автокорреляцонных функций двух случайных процессов  X, Y без вычисления их взаимной корреляции; в этих случаях массив CXY используется в подпрограмме как рабочий.

Пример использования

       DIMENSION  SX(3), SY(3), SXY1(3), SXY2(3), CX(3), CY(3), CXY(5), 
      *                       R(5)
       DATA  SX(1), SX(2), SX(3) /25., 2., 1./
       DATA  SY(1), SY(2), SY(3) /25., 2., 1./
       DATA  SXY1(1), SXY1(2), SXY1(3) /25., - 2., - 1./
       DATA  SXY2(1), SXY2(2), SXY2(3) /0., 0., 0./  
       NC = 3
       DT = 1.
       CALL  RSC1R (SX, SY, SXY1, SXY2, NC, DT, CX, CY, CXY, R)

Результаты:

      CX    =  (7.5,  6.,  5.5)
      CY    =  (7.5,  6.,  5.5)
      CXY  =  (5.,  6.5,  7.,  6.5)