Выбрать главу

Рис. 25.11

Следующая команда Save Settings контекстного меню (см. рис. 25.6) позволяет сохранить заданные выше настройки Plot Setting.

Очередная команда Export контекстного меню вызывает окно Export Plot (рис. 25.12), которое позволяет задать приемник для экспорта данных графопостроителя. В качестве такого приемника может быть буфер обмена (Clip Board), файл (File), принтер (Printer) или звуковая карта (Sound Card). При экспорте данных в файл пользователю предоставляется возможность выбрать любой из следующих форматов файла: jpg, bmp, gif, tif, eps, txt или dat.

Рис. 25.12

Снятие флажка перед командой Allow Docking приводит к преобразованию окна графика в перемещаемое окно.

Щелчок левой кнопкой мыши по графику вызывает цветную рамку, задающую область графика для увеличения.

Команда Close контекстного меню закрывает график.

Наконец, команда Float In Main Window вызывает перемещение графика в главное окно среды Visual DSP++.

Время вычисления спектра сигнала является основной характеристикой спектрального анализатора. Чем оно меньше, тем производительнее анализатор. Поэтому для ускорения вычисления спектра используют метод быстрого преобразования Фурье (БПФ).

Фактически БПФ является модернизацией ДПФ за счет сокращения количества операций умножения и сложения. Это стало возможным благодаря использованию свойств симметрии и периодичности коэффициентов уравнения преобразования, представляющих собой базовые гармонические функции. Если для вычисления N отсчетов спектра сигнала при использовании ДПФ требуется N*N операций умножения комплексных чисел, то при использовании БПФ количество операций сокращается до (N/2)log2(N). Эффективность БПФ по сравнению с ДПФ становится существенной, когда количество точек увеличивается до нескольких тысяч.

В табл. 25.1 приведено соотношение объема вычислительных затрат при различном объеме входных данных.

Таблица 25.1 Соотношение объема вычислительных затрат при различном объеме входных данных

Количество отсчетов N Количество умножений Коэффициент эффективности ДПФ БПФ 2 4 1 4 4 16 4 4 8 64 12 5 16 256 32 8 32 1024 80 13 64 4096 192 21 128 16384 448 37 256 65536 1024 64 1024 1048576 5120 205 2048 4194304 11264 372 4096 16777216 24576 683

При вычислении спектра сигнала методом БПФ используют различные алгоритмы. Алгоритм по основанию два (Radix2) разделяет полное вычисление ДПФ на комбинацию двухточечных ДПФ. Каждое двухточечное ДПФ использует базовую операцию умножения с накоплением (так называемую «бабочку»). При этом число точек в БПФ должно быть степенью двойки. Если количество точек является степенью числа четыре, то можно использовать алгоритм по основанию четыре (Radix4). Эти алгоритмы хорошо реализуются в программах для сигнальных процессоров, поскольку в них имеются генераторы адреса с битреверсивной адресацией, предназначенной как раз для реализации подобных алгоритмов.

Глава 26. Программирование на языке СИ

Это заключительная глава книги, в которой рассматриваются примеры программ на языке программирования Си и их выполнение в среде разработки Visual DSP++.

Кроме ассемблерных программ, среда разработки Visual DSP++ позволяет транслировать программы, написанные на языке программирования «Си». Рассмотрим пример простой программы, написанной на языке «Си», которая вычисляет значения тригонометрической функции синуса для четырех заданных значений аргумента.

Создайте новый проект с именем «С» и подключите к проекту новый файл с именем «c1.c», набрав в нем текст программы, приведенный ниже:

#include <math.h>

#define PI 3.14159 /* Число Пи */

int y1, y2, y3, y4;

main() {

 y1 = sin(0);

 y2 = sin(PI/2.0);

 y3 = sin(PI);

 y4 = sin(PI+PI/2.0);

}

Здесь используются стандартные директивы и операторы языка «Си». В начале программы оператор включения подключает библиотеку математических функций math.h. Далее производится определение символьного имени PI. Ниже объявляются целочисленные переменные y1–y4. В данном примере переменные объявлены целочисленными для наглядности представления результата работы программы. Главный цикл программы main состоит из четырех однотипных операций вычисления значений функции синуса для различных значений аргумента. В данном случае аргумент принимает значения, кратные PI/2. Результатом данной программы будут значения функции синус, которые очевидно должны принимать значения 0, 1, 0 и -1.