// мнимой части X(q) (ImB) в вершину стека сопроцессора

asm FST ST(2) // создать копию ImB в регистре ST(2) сопроцессора

asm les bx, dword ptr [bp+6] // загрузить адрес массива действительной

// части исходных данных в регистр bx

asm mov cx, bx

asm add bx, dx //определить адрес элемента массива действительной

// части X(q)

asm FLD dword ptr es:[bx] // загрузить значение элемента массива

// действительной части X(q) (ReB) в вершину стека сопроцессора

asm FST ST(2) // Создать копию ReB в регистре ST(2) сопроцессора

asm FLD dword ptr TSIN // загрузить TSIN в вершину стека сопроцессора

asm FLD dword ptr TCOS // загрузить TCOS в вершину стека сопроцессора

asm FMUL ST(5),ST(0) // ImB*TCOS, результат в ST(5)

asm FMULP ST(4),ST(0) // ReB*TCOS, результат в ST(4)

asm FMUL ST(2),ST(0) // ImB*TSIN

asm FMULP ST(1),ST(0) // ReB*TSIN

asm FADDP ST(3),ST(0) // ImB*TCOS+ReB*TSIN (ii2), результат в ST(3)

asm FSUBP ST(1),ST(0) // ReB*TCOS-ImB*TSIN (ii1) , результат в ST(1)

asm mov bx, cx

asm add bx, ax //определить адрес элемента массива действительной

// части X(p)

asm FLD dword ptr es:[bx] // загрузить значение элемента массива

// действительной части X(p) (ReA) в вершину стека сопроцессора

asm FLD ST(0) // Создать копии ReA в регистрах ST(0) и ST(1)

asm FSUB ST(0),ST(2) // ReA-ii1

asm mov bx, cx

asm add bx, dx //определить адрес элемента массива действительной

// части X(q)

asm FSTP dword ptr es:[bx] // выгрузить из вершины стека сопроцессора

НЕ нашли? Не то? Что вы ищете?

//вычисленное значение в элемент массива действительной части X(q)

asm FADDP ST(1),ST(0) // ReA+ii1

asm mov bx, cx

asm add bx, ax //определить адрес элемента массива действительной

// части X(p)

asm FSTP dword ptr es:[bx] // выгрузить из вершины стека сопроцессора

//вычисленное значение в элемент массива действительной части X(p)

asm mov bx, si

asm add bx, ax //определить адрес элемента массива мнимой

// части X(p)

asm FLD dword ptr es:[bx] // загрузить значение элемента массива

// мнимой части X(p) (ImA) в вершину стека сопроцессора

asm FLD ST(0) // создать копии ImA в регистрах ST(0) и ST(1)

asm FSUB ST(0),ST(2) // ImA-ii2

asm mov bx, si

asm add bx, dx //определить адрес элемента массива мнимой

// части X(q)

asm FSTP dword ptr es:[bx] // выгрузить из вершины стека сопроцессора

//вычисленное значение в элемент массива мнимой части X(q)

asm FADDP ST(1),ST(0) // ImA+ii2

asm mov bx, si

asm add bx, ax //определить адрес элемента массива мнимой

// части X(p)

asm FSTP dword ptr es:[bx] // выгрузить из вершины стека сопроцессора

//вычисленное значение в элемент массива мнимой части X(p)

asm pop si

При таком подходе для вычисления одной операции "бабочка" требуется выполнить 6 пересылок типа П®R, 4 пересылки типа R®П и 2 пересылки типа П®П, для вычисления "бабочек" третьей и четвертой модификаций 5 пересылок типа П®R и 4 пересылки типа R®П, для операции разведения спектров 5 пересылок типа П®R и 4 пересылки R®П.

А в целом при такой организации вычислений для всего обычного алгоритма БПФ требуется выполнить

пересылок типа П®R,

пересылок типа R®П,

пересылок типа П®П,

для реализации модифицированного алгоритма БПФ -

пересылок типа П®R,

пересылок типа R®П,

пересылок типа П®П.

для реализации обычного алгоритма БПФ для действительных последовательностей-

пересылок типа П®R,

пересылок типа R®П,

пересылок типа П®П.

для реализации модифицированного алгоритма БПФ для действительных последовательностей -

пересылок типа П®R,

пересылок типа R®П,

пересылок типа П®П.

Оценка трудоемкости рассмотренных алгоритмов показала, что использование стековых регистров сопроцессора для хранения промежуточных данных позволяет значительно снизить трудоемкость реализации алгоритма БПФ в целом. К примеру, для модифицированного алгоритма БПФ для действительных последовательностей при размере выборки в 1024 отсчета для математического сопроцессора i486 трудоемкость уменьшается примерно в 1.385 раз, а для математического сопроцессора Pentium - в 1.338 раз.

4.6 Преобразование Фурье прямоугольного импульса

Прямоугольный импульс определяется выражением:

(4.51)

Рисунок 4.2 – Форма прямоугольного импульса

Прямое преобразование Фурье позволяет получить спектр прямоугольного импульса:

(4.52)

Рисунок 4.3 – Спектр прямоугольного импульса

Обратное преобразование Фурье приводит к восстановлению прямоугольного импульса:

4.7 Представление периодической последовательности единичных

импульсов в частотной области

Имеется бесконечная периодическая последовательность единичных импульсов с периодом Т.

Рисунок 4.4 – Периодическая последовательность единичных импульсов

Определим её представление в частотной области.

Для этого сначала вычислим спектр ограниченной периодической последовательности единичных импульсов:

(4.53)

(4.54)

Это выражение представляет преобразование Фурье конечной последовательности одиночных импульсов, следующих с периодом T, на интервале от –N до N.

Когда N устремляется к бесконечности, то график стягивается в точки.

Рисунок 4.5 – Спектр ограниченной периодической последовательности

единичных импульсов

Для любого N площадь под каждым лепестком огибающей равна:

.

Рисунок 4.6 – Спектр периодической последовательности

единичных импульсов

Спектр периодической последовательности одиночных импульсов представляет собой дискретную периодическую последовательность импульсов, каждый из которых охватывает площадь, равную 1/T, где T - период следования единичных импульсов.

Таким образом, последовательности импульсов во временной области соответствует последовательность импульсов в частотной области:

. (4.55)

4.8 Вычисление свертки

4.8.1 Круговая свертка

Понятие круговой свертки используется только для периодических последовательностей. Круговой сверткой двух периодических -точечных последовательностей и называется -точечная последовательность

. (4.56)

Найдем -точечное ДПФ круговой свертки

.

Изменив порядок суммирования

и представив , можно записать ДПФ в виде:

. (4.57)

После замены переменных сумма в квадратных скобках, с учетом нулевых начальных условий, будет равна

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37