Текст подпрограммы и версий ( Фортран ) rsc1r.zip |
Тексты тестовых примеров ( Фортран ) trsc1r.zip |
Текст подпрограммы и версий ( Си ) rsc1r_c.zip |
Тексты тестовых примеров ( Си ) trsc1r_c.zip |
Текст подпрограммы и версий ( Паскаль ) rsc1r_p.zip |
Тексты тестовых примеров ( Паскаль ) trsc1r_p.zip |
Построение автокорреляционных и взаимных корреляционных функций двух случайных процессов по оценкам их спектров.
Пусть 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)