|
Документ взят из кэша поисковой машины. Адрес
оригинального документа
: 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.)