Документ взят из кэша поисковой машины. Адрес
оригинального документа
: http://num-anal.srcc.msu.su/lib_na/cat/r_htm_p/rsf1r_p.htm
Дата изменения: Fri Nov 6 13:31:48 2015 Дата индексирования: Sun Apr 10 01:13:40 2016 Кодировка: Windows-1251 |
Текст подпрограммы и версий rsf1r_p.zip |
Тексты тестовых примеров trsf1r_p.zip |
Построение взаимного амплитудного спектра, функций разности фаз и взаимной когерентности двух случайных процессов по оценкам их автоспектров и взаимных спектров.
Пусть SXm, SYm, SXYm - оценки автоспектров и взаимного спектра двух случайных процессов X, Y на некоторых частотах λm, m = 1, 2, ..., NC. Тогда справедливы следующие оценки функций спектров [1]:
AVm = | SXYm| = (SXY12m + SXY22m) 1/2 - оценка взаимного амплитудного спектра, где SXY1m = Re SXYm - синфазная составляющая (коспектр), SXY2m = Im SXYm - квадратурная составляющая (квадратурный спектр), DPHm = arctg (SXY2m/SXY1m) - оценка функции разности фаз (фазового спектра), COHm = AV2m/(SXm * SYm) - оценка функции взаимной когерентности.
Полное описание реализованного алгоритма содержится в статье [2] (подпрограмма FUNSPE).
1. | Дж.Бендат, А.Пирсол, Измерение и анализ случайных процессов, Изд - во "Мир", M., 1974. |
2. | М.В.Арефьева, Корреляционный и спектральный анализ стационарных случайных процессов (часть 1), сб. "Численный анализ на ФОРТРАНе", вып.15. Изд - во МГУ, M., 1976. |
procedure RSF1R(var SX :Array of Real; var SY :Array of Real; var SXY1 :Array of Real; var SXY2 :Array of Real; NC :Integer; var DPH :Array of Real; var AV :Array of Real; var COH :Array of Real);
Параметры
SX - | одномерный массив длины NC, содержащий заданные значения автоспектра процесса X (тип: вещественный); |
SY - | одномерный массив длины NC, содержащий заданные значения автоспектра процесса Y (тип: вещественный); |
SXY1 - | одномерный массив длины NC, содержащий заданные значения вещественной части взаимного спектра процессов X, Y (тип: вещественный); |
SXY2 - | одномерный массив длины NC, содержащий заданные значения мнимой части взаимного спектра процессов X, Y (тип: вещественный); |
NC - | число заданных значений автоспектров и взаимного спектра процессов X, Y (тип: целый); |
DPH - | одномерный массив длины NC, содержащий вычисленные значения функции разности фаз процессов X, Y (тип: вещественный); |
AV - | одномерный массив длины NC, содержащий вычисленные значения взаимного амплитудного спектра процессов X, Y (тип: вещественный); |
COH - | одномерный массив длины NC, содержащий вычисленные значения функции взаимной когерентности процессов X, Y (тип: вещественный). |
Версии: нет
Вызываемые подпрограммы: нет
Замечания по использованию
C целью экономии числа используемых массивов результаты можно получать на месте исходной информации, а именно, допустимы совпадения параметров: DPH = SXY2, AV = SXY1, COH = SY. |
Unit TRSF1R_p; interface uses SysUtils, Math, { Delphi } LStruct, Lfunc, UtRes_p, RSF1R_p; function TRSF1R: String; implementation function TRSF1R: String; var NC,_i :Integer; DРН :Array [0..2] of Real; AV :Array [0..2] of Real; СОН :Array [0..2] of Real; const SX :Array [0..2] of Real = ( 25.0,2.0,1.0 ); SY :Array [0..2] of Real = ( 25.0,2.0,1.0 ); SXY1 :Array [0..2] of Real = ( 25.0,-2.0,-1.0 ); SXY2 :Array [0..2] of Real = ( 0.0,0.0,0.0 ); begin Result := ''; NC := 3; RSF1R(SX,SY,SXY1,SXY2,NC,DPH,AV,COH); Result := Result + #$0D#$0A; for _i:=0 to 2 do begin Result := Result + Format('%20.16f ',[DPH[_i]]); if ( ((_i+1) mod 3)=0 ) then Result := Result + #$0D#$0A; end; Result := Result + #$0D#$0A; Result := Result + #$0D#$0A; for _i:=0 to 2 do begin Result := Result + Format('%20.16f ',[AV[_i]]); if ( ((_i+1) mod 3)=0 ) then Result := Result + #$0D#$0A; end; Result := Result + #$0D#$0A; Result := Result + #$0D#$0A; for _i:=0 to 2 do begin Result := Result + Format('%20.16f ',[COH[_i]]); if ( ((_i+1) mod 3)=0 ) then Result := Result + #$0D#$0A; end; Result := Result + #$0D#$0A; UtRes('TRSF1R',Result); { вывод результатов в файл TRSF1R.res } exit; end; end. Результаты: DPH = (0., 0., 0.) AV = (25., 2., 1.) COH = (1., 1., 1.)