Макеты страниц
Распознанный текст, спецсимволы и формулы могут содержать ошибки, поэтому с корректным вариантом рекомендуем ознакомиться на отсканированных изображениях учебника выше
Также, советуем воспользоваться поиском по сайту, мы уверены, что вы сможете найти больше информации по нужной Вам тематике
11.4. Программа вычисления скользящей суммы
Скользящей
суммой называют величину
. (11.1)
Для
увеличения скорости вычисления скользящей суммы (при
) целесообразно
представить ее рекурсивной формулой
(11.2)
На
фиг. 11.2 представлена схема вычисления
путем простого суммирования чисел на
выходах цепочки цифровых элементов задержки. На фиг. 11.3 показана другая схема
реализации того же алгоритма, составленная из последовательно соединенных
трансверсального фильтра и однополюсного рекурсивного фильтра. В табл. 11.1
приведен формат данных, удобный для реализации алгоритма (11.2) с помощью
упрощенной универсальной вычислительной машины.
Чтобы
не усложнять программу дополнительными операциями, учитывающими краевые
эффекты, массив данных
дополняется с обеих сторон нулевыми
отсчетами, число которых на единицу меньше количества слагаемых в сумме.
Таблица 11.1. Формат
входных данных для программы вычисления скользящей суммы
DATA
|
→
|
0
0
...
0
|
DATA+ 26
|
→
|
...
|
DATA+1025
|
→
|
0
0
0
...
|
DATA+ 1051
|
→
|
0
...
|
YN
|
→
|
0
...
|
Здесь
для определенности взято
. Метки, расположенные слева от
стрелок в табл. 11.1, обозначают адреса, используемые в приводимой ниже
программе вычисления скользящей суммы:
|
|
Пояснения
|
|
-1025
|
Занести число -1025 в
регистр
|
|
|
Занести нуль в регистр
|
|
+1051
|
Прибавить к
|
|
+1025
|
Сформировать в накопителе
|
|
+1025
|
Запомнить
|
|
|
Повторить в цикле 1024
раза
|
|
|
Стоп
|
Из
приведенной программы видно, что для обработки каждого входного отсчета
приходится выполнять четыре команды. Естественно, что время обработки зависит
от быстродействия узлов ЦВМ. Для удобства предположим, что цикл обращения к
памяти равен 100 нс. Каждая из первых трех команд программного цикла требует
не менее двух циклов обращения к памяти: одного при вызове команды,
другого при ее исполнении. Таким образом, полное время, необходимое для
обработки одного отсчета, равно 600 нс плюс время выполнения условного перехода
(JNX) и время выполнения арифметических операций, включить которое в
цикл обращения к памяти затруднительно. В итоге получается около 1 мкс на
каждый входной отсчет.