|
Документ взят из кэша поисковой машины. Адрес
оригинального документа
: http://num-anal.srcc.msu.ru/lib_na/cat/r_htm_c/rss3r_c.htm
Дата изменения: Mon Mar 2 17:31:22 2015 Дата индексирования: Sun Apr 10 01:46:24 2016 Кодировка: Windows-1251 |
|
Текст подпрограммы и версий rss3r_c.zip |
Тексты тестовых примеров trss3r_c.zip |
Построение сглаженных оценок спектров случайных процессов путем усреднения по частотам.
Подпрограмма rss3r_c реализует один из способов уменьшения
дисперсии спектральных оценок и, тем самым, повышения их
точности, который состоит в усреднении значений
спектрального ряда 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. |
int rss3r_c (real *s, integer *nc, integer *p, real *q,
real *w)
Параметры
| 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. . |
int main(void)
{
/* Initialized data */
static float s[9] = { 9.f,8.f,7.f,6.f,5.f,4.f,3.f,2.f,1.f };
/* Local variables */
extern int rss3r_c(float *, int *, int *, float *, float *);
static int p, i;
static float q, w1[9], w2[9];
static int nc;
nc = 9;
p = 3;
q = 1.f;
rss3r_c(s, &nc, &p, &q, w1);
for (i = 0; i <= 6; i += 3) {
printf("\n %16.7e %16.7e %16.7e \n", w1[i], w1[i + 1], w1[i + 2]);
}
s[0] = 0.f;
s[8] = 0.f;
q = -1.f;
rss3r_c(s, &nc, &p, &q, w2);
for (i = 0; i <= 6; i += 3) {
printf("\n %16.7e %16.7e %16.7e \n", w2[i], w2[i + 1], w2[i + 2]);
}
return 0;
} /* main */
Результаты:
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. )