Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Калачиков математические основы mu_dsp_2811

.pdf
Скачиваний:
48
Добавлен:
11.04.2015
Размер:
1.53 Mб
Скачать

Вероятность x

Гистограмма нормального распределения

250

200

150

100

50

0

 

 

 

 

 

 

-3

-2

-1

0

1

2

3

 

 

 

x

 

 

 

Рисунок 1.6 – Гистограмма функции randn

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

x=logspace(d1,d2,n)

формирует вектор-строку х, содержащую n равноотстоящих в логарифмическом масштабе друг от друга значений в диапазоне от d1 до d2.

Функция loglog выводит графики, которые по обеим осям строятся в логарифмическом масштабе. Построение графиков, в которых используется логарифмический масштаб только по одной из координатных осей, осуществляется с помощью процедур semilogx (вертикальная ось) и semilogy (горизонтальная ось). Обращение к этим процедурам аналогично обращению к функции plot.

Для примера построим амплитудно-частотную и фаза-частотную характеристики фильтра нижних частот (рис. 1.7), имеющего коэффициент передачи вида:

K ( j )

1

.

 

1 j RC

Как известно, коэффициент передачи, представляющий из себя комплексное число, равен K()=K(ω)exp(φ(ω)), где K(ω) – амплитудно-частотная характеристика (модуль комплексного числа), φ(ω) – фаза-частотная характеристика (аргумент комплексного числа). Воспользуемся известными нам функциями:

f=1:10^4; w=2*pi*f; R=1000; C=10^-5; K=1./(1+j*w*R*C); ACH=abs(K); FCH=angle(K)*180/pi; Subplot(2,1,1); semilogx(f,ACH); title('Амплитудно-частотная характеристика');

xlabel('Частота (Гц)'); ylabel('Отношение амплитуд'); grid; subplot(2,1,2); semilogx(f,FCH);

title('Фаза-частотная характеристика'); xlabel('Частота (Гц)'); ylabel('Фаза (град)'); grid

21

амплитуд

 

 

 

Амплитудно-частотная характеристика

 

1

 

 

 

 

 

0.8

 

 

 

 

 

 

 

 

 

 

 

Отношение

0.6

 

 

 

 

 

0.4

 

 

 

 

 

0.2

 

 

 

 

 

 

0

0

1

2

3

4

 

10

10

10

10

10

 

 

 

 

Частота (Гц)

 

 

 

 

 

 

Фаза-частотная характеристика

 

 

0

 

 

 

 

 

(град)

-20

 

 

 

 

 

-40

 

 

 

 

 

Фаза

-60

 

 

 

 

 

 

 

 

 

 

 

 

-80

 

 

 

 

 

 

-100

0

1

2

3

4

 

10

10

10

10

10

 

 

 

 

Частота (Гц)

 

 

Рисунок 1.7 – АЧХ и ФЧХ фильтра нижних частот

В этом примере была использована функция subplot. Она необходима, если требуется построить несколько графиков в одном графическом окне, но на разных графических полях. Обращение к ней имеет вид:

subplot(m,n,p).

Здесь m указывает, на сколько частей разделяется графическое окно по вертикали, n, соответственно, – по горизонтали, а p является номером подокна, в котором будет строиться график. При этом подокна нумеруются слева направо построчно сверху вниз.

Если необходимо изменить режим масштабирования, можно воспользоваться функцией axis: axis([xmin xmax ymin ymax]) устанавливает жесткие границы поля графика в единицах величин, которые откладываются по осям, axis('auto') приводит масштабы по осям по умолчанию, axis('ij') перемещает начало отсчета в левый верхний угол (матричная система координат), axis('xy') возвращает декартову систему координат с началом отсчета в левом нижнем углу графика, axis('square') устанавливает одинаковый диапазон изменения переменных по осям графика, axis('equal') обеспечивает одинаковый масштаб по осям графика.

Команда text(x,y,<'текст'>) позволяет расположить указанный текст в поле графика, при этом начало текста помещается в точку с координатами х и у. Но не всегда удается указать «удобные» координаты, поэтому используют команду gtext('текст'), в результате вызова которой в активном графическом окне появляется перекрестие. Перемещение перекрестия с помощью мыши позволяет указать место начала вывода указанного текста.

22

Чтобы создать несколько графических окон, в каждом из которых расположены соответствующие графики, можно воспользоваться командой figure. Эта команда создает новое графическое окно, оставляя предыдущие.

Наконец, для того чтобы несколько последовательно вычисленных графиков были изображены в графическом окне в одном стиле, можно использовать команду hold on. Команда hold off выключает режим сохранения графического окна, установленного предшествующей командой.

Для примера построим в одном графическом поле несколько функций Бесселя первого рода различных порядков (рисунок 1.8):

x=0:0.1:20; y1=besselj(1,x); y2=besselj(2,x); y3=besselj(3,x);

figure; hold on; plot(x,y1,x,y2,x,y3); grid; title('Функции Бесселя первого рода'); xlabel('x'); ylabel('Значение функции');

text(8,0.45,'Син-1-й порядок; Зел-2-й порядок; Красн-3-й порядок')

 

 

 

 

 

Функции Бесселя первого рода

 

 

 

0.6

 

 

 

 

 

 

 

 

 

 

 

0.5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Син-1-й порядок; Зел-2-й порядок; Красн-3-й порядок

 

0.4

 

 

 

 

 

 

 

 

 

 

функции

0.3

 

 

 

 

 

 

 

 

 

 

0.2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Значение

0.1

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

-0.1

 

 

 

 

 

 

 

 

 

 

 

-0.2

 

 

 

 

 

 

 

 

 

 

 

-0.3

 

 

 

 

 

 

 

 

 

 

 

-0.40

2

4

6

8

10

12

14

16

18

20

 

 

 

 

 

 

x

 

 

 

 

 

 

Рисунок 1.8 – Функции Бесселя первого рода

 

Вывод текста в графическое окно.

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

Сделаем следующее: выведем графическое окно, которое будет содержать три графических подокна и одно текстовое подокно. Причем графические подокна будут располагаться друг под другом, а текстовое – справа от них. Для этого с помощью вышеуказанной процедуры разобьём графическое окно на 12 частей.

23

Части объединяются аналогично объединению строк и столбцов матрицы (рисунок 1.9):

subplot(3,4,[1 2 3]); subplot(3,4,[5 6 7]); subplot(3,4,[9 10 11]); subplot(3,4,[4 8 12])

1

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0.9

 

 

 

 

0.5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0.8

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

0.7

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

0.6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0.5

 

 

 

 

 

 

 

 

 

 

 

 

0.5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0.4

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

0.3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0.2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0.5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0.1

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

0

0.5

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рисунок 1.9 – Разбивка графического окна

Для того чтобы вывести текст в одно из подокон, нужно сначала удалить из данного подокна изображение осей координат и надписей на них. Это делается с помощью команды axis('off'). Основной функцией, обеспечивающей вывод текста в графическое окно, является функция text. Обращение к ней имеет вид:

text(x,y,'<текст>','FontName','<название щрифта>','FontSize',<размер шрифта в пикселах>)

Данная функция осуществляет вывод конкретного текста определенным шрифтом указанного размера, начало текста находится в точке подокна с координатами х и у соответствующего поля графика подокна. При этом координаты х и у измеряются в единицах величин, откладываемых вдоль соответствующих осей. Пример приведен на рисунке 1.10:

t=0:0.01:10; y1=sin(t); y2=randn(1,length(t)); y3=2*y1+0.5*y2; subplot(3,4,1:3); plot(t,y1); grid;

subplot(3,4,5:7); plot(t,y2); grid; subplot(3,4,9:11); plot(t,y3); grid; subplot(3,4,[4 8 12]); axis('off'); text(0.1,0.9,'Графики','FontSize',12); text(0.1,0.8,'функций','FontSize',12); text(0.05,0.6,'гармонического','FontSize',10); text(0.35,0.55,'сигнала','FontSize',10);

24

text(0.15,0.5,'и случайного','FontSize',10);

text(0.3,0.45,'процесса','FontSize',10)

 

1

 

 

 

 

 

 

 

 

 

 

0.5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Графики

0

 

 

 

 

 

 

 

 

 

 

-0.5

 

 

 

 

 

 

 

 

 

функций

-10

1

2

3

4

5

6

7

8

9

10

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

гармонического

2

 

 

 

 

 

 

 

 

 

сигнала

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

и случайного

-2

 

 

 

 

 

 

 

 

 

процесса

 

 

 

 

 

 

 

 

 

 

-40

1

2

3

4

5

6

7

8

9

10

4

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

-2

 

 

 

 

 

 

 

 

 

 

-40

1

2

3

4

5

6

7

8

9

10

Рисунок 1.10 – Пример текстового оформления графического окна

В данном примере была использована функция length(t), она определяет длину вектора t.

25

2 Описание интерактивной оболочки SPTool

Интерактивная оболочка пакета Signal Processing включает: o средство поиска и просмотра сигналов (Signal Browser); o проектировщик фильтров (Filter Designer);

o средство просмотра характеристик фильтров (Filter Viewer); o средство просмотра спектра (Spectrum Viewer).

Оболочка активизируется путем ввода в командном окне MATLAB команды sptool. В результате на экране появится окно SPTool (рисунок 2.1).

Как видим, это окно содержит три списка: Signals (Сигналы), Filters (Фильтры) и Spectra (Спектры). Под каждым из них имеются кнопки с названиями команд, которые можно применять к объектам списков.

Рисунок 2.1 – Окно SPTool

Под списком Signals (Сигналы) находится единственная кнопка View (Просмотр), это означает, что объекты (сигналы), имена которых содержатся в данном списке, могут быть только просмотрены. К списку Filter (Фильтры) относятся четыре кнопки: View (Просмотр), New (Создать), Edit (Правка), Apply (Применить). Они позволяют просматривать, создавать и редактировать фильтры, а также применять их к одному или нескольким объектам, выделенным в списке Signals (Сигналы). Под списком Spectra (Спектры) располагаются кнопки View (Просмотр), Create (Создать), Update (Обновить), с помощью которых можно просматривать, создавать и обновлять (создавать заново под тем же именем) спектры сигналов.

В указанных списках размещаются имена (идентификаторы) переменных или процедур, входящих в открытый sptool-файл, имеющий расширение .spt (имя этого файла отображается в заголовке окна).

26

При первом обращении к окну SPTool его заголовок содержит имя файла startup.spt, все три списка окна – пустые; доступной является только кнопка New Design (Создать). Таким образом, после вхождения в оболочку SPTool допустимой является только операция создания нового фильтра. Чтобы сделать доступными остальные кнопки, необходимо откуда-то импортировать данные о каких-то сигналах. Такие данные должны быть сформированы средствами, не относящимися к оболочке SPTool (например, являться результатом выполнения некоторой программы MATLAB или результатом моделирования в среде Simulink), и записаны как некоторые переменные либо в рабочем пространстве (Workspace), либо на диске в файле с расширением .mat.

2.1 Импорт сигналов

Обрабатывать сигналы в SPTool можно лишь после того, как они сформированы с помощью определенной программы MATLAB, а полученные векторы значений данных этих сигналов импортированы в среду SPTool. Для этого в окне SPTool выберите команду File ► Import (Файл ► Импорт), после чего появится диалоговое окно Import to SPTool (Импорт в SPTool), представленное на рисунке 2.2.

Рисунок 2.2 – Окно Import to SPTool

В области Source (Источник) данного окна по умолчанию установлен переключатель From Workspace (Из рабочего пространства). Это означает, что окно настроено на импорт сигналов из рабочего пространства MATLAB. Поэтому все имена переменных рабочего пространства представлены в списке Workspace Contents (Содержимое рабочего пространства). В начале сеанса работы данный список пуст.

Допустим, что мы сгенерировали случайные процессы x(t), y(t) и y1(t) в соответствии с программой, приведенной в разделе «Графические средства». В результате в рабочем пространстве MATLAB появились векторы x, y и y1, каждый

27

из которых содержит по 10000 элементов. Импортируем их в среду SPTool. После этого в списке Workspace Contents (Содержимое рабочего пространства) появятся имена всех переменных рабочего пространства MATLAB (рисунок 2.3).

Выбрав в этом списке необходимую переменную, нужно щелкнуть на кнопке со стрелкой, указывающей на поле Data. В результате в этом поле должно появиться имя выбранной переменной. Затем на поле Sampling Frequency (Частота дискретизации) следует записать желаемое значение частоты дискретизации. Фактически этим параметром задается временной промежуток Ts между отдельными значениями выбранного вектора процесса. В поле Name (Имя) нужно ввести имя, под которым данный вектор будет храниться в среде SPTool. На рисунке 2.3 виден результат выбора переменной y1, которая будет записана в SPTool под тем же именем с частотой дискретизации 100 Гц (то есть с дискретом времени 0.01 с).

Рисунок 2.3 – Импорт в SPTool сигнала y1

Выполнив описанную подготовительную работу, следует щелкнуть на кнопке OK, и импорт сигнала в среду SPTool будет произведен. После этого окно Import to SPTool исчезнет и окно SPTool изменит свой вид: в списке Signals (Сигналы) появится имя вектора сигнала, станут доступными кнопка View (Вид) под этим списком, а также кнопка Create (Создать), относящаяся к списку Spectra (Спектры). Это означает, что появилась возможность находить спектральные характеристики импортированного сигнала.

2.2 Просмотр сигналов

После импорта вектора сигнала можно воспользоваться средствами его просмотра. Для этого достаточно выделить в списке Signals (Сигналы) необходимый сигнал и щелкнуть на кнопке View (Просмотр), расположенной ниже списка. В результате должно появиться окно Signal Browser (Браузер сигналов). Выбрав в списке сигнал y1, получим окно, изображенное на рисунке 2.4.

28

Рисунок 2.4 – Окно Signal Browser

Под заголовком окна расположена строка меню. Меню File (Файл) включает команды, предназначенные для подготовки и вывода на принтер содержимого окна.

Меню Markers (Маркеры) включает в себя следующие команды. Первая команда Markers позволяет включать (отключать) маркеры на изображении процессов. Остальные команды доступны при включенных маркерах. После установки флажка рядом с командой Vertical (По вертикали) отображаются лишь аргументы точек пересечения маркеров с графиком процесса. Если активна команда Horizontal (По горизонтали), создаются горизонтальные линии маркеров, что позволяет отсчитывать только их вертикальные координаты. Команда Track (Отслеживать) возвращает предыдущий режим работы с маркерами. Использование команды Slope (Наклон) приводит к появлению на графике еще одной прямой, соединяющей точки пересечения графика сигнала с маркерными линиями. При этом внизу экрана выводится значение тангенса угла наклона этой прямой к оси абсцисс. Вызов команды Peaks (Максимумы) приводит к тому, что линии маркеров могут быть установлены только в точках максимальных значений сигнала. При этом внизу окна появляются значения этих максимумов и их аргументов. Аналогично, с помощью команды Valleys (Минимумы) определяются точки минимумов сигнала. Наконец, команда Export (Экспорт) позволяет записать изображенную в окне маркерную структуру в виде массива с указанным именем в рабочее пространство MATLAB.

Ниже строки меню находится панель инструментов. С помощью инструментов, расположенных на этой панели, можно произвести действия, предусмотренные меню File (Файл), Markers (Маркеры), Windows (Окна), а также выполнить следующие действия: изменить цвета кривых, изображаемых в окне графиков; изменить масштабы изображения по обеим осям графика; выделить для увеличенного изображения отдельную область графика.

29

2.3 Создание спектров сигналов

После ввода в окно SPTool сигналов можно найти оценки их спектральных свойств. Для этого достаточно в списке Signals (Сигналы) окна SPTool отметить (выделить) тот сигнал, оценку спектральной плотности которого вы хотите получить, и вызвать команду Create (Создать), относящуюся к списку Spectra (Спектры). При этом на экране появится окно Spectrum Viewer (Просмотр спектра), показанное на рисунке 2.5.

Рисунок 2.5 – Окно Spectrum Viewer

Новое окно напоминает окно Signal Browser (Браузер сигналов). Панели инструментов этих окон практически одинаковы. Область отображения спектра в окне Spectrum Viewer (Просмотр спектра) в начале сеанса работы является пустой, а слева от нее располагается область, в которой можно выбрать метод нахождения спектральной характеристики сигнала, установить количество его обрабатываемых точек, а также количество точек и тип окна сглаживания.

В раскрывающемся списке Method (Метод) можно выбрать метод вычис-

ления спектра: Burg, FFT, MEM, MTM, MUSIC, Welch или YuleAR. Выбор типа окна, используемого при вычислении спектра, осуществляется с помощью списка Window (Окно). Он содержит следующие элементы: bartlett, blackman, boxcar, chebwin, hamming, hanning, kaiser, triang.

Чтобы начать вычисления, после выбора метода следует щелкнуть на кнопке Apply (Применить), расположенной в правом нижнем углу области. Например, выделим для обработки процесс y1, вызовем команду Create (Создать) и выберем метод FFT. После щелчка на кнопке Apply (Применить) в окне Spectrum Viewer (Просмотр спектра) в области отображения спектра появится спектр сигнала y1(t), показанный на рисунке 2.6.

30