Текст подпрограммы и версий rss3r_p.zip |
Тексты тестовых примеров trss3r_p.zip |
Построение сглаженных оценок спектров случайных процессов путем усреднения по частотам.
Подпрограмма RSS3R реализует один из способов уменьшения
дисперсии спектральных оценок и, тем самым, повышения их
точности, который состоит в усреднении значений
спектрального ряда S ( I ),
I = 1, 2, ..., NC на каждой частоте I
по 2Р + 1 соседним частотам [1].
Величина P имеет смысл полуширины усредняющего фильтра.
Усреднение производится с равными весами и усредненное
значение приписывается центральной частоте.
Процесс усреднения проводится итерационно, а именно: усредненнное значение для I - ой частоты получается из усредненного значения для ( I - 1) - ой частоты путем прибавления и вычитания неусредненных значений для соответствующих крайних частот. При этом спектр S доопределяется (внутри подпрограммы) симметрично или антисимметрично относительно концов 1 и NC - в зависимости от задаваемого значения управляющего параметра Q.
Полное описание реализованного алгоритма содержится в статье [2] (подпрограмма SPEMFR).
1. | Дж.Бендат, А.Пирсол, Измерение и анализ случайных процессов, Изд - во "Мир", M., 1974. |
2. | М.В.Арефьева, Корреляционный и спектральный анализ стационарных случайных процессов (часть 2), сб. "Численный анализ на ФОРТРАНе", вып.20. Изд - во МГУ, M., 1977. |
procedure RSS3R(var S :Array of Real; NC :Integer; P :Integer; Q :Real; var W :Array of Real);
Параметры
S - | одномерный массив длины NC, содержащий заданные чения усредняемого спектрального ряда (тип: вещественный); |
NC - | количество заданных значений исходного ряда (тип: целый); |
P - | заданная величина, определяющая число соседних частот 2P + 1, по которым производится усреднение, 0 < P < NC (тип: целый); |
Q - | заданный управляющий параметр (тип: вещественный): |
при Q = 1. - | усредняется симметричный относительно 1 и NC спектральный ряд, |
при Q = -1. - | усредняется антисимметричный относительно 1 и NC спектральный ряд; |
W - | одномерный массив длины NC, содержащий вычисленные значения усредненного ряда (тип: вещественный). |
Версии: нет
Вызываемые подпрограммы: нет
Замечания по использованию
B случае антисимметричного спектра S (Q = - 1.) должны выполняться условия: S (1) = 0., S (NC) = 0. . |
Unit TRSS3R_p; interface uses SysUtils, Math, { Delphi } LStruct, Lfunc, UtRes_p, RSS3R_p; function TRSS3R: String; implementation function TRSS3R: String; var P,NC,_i :Integer; Q :Real; W1 :Array [0..8] of Real; W2 :Array [0..8] of Real; const S :Array [0..8] of Real = ( 9.0,8.0,7.0,6.0,5.0,4.0,3.0,2.0,1.0 ); begin Result := ''; NC := 9; P := 3; Q := 1.0; RSS3R(S,NC,P,Q,W1); Result := Result + #$0D#$0A; for _i:=0 to 8 do begin Result := Result + Format('%20.16f ',[W1[_i]]); if ( ((_i+1) mod 3)=0 ) then Result := Result + #$0D#$0A; end; Result := Result + #$0D#$0A; S[0] := 0.0; S[8] := 0.0; Q := -1.0; RSS3R(S,NC,P,Q,W2); Result := Result + #$0D#$0A; for _i:=0 to 8 do begin Result := Result + Format('%20.16f ',[W2[_i]]); if ( ((_i+1) mod 3)=0 ) then Result := Result + #$0D#$0A; end; Result := Result + #$0D#$0A; UtRes('TRSS3R',Result); { вывод результатов в файл TRSS3R.res } exit; end; end. Результаты: W1 = ( 7.142857, 7., 6.571429, 5.857143, 5., 4., 3.285714, 2.857143, 2.714286 ) , W2 = ( 0., 1.571429, 3.142857, 4.714286, 5., 3.857143, 2.571429, 1.285714, 0. )