Uploaded by Аристарх Жуков

Стохастика электронных систем практика

advertisement
Стохастика электронных систем
Оглавление
Введение
Стр
Практическое занятие 1. Описание сигналов в Матлаб
Практическое занятие 2 Дискретные системы. Светрка
Практическое занятие 3 Дискретное во времени преобразование Фурье.
Частотные характеристики дискретных систем.
Лабораторная работа 1 Исследование разомкнутой линейной системы
Лабораторная работа 2 Проектирование регулятора для линейной системы
Лабораторная работа 3 Дискретное преобразование Фурье. Свойства
Приложение 1 Вычисления в Matlab
Приложение 2 Описание интерактивной оболочки SPTool
Приложение 3 Описание интерактивной среды FDATool
1
ВВЕДЕНИЕ
Цифровая обработка сигналов является основой для практической
реализации множества алгоритмов в современных системах связи. Задача
повышения эффективности и скорости передачи в беспроводных системах
связи и вещания решается при помощи все более сложных сигналов и
методов их приема. Для эффективной разработки аппаратуры и ее
эксплуатации инженеру необходимо понимание основных алгоритмов
спектрально временных преобразований и их реализации в цифровой форме.
Основы данных алгоритмов изучаются в курсе Стохастика электронных
систем. Применение вычислительной среды Matlab в качестве основного
рабочего инструмента позволяет организовать эффективное обучение и
практическое освоение алгоритмов обработки.
Данное пособие содержит описание практических и лабораторных
работ, выполняемых в течении семестра. Наличие большого количества
примеров позволяет приступить к изучению курса самостоятельно.
2
ПРАКТИЧЕСКОЕ ЗАНЯТИЕ 1.
ОПИСАНИЕ СИГНАЛОВ В МАТЛАБ
Цель работы. Практическое изучение формирования сигналов при
моделировании алгоритмов в Матлаб.
1.1. Для проведения Важной задачей при моделировании алгоритмов
обработки сигналов является имитация (генерирование) сигналов заданной
формы.
Для задания сигнала как функции от времени необходимо
сформировать вектор временных отсчетов и далее определить функцию от
данного вектора
t1 = [0 .1 .2 .3];
t2 = 0:0.1:0.3;
t3 = linspace(0, 0.3, 4);
T = [t1' t2' t3'];
X = sin(T)
В данном примере происходит формирование трех векторов отсчетов
времени, задающих масштаб временной оси. Далее эти три вектора
обьединяются в матрицу, и полученная матрица применяется для вычисления
матрицы Х, содержащей отсчеты синусоиды.
t=linspace(-1,10,100); % функция включения
u=(t>=0);
plot(t,u)
ts = 0:0.5:5; % дельта импульс
x = [1 zeros(1,length(ts)-1)];
stem(ts,x)
axis([-1 6 0 2])
t = linspace(0,1,1001); %синусоидальный сигнал
A = 5;
f = 2;
p = pi/8;
sinewave = A*sin(2*pi*f*t + p);
plot(t, sinewave)
3
%Дискретные экспоненты
n = -10:30; % Time index
subplot(2,1,1);
y = exp(n/5); % Growing exponential
h = stem(n,y);
set(h(1),'Marker','.');
set(gca,'Box','Off');
subplot(2,1,2);
y = exp(-n/5); % Decaying exponential
h = stem(n,y);
set(h(1),'Marker','.');
set(gca,'Box','Off');
xlabel('Time (n)');
Важным сигналом в цифровой обработке сигналов является комплексная
экспонента. Для наглядного представления формы этого сигнала можно
использовать следующий м-скрипт complexp.m
% Моделирование комплексной экспоненты.
w = j*1;
fs = 500; % Sample rate (Hz)
t = -10:1/fs:10; % Time index (s)
y = exp(w*t);
N = length(t);
subplot(2,1,1);
h = plot(t,real(y));
box off;
grid on;
ylim([-1.1 1.1]);
ylabel('Реальная часть');
subplot(2,1,2);
h = plot(t,imag(y));
box off;
grid on;
ylim([-1.1 1.1]);
xlabel('Время (s)');
ylabel('мнимая часть');
figure;
h = plot3(t,zeros(1,N),zeros(1,N),'k');
hold on;
h = plot3(t,imag(y),real(y),'b');
h = plot3(t,1.1*ones(size(t)),real(y),'r');
h = plot3(t,imag(y),-1.1*ones(size(t)),'g');
hold off;
grid on;
ylabel('мнимая часть');
zlabel('Реальная часть');
title('Complex:Blue Real:Red Imaginary:Green');
axis([min(t) max(t) -1.1 1.1 -1.1 1.1]);
4
view(27.5,22);
Рисунок 1.1 Реальная и мнимая части комплексной экспоненты
Рисунок 1.2 Графическое представление комплексной экспоненты
5
В пакете Signal предусмотрено несколько процедур, образующих
последовательности данных, представляющие некоторые одиночные
импульсные процессы типовых форм.
Процедура rectpuls обеспечивает формирование одиночного импульса
прямоугольной формы. Обращение вида
y=rectpuls(t,w)
позволяет образовать вектор y значений сигнала такого импульса единичной
амплитуды, имеющий ширину w, центрированный относительно t = 0, по
заданному вектору t моментов времени. Сформируем несколько таких
импульсов (рис. 1.3):
t=0:0.01:10;
y=0.75*rectpuls(t-3,2)+0.5*rectpuls(t-8,0.4)+
+1.35*rectpuls(t-5,0.8);
plot(t,y); grid; title('Прямоугольные импульсы');
xlabel('Время (с)'); ylabel('Выходной процесс')
Прямоугольные импульсы
1.4
1.2
Выходной процесс
1
0.8
0.6
0.4
0.2
0
0
1
2
3
4
5
Время (с)
6
7
8
9
10
Рисунок 1.3 – График процесса, сгенерированного функцией rectpuls
Процедура sinc формирует вектор значений функции sin(t)/t. Эта
функция является обратным преобразованием Фурье прямоугольного
импульса шириной 2π и высотой 1. Пример ее применения (рис.1.4):
t=0:0.01:50;
y=0.7*sinc(pi*(t-25)/5);
plot(t,y); grid; title('Функция sinc(t)');
xlabel('Время (с)'); ylabel('Выходной процесс')
6
Ôóíêöèÿ sinc(t)
0.7
0.6
0.5
Âûõîäíîé ïðîöåññ
0.4
0.3
0.2
0.1
0
-0.1
-0.2
0
5
10
15
20
25
Âðåìÿ (ñ)
30
35
40
45
50
Рисунок 1.4 – График процесса, сгенерированного функцией sinc
1.2. Колебательные процессы
Формирование гармонических колебаний можно осуществить с
помощью обычных процедур sin(x) и cos(x).
Процесс, являющийся последовательностью прямоугольных импульсов
с периодом 2π для заданной в векторе t последовательности отсчетов
времени, генерируется с помощью функции square. Обращение к ней имеет
вид:
y=square(t,duty)
Здесь аргумент duty определяет длительность положительной полуволны в
процентах от периода волны. Например (рис.1.5):
t=0:0.01:50; y=0.7*square(pi*t/5,40);
plot(t,y); grid; title('Прямоугольные волны');
xlabel('Время'); ylabel('Выходной процесс')
7
Прямоугольные волны
0.8
0.6
Выходной процесс
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
0
5
10
15
20
25
Время
30
35
40
45
50
Рисунок 1.5 – График процесса, сгенерированного функцией square
Процедура pulstran позволяет формировать колебания, являющиеся
последовательностью прямоугольных, треугольных либо гауссовых
импульсов. Обращение имеет вид:
y=pulstran(t,d,'func',p1,p2,…)
y=pulstran(t,d,'rectpuls',5); plot(t,y); grid;
title('Последовательность прямоугольных импульсов');
xlabel('Время'); ylabel('Выходной процесс')
Последовательность прямоугольных импульсов
1
0.9
0.8
Выходной процесс
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
0
5
10
15
20
25
Время
30
35
40
45
50
Рисунок 1.6 – Результат применения функции pulstran('rectpuls')
8
1.3 Случайные процессы
Нормально распределенный случайный процесс (белый шум) в
MATLAB образуется при помощи процедуры randn. Для этого достаточно
задать временной шаг отсчетов Ts, образовать с этим шагом вектор t
моментов времени в нужном диапазоне, а затем сформировать по указанной
процедуре вектор-столбец х длиной, равной длине вектора t, например
(рис.1.7):
Ts=0.01; t=0:Ts:20; y=randn(1,length(t));
plot(t,y); grid; title('Белый шум');
xlabel('Время'); ylabel('y(t)')
Белый шум
4
3
2
y(t)
1
0
-1
-2
-3
-4
0
2
4
6
8
10
Время
12
14
16
18
20
Рисунок 1.7 – Белый шум (Ts = 0.01)
ПРАКТИЧЕСКОЕ ЗАНЯТИЕ 2
ДИСКРЕТНЫЕ СИСТЕМЫ. ДИСКРЕТНАЯ СВЕРТКА
Цель работы. Практическое изучение вычисления дискретной свертки
в Матлаб. Изучение свойств свертки.
Дискретная система выполняет преобразование отсчетов входного
сигнала по определенному алгоритму. Требования к выполняемому
преобразованию могут быть описаны как во временной, так и в частотной
областях.
9
В общем виде дискретную систему можно описать при помощи
системного оператора
yn  F xn
где x[n] – отсчеты входного сигнала, y[n]- отсчеты выходного сигнала
после преобразования, F[.] – выполняемое преобразование.
Важный класс дискретных систем, распространенный на практике –
линейные дискретные системы. К ним применим принцип суперпозиции –
отклик системы на сумму входных сигналов равен сумме откликов на эти
сигналы
yn  F a  x1 n  b  x2 [n]  a  F x1 n  b  F x2 n
Во временной области линейная дискретная системы полностью
описывается при помощи импульсной реакции h[n] – реакции системы на
входной сигнал в виде единичного импульса
hn  k   F  n  k 
Сигнал на выходе дискретной системы может быть найден при помощи
операции дискретной свертки
yn 

 xk  hn  k 
k  
Операция свертки описывает процессы в цифровых фильтрах во
временной области. Сигнал на выходе цифрового фильтра – свертка
входной последовательности и импульсной реакции фильтра.
Для исследования операции дискретной свертки рекомендуется
самостоятельно вычислить свертку нескольких последовательностей
небольшой длины.
Дальнейшее изучение свойств свертки выполняется при помощи
программы dconvol.m (находится в рабочей директории)
%dconvol.m
echo off;
close all;
fpos = [0.25 0.5 0.5 0.42];
style{1} = 'LineWidth';
style{2} = 1;
style{3} = 'MarkerSize';
style{4} = 4;
figure('numbertitle','off','name','Сигнел во временной области',...
'Units','normal','Position',fpos);
10
echo on;
n = 0:19;
h = 0.5 .^ n;
x = [n(1:10) zeros(1,10)];
y = conv(x,h);
% свертка of x and h
stem(0:length(y)-1, y);
% длина y = длина x + длина h - 1
xlabel('n'), ylabel('y[n]');
echo off;
Задание на практическую работу.
Задана импульсная характеристика
hn  0.02
для n=0..49.
Сформируйте вектор отсчетов сигнала
xn  3  sin( 0.5  n)
Размером n=0..199.
Выполните дискретную свертку этих двух сигналов.
Измените порядок последовательностей и вычислите дискретную свертку.
Сравните результаты.
Проверьте основные свойства дискретной свертки. Результаты приведите
в графическом виде.
ПРАКТИЧЕСКОЕ ЗАНЯТИЕ 3
ДИСКРЕТНОЕ ВО ВРЕМЕНИ ПРЕОБРАЗОВАНИЕ ФУРЬЕ.
ЧАСТОТНЫЕ ХАРАКТЕРИСТИКИ ДИСКРЕТНЫХ СИСТЕМ.
Цель работы. Практическое изучения вычисления ДВПФ. Изучение
свойств ДВПФ,
Дискретные системы изменяют временную форму сигнала, и
следовательно, меняют спектральный состав сигнала. Как и аналоговые
11
системы, цифровые системы описываются в частотной области при
помощи передаточной функции
   h[k ]  e
H e j 

 jk
k  
которая
является
характеристики.
преобразованием
Фурье
от
импульсной
Целью данного практического занятия является изучение основных
свойств дискретного по времени преобразования Фурье.
Основные свойства ДВПФ
1. Периодичность по частоте
 
H e j  H (e j k 2 )
2. Симметрия
H ( e  j )  H ( e j )
Также действительны свойства обычного преобразования Фурье.
Для изучения свойств ДВПФ применяется скрипт dtft_pr.m (находится в
рабочей директории)
% dtft_pr.m
echo off;
close all;
fpos = [0.25 0.5 0.5 0.42];
style{1} = 'LineWidth';
style{2} = 1;
style{3} = 'MarkerSize';
style{4} = 4;
figure('numbertitle','off','name','Сигнал в частотной области',...
'Units','normal','Position',fpos);
echo on;
N = 6;
h = 1/N*ones(1,N);
% Импульсная реакция
[H,theta] = freqz(h,1,256);
% Частотная характеристика
subplot(2,1,1), plot(theta/pi,abs(H)); % АЧХ
xlabel('\theta/\pi'), ylabel('|H(e^{j\theta})|'), grid on;
subplot(2,1,2), plot(theta/pi,angle(H)); % ФЧХ
xlabel('\theta/\pi'), ylabel('\angle H(e^{j\theta})'), grid on;
echo off;
12
Рисунок 3.1 Результат вычисления частотной характеристики.
Ось частот нормируется по отношению к частоте дискретизации. Результат
вычисления выводится в основной полосе частот.
Задание на практическую работу
Задайте дискретную последовательность вида
x{n}  sin( 2f 0 n)
Для 0 ≤n≤30. Для данной последовательности проведите исследование
свойств ДВПФ. Значение частоты f меняется произвольно в пределах 0.050
0.9.
13
Лабораторная работа № 1
Исследование разомкнутой линейной системы
(краткие теоретические сведения)
Модели линейных систем
Для описания линейных систем могут применяться несколько способов:
 дифференциальные уравнения
 модели в пространстве состояний
 передаточные функции
 модели вида «нули-полюса»
Первые два способа называются временными, поскольку описывают
поведение системы во временной области и отражают внутренние связи
между сигналами. Передаточные функции и модели вида «нули-полюса»
относятся к частотным способам описания, так как непосредственно
связаны с частотными характеристиками системы и отражают только входвыходные свойства (то есть, описывают динамику не полностью).
Частотные методы позволяют применять для анализа и синтеза
алгебраические методы, что часто упрощает расчеты. С другой стороны, для
автоматических вычислений более пригодны методы, основанные на моделях
в пространстве состояний, поскольку они используют вычислительно
устойчивые алгоритмы линейной алгебры.
Исходные уравнения динамики объектов, которые строятся на основе
законов физики, имеют вид нелинейных дифференциальных уравнений. Для
приближенного анализа и синтеза обычно проводят их линеаризацию в
окрестности
установившегося
режима
и
получают
линейные
дифференциальные уравнения.
Линейное уравнение y  2 y  3 y  4u  5u можно записать в операторной
форме
( p 2  2 p  3) y  (4 p  5) u
или D( p) y  N ( p) u
14
d
где u (t ) – входной сигнал, y (t ) – сигнал выхода, p  dt – оператор
2
дифференцирования, D( p)  p  2 p  3 и N ( p)  4 p  5 – операторные
полиномы.
Передаточная функция W (s) линейной стационарной системы от
комплексной переменной s определяется как отношение преобразования
Лапласа выхода к преобразованию Лапласа входа при нулевых начальных
условиях

W ( s) 

Y ( s)
, Y ( s)   y(t )e st dt , U ( s)   u (t )e st dt .
U ( s)
0
0
Передаточная функция звена, которое описывается приведенным выше
уравнением, равна
W ( s) 
4s  5
s  2s  3 ,
2
то есть, совпадает с отношением операторных полиномов N ( p) / D( p) при
замене переменной p на s .
Передаточная функция в среде MATLAB вводится в виде отношения двух
многочленов (полиномов) от комплексной переменной s. Полиномы хранятся
как массивы коэффициентов, записанных по убыванию степеней. Например,
передаточная функция
F ( s) 
2s  4
s  1.5 s 2  1.5 s  1
3
вводится следующим образом1
>> n = [2 4]
n =
2
4
>> d = [1 1.5 1.5 1]
d =
1.0000
1
1.5000
1.5000
1.0000
Черным цветом обозначается ввод пользователя, синим – ответ среды MATLAB.
15
>> f = tf ( n, d )
Transfer function:
2 s + 4
------------------------s^3 + 1.5 s^2 + 1.5 s + 1
или сразу, без предварительного построения числителя и знаменателя:
>> f = tf ( [2 4], [1 1.5 1.5 1] );
В памяти создается объект класса tf, описывающий передаточную
функцию. Точка с запятой в конце команды подавляет вывод на экран.
По передаточной функции можно легко построить модель в форме
«нули-полюса»
>> f_zpk = zpk(f)
Zero/pole/gain:
2 (s+2)
----------------------(s+1) (s^2
+ 0.5s + 1)
Нулями называются корни числителя, полюсами – корни знаменателя. Эта
функция имеет один нуль в точке s  2 и три полюса в точках s  1 и
s  0,25  0.9682i
. Паре комплексных полюсов соответствует квадратный
трехчлен.
Модель в пространстве состояний связана с записью дифференциальных
уравнений в стандартной форме Коши (в виде системы уравнений первого
порядка):
x  A x  B u
y  C x  Du
Здесь x – вектор переменных состояния размера n 1, u – вектор входных
сигналов (вектор управления) размера m 1 и y – вектор выходных сигналов
размера p 1 . Кроме того, A, B, C и D – постоянные матрицы. Согласно
правилам матричных вычислений, матрица A должна быть квадратной
размера n n , матрица B имеет размер n m , матрица C – p  n и матрица D –
16
pm
. Для систем с одним входом и одним выходом2 матрица D – скалярная
величина.
Для преобразования передаточной функции в модель в пространстве
состояний используется команда
>> f_ss = ss ( f )
a =
x1
x2
x3
x1
-1.5
-0.1875
-0.03125
x2
8
0
0
x3
0
4
0
b =
u1
x1
0.5
x2
0
x3
0
c =
x1
x2
x3
0
0.5
0.25
y1
d =
u1
y1
0
Это означает, что матрицы модели имеют вид
 0 .5 
 1.5  0.1875  0.03125


B   0  C  0 0.5 0.25 D  0
A 8
0
0
,
,
.
,
 0 
4
0
 0

Модель в пространстве состояний можно построить не для всех
передаточных функций, а только для правильных, у которых степень
2
В зарубежной литературе для одномерных систем используется сокращение SISO = Single Input Single
Output.
17
числителя не выше, чем степень знаменателя. Например, передаточная
функция
W ( s) 
2s 2  3s  1
s5
– неправильная, она не может быть преобразована в модель в пространстве
состояний.
Используют также понятие строго правильной функции, у которой
степень числителя меньше, чем степень знаменателя. Если построить модель
в пространстве состояний для такой функции, матрица D будет равна нулю,
то есть, прямая передача с входа на выход отсутствует (при скачкообразном
изменении входа сигнал на выходе будет непрерывным).
Коэффициент усиления в установившемся режиме
Одна из важнейших характеристик линейной системы – коэффициент
усиления в установившемся режиме или статический коэффициент
усилении (static gain, DC-gain). Его можно определить как установившееся
значение сигнала выхода при постоянном входном сигнале, равном единице.
Размерность этой величины равна отношению размерностей сигналов выхода
и выхода.
Рассмотрим дифференциальное уравнение
y  2 y  3 y  4u  5u
.
Полагая все производные (в установившемся режиме) равными нулю,
получаем
5
3 y  5u  y  u
3 .
Статический коэффициент усиления равен k s  5 / 3 .
Если задана передаточная функции, для вычисления k s надо подставить
в нее s  0 , поскольку переменная s соответствует оператору
дифференцирования. Рассмотренному выше уравнению можно сопоставить
передаточную функцию
18
W ( s) 
4s  5
s  2s  3 .
2
Тогда
k s  lim W ( s ) 
s 0
5
3.
Если система содержит интегрирующее звено (передаточная функция имеет
полюс в точке s  0 ), этот предел равен бесконечности, то есть, при
постоянном сигнале выход бесконечно увеличивается или уменьшается, не
достигая установившегося режима.
Тот же результат можно получить с помощью эквивалентной модели в
пространстве состояний. С помощью среды MATLAB находим
 2  1.5
 2
A
, B   , C  2 1.25, D  0 .

0 
2
0 
Полагая x  0 , получаем модель, определяющую установившийся режим
0  Ax  Bu
y  C x  Du

x   A 1 B u
y  C x  Du
 y   C A1 B  D  u ,
откуда следует
k s  C A 1 B  D
.
5
Для нашей системы, как и раньше, получаем k s  3 . Заметьте, что для того,
чтобы
статический
коэффициент
усиления
был
конечен,
требуется
обратимость матрицы A , то есть, отсутствие интегрирующих звеньев3.
Чтобы найти статический коэффициент усиления модели
используется команда
f
в MATLAB,
>> k = dcgain ( f )
3
Полюса передаточной функции являются собственными числами матрицы A . Таким образом, если у
передаточной функции есть полюс в точке s  0 , матрица A будет вырожденной.
19
Импульсная характеристика
Импульсной характеристикой (весовой функцией) w(t ) называется
реакция системы на единичный бесконечный импульс (дельта-функцию или
функцию Дирака) при нулевых начальных условиях. Дельта-функция  (t )
определяется равенствами
 0, t  0
 (t )  
,
, t  0

  (t ) dt  1 .

Это обобщенная функция – математический объект, представляющий собой
идеальный сигнал, никакое реальное устройство не способно его
воспроизвести. Дельта-функцию можно рассматривать как предел
прямоугольного импульса единичной площади с центром в точке t  0 при
стремлении ширины импульса к нулю.
систем
а
Второе название – весовая функция – связано с тем, что для произвольного
входного сигнала u (t ) выход системы y (t ) вычисляется как свертка
t


0
y(t )   u ( ) w(t   ) d   u (t   ) w( ) d .
Здесь функция w(t ) как бы «взвешивает» входной сигнал в подынтегральном
выражении.
Импульсная
характеристика
отражает
лишь
вход-выходные
соотношения при нулевых начальных условиях, то есть, не может полностью
описывать динамику системы.
Понятие импульсной характеристики используется главным образом для
систем, передаточные функции которых строго правильные. Если
передаточная функция правильная, но не строго правильная, коэффициент
прямой передачи с входа на выход (матрица D модели в пространстве
состояний) не равен нулю, поэтому бесконечный импульс на входе в момент
t  0 передается на выход. Такую (бесконечную по величине) импульсную
характеристику невозможно построить. Система MATLAB в этом случае
20
строит импульсную характеристику для строго правильной части, принимая
D  0 . Это один из тех случаев, когда компьютер выдает качественно
неверный результат.
Если система не содержит интеграторов, импульсная характеристика
стремится к нулю. Это следует из теоремы о предельном значении:
lim w(t )  lim s W ( s)
t 
где
W (s )
–
передаточная
s 0
функция
,
системы,
которая
является
преобразованием Лапласа для w(t ) . Импульсная характеристика системы с
одним интегратором стремится к постоянной величине, равной статическому
коэффициенту передачи системы без интегратора. Для системы с двумя
интеграторами импульсная характеристика асимптотически стремится к
прямой, с тремя интеграторами – к параболе и т.д.
Переходная характеристика
Переходной характеристикой (переходной функцией) h(t ) называется
реакция системы (при нулевых начальных условиях) на единичный
ступенчатый сигнал (единичный скачок)
0, t  0
1(t )  
.
1, t  0
Step Response
1.4
1.2
ks
1
переходная
функции
связаны
0.8
Amplitude
Импульсная и
выражениями
0.6
0.4
dh(t )
w(t ) 
dt ,
t
h(t )   w( ) d .
0.2
0
0
1
2
3
4
5
6
7
8
Time (sec)
0
Для систем без интеграторов переходная характеристика стремится к
постоянному
значению.
Переходная
характеристика
системы
с
дифференцирующим звеном (числитель передаточной функции имеет нуль в
точке s  0 ) стремится к нулю. Если система содержит интегрирующие
звенья, переходная характеристика асимптотически стремится к прямой,
параболе и т.д., в зависимости от количества интеграторов.
21
По определению предельное значение переходной функции h(t ) при
t   есть статический коэффициент усиления:
k s  lim h(t )
t 0
.
Эта величина имеет смысл только для устойчивых систем, поскольку при
неустойчивости переходный процесс не сходится к конечному значению.
Если передаточная функция правильная, но
Step Response
1
Amplitude
0.8
0.6
0.4
0.2
0
0
1
2
3
4
5
6
7
8
Time (sec)
не строго правильная (матрица D модели в
пространстве состояний не равна нулю),
скачкообразное изменение входного сигнала
мгновенно
приводит
к
скачкообразному
изменению выхода. Величина этого скачка равна
отношению
коэффициентов
при
старших
степенях числителя и знаменателя передаточной функции (или матрице D
модели в пространстве состояний).
Step Response
1.4
System: untitled1
Peak amplitude: 1.16
Overshoot (%): 16.3
At time (sec): 3.64
1.2
1
System: untitled1
Settling Time (sec): 8.08
0.8
Amplitude
По переходной характеристике можно
найти
важнейшие
показатели
качества
системы – перерегулирование (overshoot) и
время переходного процесса (settling time).
0.6
Перерегулирование определяется как
0.4
0.2
h  h
  max
 100%
,
h
0
0
2
4
6
8
10
12
Time (sec)
h(t )
где hmax – максимальное значение функции h(t ) , а h  lim
–
t 
установившееся значение выхода.
Время переходного процесса – это время, после которого сигнал выхода
отличается от установившегося значения не более, чем на заданную малую
величину (в среде MATLAB по умолчанию используется точность 2%).
Частотная характеристика
При
подаче
на
вход
линейной
системы
гармонического
(синусоидального) сигнала u (t )  sin t с частотой  (она измеряется в
радианах в секунду), на выходе будет также гармонический сигнал той же
22
частоты, но другой амплитуды и фазы4 y(t )  A sin( t   ) , где A – амплитуда и
 – сдвиг фазы.
Частотная характеристика определяется как реакция системы на
комплексный
экспоненциальный
e jt  cos t  j sin t .
сигнал
Для
ее
построения надо использовать подстановку s  j в передаточной функции
. Выражение W ( j ) называется частотной передаточной функцией или
амплитудно-фазовой частотной характеристикой системы (АФЧХ).
W (s )
Зависимость модуля величины W ( j ) от частоты называется
амплитудной частотной характеристикой (АЧХ), а зависимость аргумента
комплексного числа (фазы) W ( j ) от частоты – фазовой частотной
характеристикой (ФЧХ):
A( )  W ( j ) ,  ( )  arg W ( j )  arctg
ImW ( j )
Re W ( j ) .
АЧХ показывает, насколько усиливается амплитуда сигналов разных частот
после прохождения через систему, а ФЧХ характеризует сдвиг фазы сигнала.
1.6
1.4
ks
Amax
1.2
1
0.8
0.6
0.4
0.2
0
-1
10
c b
0
10
1
10
2
10
Реальные объекты имеют строго правильную передаточную функцию,
поэтому их АЧХ убывает с ростом частоты и асимптотически стремится к
нулю. Говорят, что такой объект обладает свойством фильтра – фильтрует
(не пропускает) высокочастотные сигналы (помехи, шумы измерений). Это
свойство служит основой для использования метода гармонического баланса.
Частота, после которой значение АЧХ уменьшается ниже 0 дБ
(коэффициент усиления меньше 1, сигнал ослабляется), называется
частотой среза системы ñ .Частота, после которой значение АЧХ падает
4
Для нелинейных систем это неверно.
23
ниже -3 дБ (коэффициент усиления меньше, чем 0.708), называется полосой
пропускания системы b . Для ее вычисления используют команду
>> b = bandwidth ( f )
Максимум
АЧХ
соответствует
частоте,
на
которой
усиление
наибольшее. Значение АЧХ при   0 равно усилению при постоянном
сигнале, то есть, статическому коэффициенту усиления ks . Это следует и из
равенства
lim A()  lim W ( j)  lim W (s)  ks .
0
0
s0
Для систем с интегрирующими звеньями частотная характеристика
стремится к бесконечности при   0 . Это значит, что их выход бесконечно
увеличивается или уменьшается при постоянном входном сигнале.
Чтобы построить частотные характеристики в MATLAB, надо сначала
создать массив частот в нужном диапазоне. Для этого можно использовать
функции linspace (равномерное распределение точек по линейной шкале)
и logspace (равномерное распределение точек по логарифмической
шкале). Команда
>> w = linspace (0, 10, 100);
строит массив из 100 точек с равномерным шагом в интервале от 0 до 10, а
команда
>> w = logspace (-1, 2, 100);
– массив из 100 точек с равномерным шагом по логарифмической шкале в
1
2
интервале от 10 до 10 .
Частотная характеристика на сетке w для линейной модели f (заданной
как передаточная функция, модель в пространстве состояний или в форме
«нули-полюса») вычисляется с помощью функции freqresp:
>> r = freqresp(f, w);
Функция freqresp возвращает трехмерный массив. Это связано с тем, что
она применима и для многомерных моделей (с несколькими входами и
выходами), передаточная функция которых представляет собой матрицу.
Первые два индекса обозначают строку и столбец в этой матрице, а третий –
24
номер точки частотной характеристики. Для системы с одним входом и
одним выходом удобно преобразовать трехмерный массив в одномерный
командой
>> r = r(:);
Для вывода графика АЧХ на экран можно использовать команды MATLAB
>> plot ( w, abs(r) );
>> semilogx ( w, abs(r) );
>> loglog ( w, abs(r) );
В первом случае масштаб обеих осей координат – линейный, во втором
случае используется логарифмический масштаб по оси абсцисс (частот), в
последнем – логарифмический масштаб по обеим осям. Для вычисления
фазы (в градусах) используется команда
>> phi = angle(r)*180/pi;
после чего можно строить ФЧХ, например:
>> semilogx ( w, phi );
Полюса и нули
Многие динамические свойства системы (например, быстродействие,
перерегулирование) определяются полюсами передаточной функции (или,
что то же самое, собственными числами матрицы A модели в пространстве
состояний).
Передаточную функцию можно записать как произведение
передаточных функций элементарных звеньев первого и второго порядков.
Таким образом, множество полюсов передаточной функции устойчивой
системы составляют полюса передаточных функций двух типов простейших
звеньев: апериодических и колебательных.
1
Апериодическое звено с передаточной функцией вида F ( s)  Ts  1 имеет
единственную характеристику – постоянную времени T . Начиная примерно с
частоты5 0  1 / T , АЧХ такого звена начинает убывать, приближаясь к нулю.
5
Значение
0
возвращается функцией damp как собственная частота для вещественного полюса.
25
1
Колебательное звено имеет передаточную функцию F ( s)  T 2 s 2  2 Ts  1
, где T – постоянная времени и 0    1 . Частота 0  1 / T называется
собственной частотой (natural frequency), а параметр  – параметром
затухания или коэффициентом демпфирования (damping factor). При
уменьшении  импульсная и переходная функции приобретают ярко
выраженный колебательный характер, а на АЧХ появляется «горб» в районе
частоты 0 . В предельном случае при   0 колебания становятся
незатухающими, а звено называется консервативным. С другой стороны при
  1 корни знаменателя становятся вещественными, и звено превращается в
апериодическое звено второго порядка.
Для нахождения полюсов передаточной функции f можно использовать
функцию
>> p = pole ( f )
Вызов функции
>> [w0,zeta,p] = damp ( f )
позволяет найти не только полюса p, но также соответствующие им
собственные частоты w0 и коэффициенты демпфирования zeta в виде
массивов.
Нули передаточной функции f вычисляются как
>> z = zero ( f );
Устойчивость системы не зависит от расположения нулей, но они
существенно влияют на переходные процессы. Команда
>> pzmap ( f );
строит карту расположения нулей (они обозначаются кружками) и полюсов
(крестики) системы на комплексной плоскости.
26
Лабораторная работа № 1
Исследование разомкнутой линейной системы
(практическая часть)
Цели работы
 освоение методов анализа одномерной линейной непрерывной системы
с помощью среды MATLAB
Задачи работы
 ввести модель системы в виде передаточной функции
 построить эквивалентные модели в пространстве состояний и в форме
«нули-полюса»
 определить коэффициент усиления в установившемся режиме и полосу
пропускания системы
 научиться строить импульсную и переходную характеристики, карту
расположения нулей и полюсов, частотную характеристику
 научиться использовать окно LTIViewer для построения различных
характеристик
 научиться строить процессы на выходе линейной системы при
произвольном входном сигнале
Оформление отчета
Отчет по лабораторной работе выполняется в виде связного (читаемого)
текста в файле формата Microsoft Word (шрифт основного текста Times New
Roman, 12 пунктов, через 1,5 интервала, выравнивание по ширине). Он
должен включать






название предмета, номер и название лабораторной работы
фамилию и инициалы авторов, номер группы
фамилию и инициалы преподавателя
номер варианта
краткое описание исследуемой системы
результаты выполнения всех пунктов инструкции, которые выделены
серым фоном (см. ниже): результаты вычислений, графики, ответы на
вопросы.
При составлении отчета рекомендуется копировать необходимую
информацию через буфер обмена из рабочего окна среды MATLAB. Для этих
данных используйте шрифт Courier New, в котором ширина всех символов
одинакова.
27
Инструкция по выполнению работы
Основная часть команд вводится в командном окне среды MATLAB. Команды,
которые надо применять в других окнах, обозначены иконками
соответствующих программ.
Этап выполнения задания
Команды MATLAB
1. Очистите рабочее пространство MATLAB
clear all
(память).
2. Очистите окно MATLAB.
clc
3. Посмотрите краткую справку по
команде tf.
help tf
4. Определите адрес файла, который
выполняет эту команду.
which('tf')
5. Введите передаточную функцию6
F ( s) 
n2 s  n1 s  n0
s  d 2 s 2  d1 s  d 0 как объект tf.
2
3
6. Проверьте, как извлечь из этого объекта
числитель и знаменатель передаточной
функции.
7. Найдите нули и полюса передаточной
функции.
n = [n2 n1 n0]
d = [1 d2 d1 d0]
f = tf ( n, d )
[n1,d1] = tfdata ( f,
'v' )
z = zero ( f )
p = pole ( f )
8. Найдите коэффициент усиления звена в
установившемся режиме.
k = dcgain ( f )
9. Определите полосу пропускания
системы (наименьшую частоту, на
которой АЧХ становится меньше, чем
 3 дБ).
b = bandwidth ( f )
10.Постройте модель системы в
пространстве состояния.
11.Сделайте так, чтобы коэффициент
прямой передачи звена был равен 1.
12.Найдите новый коэффициент усиления
звена в установившемся режиме.
6
f_ss = ss ( f )
f_ss.d = 1
k1 = dcgain ( f_ss )
Все коэффициенты надо взять из таблицы в конце файла.
28
13.Как связаны коэффициенты k и k1 ?
Почему?
14.Постройте модель исходной системы в
форме «нули-полюса».
f_zp = zpk ( f )
15.Проверьте, какие переменные есть в
рабочем пространстве.
who или whos
(в чем разница?)
16.Постройте на графике расположение
нулей и полюсов системы.
pzmap ( f )
17.Определите коэффициенты
демпфирования и собственные частоты
для всех элементарных звеньев (первого
и второго порядка).
[wc,ksi,p] = damp ( f )
18.Запустите модуль LTIViewer.
ltiview
19.Загрузите модель f.
20.Постройте импульсную характеристику
(весовую функцию) этой системы.
File – Import
ПКМ – Plot Types Impulse
21.Загрузите модель f_ss.
File – Import
22.Проверьте, построена ли импульсная
характеристика второй системы?
ПКМ – Systems
23.Отключите систему f. Почему
одинаковы построенные импульсные
характеристики разных систем?
ПКМ – Systems
24.Подключите обе системы.
ПКМ – Systems
25.Постройте переходные характеристики
систем.
26.Сделайте, чтобы на графике для каждой
функции были отмечены:
 максимум
 время переходного процесса7
 время нарастания (от 10% до 90%
установившегося значения)
 установившееся значение
7
ПКМ – Plot Types – Step
ПКМ – Characteristics:
 Peak Response
 Settling Time
 Rise Time
 Steady State
По умолчанию в MATLAB время переходного процесса определяется для 2%-ного отклонения от
установившегося значения.
29
27.Щелкая мышью по меткам-кружкам,
выведите на экран рамки с численными
значениями этих параметров и
расположите их так, чтобы все числа
были видны.
28.Экспортируйте построенный график в
отдельное окно.
29.Скопируйте график в буфер обмена в
формате векторного метафайла.
30.Вставьте график из буфера обмена в
отчет (Microsoft Word).
File – Print to Figure
print -dmeta
ПКМ - Вставить
31.Закройте окно LTIViewer.
32.Создайте массив частот для построения
частотной характеристики8 (100 точек в
1
2
интервале от 10 до 10 с равномерным
распределением на логарифмической
шкале).
w = logspace(-1, 2,
100);
33.Рассчитайте частотную характеристику
исходной системы 9…
r = freqresp ( f, w );
r = r(:);
34.… и постройте ее на осях с
логарифмическим масштабом по оси
абсцисс.
semilogx ( w, abs(r) )
35.Скопируйте график в буфер обмена в
формате векторного метафайла.
print -dmeta
36.Вставьте график из буфера обмена в
отчет (Microsoft Word). Объясните, где
на графике можно найти коэффициент
усиления в статическом режиме и как
определить полосу пропускания
системы.
ПКМ – Вставить
37.Закройте все лишние окна, кроме
командного окна MATLAB.
Точка с запятой в конце команды подавляет вывод на экран результата выполнения. Это удобно при работе
с большими массивами.
9
Частотная характеристика возвращается в виде трехмерного массива, в котором каждый элемент имеет 3
индекса: строка, столбец (для многомерных моделей) и номер точки частотной характеристики. Для
системы с одним входом и одним выходом команда r = r(:); преобразует эти данные в в обычный
одномерный массив.
8
30
38.Постройте сигнал, имитирующий
[u,t] =
прямоугольные импульсы единичной
амплитуды с периодом 4 секунды (всего gensig('square',4);
5 импульсов).
39.Выполните моделирование и постройте
на графике сигнал выхода системы f
при данном входе.
lsim (f, u, t)
40.Скопируйте график в буфер обмена в
формате векторного метафайла.
print -dmeta
41.Вставьте график из буфера обмена в
отчет (Microsoft Word).
ПКМ – Вставить
Таблица коэффициентов
Вариант
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
n1
n2
1.0
1.1
1.2
1.3
1.4
1.5
1.6
1.7
1.8
1.9
2.0
1.10
1.54
1.08
1.04
-1.54
-0.90
0.80
1.36
-1.98
-0.76
0.60
n0
d2
d1
d0
3.0000
3.1600
1.2000
2.8000
2.9200
1.2000
2.3727
2.2264
0.9091
2.1909
2.0264
0.9091
1.8333
1.5278
0.6944
1.6667
1.3611
0.6944
1.3286
0.8959
0.4592
1.1857
0.7673
0.4592
1.2000
0.7644
0.3556
1.3333
0.8711
0.3556
1.2000
0.7406
0.2734
0.100
0.495
0.096
0.091
0.252
-0.240
-0.224
0.204
0.432
-0.399
-0.360
31
12.
13.
14.
15.
16.
17.
18.
19.
20.
2.1
2.2
2.3
2.4
2.5
2.6
2.7
2.8
2.9
1.68
-2.42
-0.46
0.24
2.25
0.26
-0.27
0.28
3.19
0.315
1.3250
0.8281
0.2734
1.3059
0.7696
0.2076
1.4235
0.8401
0.2076
1.3889
0.7531
0.1543
1.5000
0.8086
0.1543
1.2421
0.6139
0.1108
1.1368
0.5717
0.1108
0.8000
0.3700
0.0500
0.7000
0.3500
0.0500
0.616
-0.552
-0.480
0.500
-0.780
-0.810
-0.840
0.870
Контрольные вопросы к защите
1. Что такое
 передаточная функция
 нули и полюса передаточной функции
 импульсная характеристика (весовая функция)
 переходная функция
 частотная характеристика
 модель в пространстве состояний
 модель вида «нули-полюса»
 коэффициент усиления в статическом режиме
 полоса пропускания системы
 время переходного процесса
 частота среза системы
 собственная частота колебательного звена
 коэффициент демпфирования колебательного звена
2. В каких единицах измеряются
32
 коэффициент усиления в статическом режиме
 полоса пропускания системы
 время переходного процесса
 частота среза системы
 собственная частота колебательного звена
 коэффициент демпфирования колебательного звена
3. Как связана собственная частота с постоянной времени колебательного
звена?
4. Может ли четверка матриц
2 1
1
1


A   1  3  1, B  0, C  1 2, D  0
 2
0
2
2 
быть моделью системы в пространстве состояний? Почему? Какие
соотношения между матрицами должны выполняться в общем случае?
5. Как получить краткую справку по какой-либо команде MATLAB?
6. В чем разница между командами MATLAB
who и whos
clear all и clc
2s  3
7. Как ввести передаточную функцию F ( s)  s 2  4s  5 ?
8. Как влияет изменение коэффициента прямой передачи (матрицы D в
модели в пространстве состояний) на статический коэффициент усиления?
9. Какие возможности предоставляет модуль LTIViewer?
10.Что можно сказать об импульсной характеристике системы f_ss? Почему
она не была построена верно?
11.Как найти
 коэффициент усиления в установившемся режиме по АЧХ
 полосу пропускания системы по АЧХ
12.Как скопировать график из окна MATLAB в другую программу?
3
3
13.Как построить массив из 200 значений в интервале от 10 до 10 с
равномерным распределением на логарифмической шкале?
14.Какие величины откладываются по осям на графике АЧХ?
Отчет по лабораторной работе № 1
Исследование разомкнутой линейной системы
Выполнили:
студенты гр. ЕС-11 Иванов И.И., Петров П.П.
33
Проверил:
к.т.н., доцент Сидоров К.К.
Вариант
20
1. Описание системы
Исследуется система, описываемая математической моделью в виде
передаточной функции
2.9s 2  3.19s  0.87
F ( s)  3
s  0.7 s 2  0.35s  0.05
2. Результаты исследования
 адрес файла tf.m:
E:\MAT\LAB\toolbox\control\control\@tf\tf.m
 нули передаточной функции
-0.6000
-0.5000
 полюса передаточной функции
-0.2500 + 0.4330i
-0.2500 - 0.4330i
-0.2000
 коэффициент усиления звена в установившемся режиме
k = 17.4000
 полоса пропускания системы
b = 0.4808 рад/сек
 модель системы в пространстве состояний
a =
-0.7000
-0.1750
-0.0500
2.0000
0
0
0
0.5000
0
c = 1.4500
0.7975
0.4350
b =
2
0
0
34
d = 0
 статический коэффициент усиления после изменения матрицы D
k1 = 18.4000
связь между k и k1 объясняется тем, что …
 модель в форме «нули-полюса»
2.9 (s+0.6) (s+0.5)
---------------------------(s+0.2) (s^2

+ 0.5s + 0.25)
коэффициенты демпфирования и частоты среза
Полюс передаточной
функции
Собственная
Постоянная Коэффициент
частота,
времени, сек демпфирования
рад/сек
-0.2000
-0.2500 +
0.4330i
-0.2500 0.4330i
0.2000
0.5000
0.5000
5
2
2
1.0000
0.5000
0.5000
 Импульсные характеристики систем f и f_ss получились,
одинаковые, потому что …
 Переходные процессы исходной и модифицированной систем
Step Response
20
System: f_ss
Final Value: 18.4
System: f
Final Value: 17.4
System: f_ss
Settling Time (sec): 17.4
18
System: f_ss
Rise Time (sec): 5.14
System: f
Settling Time (sec): 17.4
16
System: f
Rise Time (sec): 5.14
14
Amplitude
12
10
8
6
4
2
0
0
5
10
15
Time (sec)
20
25
30
 амплитудная частотная характеристика
35
18
16
14
12
10
8
6
4
2
0
-1
10
0
10
1
10
2
10
 для того, чтобы найти статический коэффициент усиления по АЧХ,
надо …
 для того, чтобы найти полосу пропускания по АЧХ, надо …
 реакция на сигнал, состоящий из прямоугольных импульсов
Лабораторная работа № 2
Проектирование регулятора для линейной системы
(краткие теоретические сведения)
Модели соединений систем
Для построения моделей соединений систем в MATLAB используются
знаки арифметических действий. Эти операции перегружены, то есть,
переопределены специальным образом для объектов классов tf, ss и zpk.
Введем исходные модели, с которыми будем выполнять все операции:
>> f = tf(1, [1 1]);
>> g = tf(1, [2 1]);
 параллельное соединение
36
>> w = f + g
Transfer function:
3 s + 2
--------------2 s^2 + 3 s + 1
 последовательное соединение
>> w = f * g
Transfer function:
1
--------------2 s^2 + 3 s + 1
 контур с отрицательной обратной связью
>> w = feedback(f, g)
Transfer function:
2 s + 1
--------------2 s^2 + 3 s + 2
Можно вычислить эту передаточную функцию и так:
>> w = f / (1 + g*f)
37
Transfer function:
2 s^2 + 3 s + 1
----------------------2 s^3 + 5 s^2 + 5 s + 2
Этот результат может показаться неожиданным. Дело в том, что обе
передаточных функции имеют первый порядок, то есть, описываются
дифференциальным уравнением (ДУ) первого порядка. Поэтому вся
система должны описываться второго порядка, а мы получили третий.
Чтобы разобраться в этом, преобразуем модель к форме «нули-полюса»:
>> w_zpk = zpk( w )
Zero/pole/gain:
(s+1) (s+0.5)
----------------------(s+1) (s^2
+ 1.5s + 1)
Видно, что числитель и знаменатель передаточной функции содержат
общий множитель s+1, который можно сократить, и остается система
второго порядка. Для этого надо построить минимальную реализацию,
сократив общие множители:
>> w = minreal ( w )
Transfer function:
s + 0.5
--------------s^2 + 1.5 s + 1
Эта передаточная функция совпадает с той, что выдает функция feedback.
 контур с положительной обратной связью
38
>> w = feedback(f, -g)
или
>> w = feedback(f, g, 1)
или
>> w = minreal ( f/(1 - g*f))
Transfer function:
2 s + 1
----------2 s^2 + 3 s
Корневой годограф
Многие важные свойства системы (например, быстродействие,
перерегулирование)
определяются
расположением
корней
характеристического уравнения на комплексной плоскости.
Простейший способ коррекции системы – применить П-регулятор
(усилитель с коэффициентом k ), который изменяет коэффициент усиления
разомкнутой системы и расположение этих корней. При изменении k от 0 до

корни описывают кривые, которые называются корневым годографом10.
С помощью модуля SISOTool (сокращение SISO=Single Input Single
Output обозначает систему с одним входом и одним выходом) можно
выбирать нужное расположение корней (и соответствующий коэффициент
усиления), «перетаскивая» их мышкой. Заметим, что при перемещении
одного корня смещаются и все остальные, поскольку система имеет одну
степень свободы – изменяющийся коэффициент усиления контура.
10
Этим термином также называется совокупность траекторий, которые описывают корни
характеристического уравнения при изменении любого числового коэффициента в системе.
39
Root Locus Editor (C)
1.5
0.89
0.81
0.7
0.56
0.38
0.2
0.95
1
0.988
Imag Axis
0.5
3.5
3
0
-0.5
2.5
2
1.5
1
0.5
0.988
-1
0.95
0.89
-1.5
-3.5
-3
0.81
-2.5
0.7
-2
0.56
-1.5
0.38
-1
0.2
-0.5
0
Real Axis
Корни при выбранном коэффициенте усиления k изображаются
фиолетовыми квадратиками. Концы годографа для каждого корня помещены
крестиком ( k  0 ) и кружком ( k   ). Сетка (для ее вывода надо нажать ПКМ
на графике и выбрать пункт Grid) показывает линии равных показателей
колебательности (коэффициента демпфирования, damping factor) – прямые,
выходящие из начала координат, и линии равных собственных частот
(natural frequency) – окружности с центром в начале координат.
В контекстном меню (ПКМ) можно установить ограничения на
расположение полюсов так, чтобы перерегулирование и время переходного
процесса не превышали заданных. Для этого надо выбрать пункт Design
Constraints – New и выбрать в выпадающем списке Percent Overshoot
(перерегулирование в процентах) или Settling Time (время переходного
процесса с 2%-ной точностью). Ограничения показываются в виде границ
запрещенных зон.
Root Locus Editor (C)
1.5
0.89
0.81
0.7
0.56
0.38
0.2
0.95
1
Imag Axis
0.5
0.988
3.5
3
0
-0.5
2.5
2
1.5
1
0.5
0.988
-1
0.95
0.89
-1.5
-3.5
-3
0.81
-2.5
0.7
-2
-1.5
0.56
-1
0.38
-0.5
0.2
0
Real Axis
40
Время переходного процесса оценивается по степени устойчивости 
замкнутой системы. Так называется расстояние от самого правого корня
характеристического уравнения до мнимой оси. Обычно принимается (как
для апериодического звена)
Tïï  
ln 


3,912

,
где  – величина допустимой ошибки (в MATLAB она принимается равной
2% или 0,02). Таким образом, при ограничении только на Tïï
область
3,912
допустимого расположения корней pi есть полуплоскость Re pi   T .
Требования к коэффициенту демпфирования добавляют ограничение в
виде сектора
  max
i
1  2
Im pi

Re pi
2 .
Число  называют колебательностью или степенью колебательности
замкнутой системы. Каждому заданному 
соответствует некоторое
значение  .
Перерегулирование (в процентах) оценивается по формуле
 e


1 2
100% .
Каждому перерегулированию соответствует свое значение  и свой сектор,
ограничивающий расположение корней.
Таким образом, при использовании двух ограничений (первое – на Tïï ,
второе – на  или  ) область допустимого расположения корней
представляет собой усеченный сектор в левой части рисунка. Если
перетаскиванием корней (то есть, изменением усиления контура) не удается
расположить полюса в этой области, надо усложнять регулятор, добавляя его
нули и полюса (ПКМ – Add Pole/Zero или ПКМ – Edit Compensator).
Синтез с помощью ЛАФЧХ
41
В отечественной литературе классическим стал метод синтеза
корректирующих устройств с помощью логарифмических амплитуднофазовых частотных характеристик (ЛАФЧХ) разомкнутой системы
(диаграмм Боде по зарубежной терминологии).
Пусть разомкнутая система имеет передаточную функцию W (s) .
ЛАФЧХ включает в себя две кривые – амплитудную частотную
характеристику (ЛАЧХ)
Lm ()  20 lg W ( j)
и фазовую (ЛФЧХ)
 ( )  arg W ( j ) .
Угловая частота (в рад/сек) на оси ординат откладывается в
логарифмическом масштабе. При этом так называемые асимптотические
ЛАЧХ представляют собой отрезки прямых, это значительно облегчает
ручное построение.
Разложив числитель и знаменатель передаточной функции W (s) на
сомножители первого и второго порядков, можно представить ЛАЧХ
системы как сумму ЛАЧХ элементарных звеньев (апериодических,
колебательных, интегрирующих, дифференцирующих и т.д.) Для
W ( j ) 
N1 ( j ) ...N n ( j )
D1 ( j ) ...Dq ( j )
получаем, используя свойства логарифма,
20 lg W ( j )  20 lg N1 ( j )  ...  20 lg N n ( j )
 20 lg D1 ( j )  ...  20 lg Dn ( j )
.
Раньше вручную строили асимптотические ЛАЧХ, суммируя ЛАЧХ
отдельных звеньев. В среде MATLAB существуют средства, позволяющие
автоматизировать построение точных (не асимптотических) ЛАФЧХ. При
этом можно использовать накопленный за многие годы классический опыт
проектирования.
Низкочастотная
часть
ЛАЧХ
определяет
точность
системы,
среднечастотная (вблизи частоты среза  c ) – устойчивость и качество
переходного процесса, высокочастотная – чувствительность к помехам. Если
42
система содержит интегратор, низкочастотная часть имеет ненулевой наклон
(20 дБ на декаду для одного интегратора), постоянный сигнал отслеживается
без установившейся ошибки. Для системы с двумя интеграторами ЛАФЧХ
имеет в области низких частот наклон 40 дБ на декаду, без установившейся
ошибки отслеживается не только постоянный, но и линейно возрастающий
сигнал. Более сложные требования к точности приводят к тому, что ЛАЧХ не
должна заходить в некоторые запретные области.
Open-Loop Bode Editor (C)
50
Запас устойчивости по амплитуде,
Gain Margin (G.M.)
c
Magnitude (dB)
0
-50
-100
Запас устойчивости по фазе, Phase
Margin (P.M.)
G.M.: 21.8 dB
Freq: 1.73 rad/sec
Stable loop
-150
Phase (deg)
-90
-180
P.M.: 83.8 deg
Freq: 0.162 rad/sec
-270
-2
10
-1
10
0
10
Frequency (rad/sec)
1
10
2
10
Запас устойчивости по амплитуде g m (в дБ) – это расстояние от ЛАЧХ
до горизонтальной прямой Lm  0 дБ на частоте, на которой фазовая

характеристика пересекает прямую   180 . На этой частоте система должна
иметь коэффициент усиления меньше 1 (или Lm ( )  0 ).
Запас устойчивости по фазе  m (в градусах) – это расстояние от

частотной характеристики до горизонтальной прямой   180 на частоте
среза  c . На этой частоте фазовая характеристика должна иметь значение

больше  180 .
Допустимым считается запас по амплитуде не менее 6 дБ и запас по фазе
не менее 30 градусов.
«Подъем» ЛАЧХ означает увеличение коэффициента усиления контура,
фазовая характеристика не изменяется. Точность системы (при отработке
низкочастотных сигналов) повышается, однако увеличивается и влияние
высокочастотных помех. Поскольку частота среза увеличивается,
43
повышается быстродействие системы. При этом переходные процессы
приобретают выраженный колебательный характер, запасы устойчивости
уменьшаются, при дальнейшем увеличении коэффициента усиления теряется
устойчивость.
Обычно требуется, чтобы система имела высокую точность (большой
коэффициент усиления по контуру) для низких частот и подавляла
высокочастотные помехи (имела низкое усиление в области высоких частот).
Частота среза выбирается исходя из требований к быстродействию. Таким
образом, типичная ЛАЧХ имеет вид, показанный на рисунке. Серым цветом
показаны запретные области, которые определяются требованиями к
точности и подавлению помех.
12-16 дБ
12-16 дБ
Для
обеспечения
хорошего
качества
переходных
процессов
рекомендуется, чтобы ЛАЧХ пересекала ось L  0 с наклоном 20 дБ/дек. Это
объясняется тем, что наклон 20 дБ/дек, соответствующий апериодическому
звену, приводит к наименьшей колебательности переходного процесса.
Точки перехода (излома асимптотической ЛАЧХ) от низкочастотной части к
среднечастотной и далее к высокочастотной должны отстоять от оси L  0 на
12-16 дБ.
В общем случае строится желаемая ЛАЧХ Læ ( j ) , удовлетворяющая
требованиям к системе, затем ЛАЧХ последовательного корректирующего
устройства определяется как разность
существующей разомкнутой системы.
между
и
Læ ( j )
и
ЛАЧХ
Точность в установившемся режиме
44
Пусть передаточную функцию разомкнутой системы можно представить
в виде
W (s)  KW1 (s) ,
где передаточная функция W1 (s) обладает свойством lim s0 W1 (s)  1. Тогда
передаточная функция замкнутой системы по ошибке равна
  (s) 
1
1  KW1 ( s) .
Установившееся значение ошибки при постоянном входном сигнале x(t )  x0 ,
x
0
имеющем изображение по Лапласу X ( s )  s , может быть вычислено по
теореме о конечном значении:
   lim  (t )  lim s   ( s) X ( s) 
t 
s 0
x0
1 K .
Таким образом, при увеличении коэффициента усиления K ошибка
уменьшается (однако запас устойчивости также уменьшается и система
может стать неустойчивой). Величина
K
называется добротностью
системы. При любом конечном K в такой системе ошибка будет конечной.
Для линейно возрастающего сигнала ошибка будет линейно возрастать.
Теперь пусть
W (s) 
K
W1 ( s )
,
s
где  – целое число и lim s0 W1 (s)  1.. Тогда для всех входных сигналов вида
x(t )  x0  x1t  x2 t 2  ...  x 1t 1
система будет обеспечивать нулевую установившуюся ошибку при любых
значениях коэффициентов x0 ,...x 1 . Таким образом, при   0 система
отслеживает постоянный сигнал без установившейся ошибки. Такие системы
называют астатическими.
Число  называется порядком астатизма. Для сигнала
x(t )  x t ,
X (s) 
 ! x
s 1
45
установившаяся ошибка равна
 
 ! x
K
Выше рассмотрен случай астатизма по отношению к задающему
воздействию. Аналогично может идти речь об астатизме по отношении к
возмущающему воздействию.
Простейшие типы регуляторов
П-регулятор. Простейшие пропорциональный регулятор (П-регулятор)
представляет собой обычный усилитель с передаточной функцией
C (s)  K c .
ПД-регулятор. Для улучшения качества регулирования и повышение
быстродействия в закон управления вводят производную от сигнала ошибки,
так что передаточная функция получающегося пропорциональнодифференциального регулятора (ПД-регулятора) может быть представлена в
виде
C (s)  K c 1  TD s 
,
где TD – постоянная времени дифференцирующего звена. На практике
реализовать идеальное дифференцирование невозможно, так как частотная
характеристика звена бесконечно увеличивается на высоких частотах.
Поэтому используют дифференцирующее звено с дополнительным фильтром

T s 
C ( s)  K c 1  D  .
 Tv s  1 
Здесь постоянная времени фильтра Tv обычно в 3-10 раз меньше, чем TD .
Чрезмерное увеличение TD может привести к неустойчивости системы,
уменьшение этой величины затягивает переходный процесс.
ПИД-регулятор. В отличие от ПД-регулятора, он содержит интегратор
и система становится астатической как по задающему воздействию, так и по
возмущению (то есть, постоянное возмущение полностью компенсируется).
Его передаточная функция имеет вид
46

T s
1 

C (s)  K c 1  D 
.
 Tv s  1 TI s 
где TI – постоянная времени интегрирующего звена. При увеличении TI
переходный процесс затягивается, при уменьшении – уменьшается запас
устойчивости, переходный процесс приобретает выраженный колебательный
характер, при дальнейшем уменьшении TI теряется устойчивость.
С помощью правильно настроенного ПИД-регулятора в большинстве
случаев удается обеспечить выполнение всех требований к системе. В силу
своей простоты, они получили самое широкое распространение. По
статистике более 90% всех промышленных регуляторов представляют собой
именно ПИД-регуляторы.
Лабораторная работа № 2
Проектирование регулятора для линейной системы
(ПРАКТИЧЕСКАЯ ЧАСТЬ)
Цели работы
 освоение методов проектирования регулятора для одномерной
линейной непрерывной системы с помощью среды MATLAB
Задачи работы
 научиться строить модели соединений линейных звеньев
 научиться использовать модуль SISOTool для проектирования
простейших регуляторов
Оформление отчета
Отчет по лабораторной работе выполняется в виде связного (читаемого)
текста в файле формата Microsoft Word (шрифт основного текста Times New
Roman, 12 пунктов, через 1,5 интервала, выравнивание по ширине). Он
должен включать
 название предмета, номер и название лабораторной работы
 фамилию и инициалы авторов, номер группы
47




фамилию и инициалы преподавателя
номер варианта
краткое описание исследуемой системы
результаты выполнения всех пунктов инструкции, которые выделены
серым фоном (см. ниже): результаты вычислений, графики, ответы на
вопросы.
При составлении отчета рекомендуется копировать необходимую
информацию через буфер обмена из рабочего окна среды MATLAB. Для этих
данных используйте шрифт Courier New, в котором ширина всех символов
одинакова.
Описание системы
В работе рассматривается система стабилизации судна на курсе. Ее
структурная схема показана на рисунке.
привод
регулятор
+
–
C(s)
–
R0(s
объект
P(s)
H(s
измерительная
система
Структурная схема системы стабилизации судна на курсе
Линейная математическая модель, описывающая рыскание судна, имеет
вид
   y
y 

где

1
K
y 

Ts
Ts
– угол рыскания (угол отклонения от заданного курса),
скорость вращения
вокруг вертикальной оси,

K
– угловая
– угол поворота
вертикального руля относительно положения равновесия,
времени,
y
Ts
– постоянная
– постоянный коэффициент, имеющий размерность рад/сек.
48
Передаточная функция от угла поворота руля к углу рыскания запишется в
виде
P( s) 
K
s (Ts s  1) .
Привод (рулевая машина) приближенно моделируется как интегрирующее
звено
R0 ( s ) 
1
TR s ,
охваченное единичной отрицательной обратной связью.
Для измерения угла рыскания используется гирокомпас, математическая
модель которого записывается в виде апериодического звена первого порядка
с передаточной функцией11
H (s) 
1
Toc s  1 ,
Инструкция по выполнению работы
Основная часть команд вводится в командном окне среды MATLAB. Команды,
которые надо применять в других окнах, обозначены иконками
соответствующих программ.
Этап выполнения задания
Команды MATLAB
42.Введите передаточную функцию
K
модели судна P( s )  s (Ts s  1) как
P = tf ( K, [Ts 1 0] )
объект tf.
43.Введите передаточную функцию
интегрирующего звена
R0 ( s ) 
1
TR s .
44.Постройте передаточную функцию
рулевого устройства, замкнув
интегратор единичной отрицательной
обратной связью.
11
Численные значения K ,
Ts ,
R0 = tf ( 1, [TR 0] )
R = feedback ( R0, 1 )
T
TR и oc надо взять из таблицы в конце файла.
49
45.Постройте передаточную функцию
последовательного соединения
объекта с приводом.
G = P * R
46.Постройте переходную
характеристику для полученной
модели и скопируйте ее в отчет через
буфер обмена. Объясните, почему
функция бесконечно возрастает и
стремится к прямой. Каков
коэффициент наклона этой прямой?
Закройте окно с графиком.
step ( G )
47.Постройте передаточную функцию
измерительного устройства
1
H (s) 
Toc s  1 .
H = tf ( 1, [Toc 1] )
48.Постройте передаточную функцию
разомкнутого контура.
L = G * H
49.Постройте ЛАФЧХ разомкнутой
системы12.
bode ( L )
50.Отметьте точки, определяющие
пересечение ЛАЧХ с прямой 0 дБ и
пересечение ЛФЧХ с прямой -1800.
51.Определите, является ли замкнутая
система устойчивой? Каковы запасы
устойчивости по амплитуде (Gain
margin) и фазе (Phase margin)? Какой
регулятор неявно используется в этом
случае? Скопируйте график ЛАФЧХ
в отчет.
52.Найдите максимальный коэффициент
усиления разомкнутой системы.
Объясните этот результат.
53.Закройте окно с ЛАФЧХ и запустите
модуль SISOTool.13
12
13
ПКМ – Characteristics –
Stability (Minimum Crossing)
ЛКМ на метках-кружках
ПКМ – Characteristics –
Peak Response
sisotool
В зарубежной литературе ЛАФЧХ называют диаграммой Боде.
SISO = Single Input Single Output, система с одним входом и выходом.
50
54.Импортируйте передаточную
функцию G как модель объекта
(Plant) и H как модель датчика
(Sensor). Блоки F (предфильтр) и C
(регулятор) оставьте без изменений
(равными 1).
55.Отключите изображение корневого
годографа так, чтобы в окне осталась
только ЛАФЧХ.
56.Для того, чтобы сразу видеть
изменения переходных процессов,
запустите LTIViewer14 из верхнего
меню окна SISOTool. Расположите
два окна рядом, чтобы они не
перекрывали друг друга.
57.Оставьте только график переходного
процесса на выходе, отключив вывод
сигнала управления.
File - Import
View – Root Locus
(отключить)
Analysis –
Response to Step Command
ПКМ – Systems –
Closed loop r to u
58.Определите перерегулирование  и
время переходного процесса T p 15.
Скопируйте график в отчет.
ПКМ – Characteristics –
 Peak Response
 Settling Time
59.Перейдите в окно SISOTool.
Определите коэффициент усиления,
при котором перерегулирование
примерно равно 10%. Как изменилось
время переходного процесса? Каковы
запасы устойчивости в этом случае?
Скопируйте график в отчет.
60.Перейдите в окно среды MATLAB и
введите передаточную функцию
пропорциональнодифференциального (ПД) регулятора
перетаскивание мышью
ЛАЧХ,
редактирование в поле
Current Compensator
Cpd = 1 + tf ( [Ts 0], [Tv 1] )
Ts
C pd ( s )  1  s
Tv  1
сек,
Tv s  1 , где
а Ts – постоянная времени судна.
14
15
LTI = Linear Time-Invariant, линейная стационарная система.
По умолчанию в Matlab время переходного процесса определяется для 2%-ного отклонения от
установившегося значения.
51
61.Перейдите в окно SISOTool.
Импортируйте регулятор Cpd как
базовую модель для блока C.
62.Определите дополнительный
коэффициент усиления, при котором
перерегулирование примерно равно
10%. Найдите время переходного
процесса и запасы устойчивости.
Сравните пропорциональный и ПДрегуляторы. Скопируйте в отчет
график переходного процесса.
63.Определите дополнительный
коэффициент усиления, при котором
время переходного процесса
минимально. Скопируйте в отчет
график переходного процесса.
64.Экспортируйте полученный
регулятор в рабочую область
MATLAB.
File – Import, Cpd -> C
перетаскивание мышью
ЛАЧХ,
редактирование в поле
Current Compensator
перетаскивание мышью
ЛАЧХ,
редактирование в поле
Current Compensator
File – Export
в столбце Export as
сменить имя Cpd на C
кнопка Export to
workspace
65.Постройте передаточную функцию
полученной замкнутой системы.
Подумайте, почему получилось такое W = C*G / (1 + C*G*H)
громоздкое выражение. Каков должен
быть порядок передаточной функции?
66.Постройте минимальную реализацию
передаточной функции W.
W = minreal(W)
67.Определите полюса передаточной
функции замкнутой системы. Что
означает близость некоторых
pole ( W )
полюсов к мнимой оси? Верно ли, что
в этом случае будет малый запас
устойчивости?
52
68.Найдите коэффициент
усиления
системы в установившемся режиме.
Объясните результат. Есть ли у такой
системы статическая ошибка при dcgain ( W )
отслеживании постоянного сигнала?
Почему?
А
для
линейно
возрастающего сигнала?
69.Как изменится статический коэффициент усиления, если модель датчика
примет вид
H (s) 
2 K oc
Toc  1 ?
70.Постройте минимальную реализацию
передаточной функции замкнутой
системы от входа к сигналу
управления (выходу регулятора).
Wu = minreal(C/ (1 +
C*G*H))
71.Постройте изменение сигнала
управления при единичном
ступенчатом входном сигнале и
скопируйте график в отчет.
Объясните, почему сигнал
управления стремится к нулю.
step ( Wu )
Таблица коэффициентов
Вариант
Ts , сек
K
, рад/сек
TR , сек
Toc , сек
21.
16.0
0.06
1
1
22.
16.2
0.07
2
2
23.
16.4
0.08
1
3
24.
16.6
0.07
2
4
25.
16.8
0.06
1
5
26.
17.0
0.07
2
6
27.
17.2
0.08
1
1
28.
17.4
0.07
2
2
29.
17.6
0.06
1
3
53
30.
17.8
0.07
2
4
31.
18.0
0.08
1
5
32.
18.2
0.09
2
6
33.
18.4
0.10
1
1
34.
18.6
0.09
2
2
35.
18.8
0.08
1
3
36.
19.0
0.07
2
4
37.
19.2
0.08
1
5
38.
19.4
0.09
2
6
39.
19.6
0.10
1
1
40.
18.2
0.0694
2
6
Контрольные вопросы к защите
15.См. все вопросы к работе № 1.
16.Что означают сокращения SISO, LTI?
17.Как получить передаточную функцию по линейным дифференциальным
уравнениям системы?
18.Как ввести передаточную функцию в окне MATLAB?
19.С помощью каких операций (функций) строятся в MATLAB модели
параллельного и последовательного соединений, системы с обратной
связью?
20.Как построить ЛАФЧХ разомкнутой системы?
21.Как определяются запасы устойчивости по амплитуде и по фазе? Что
означают эти величины? В каких единицах они измеряются?
22.Какие возможности предоставляет модуль SISOTool?
23.Что такое
 корневой годограф
 перерегулирование
 время переходного процесса
24.Как влияет увеличение коэффициента усиления контура на ЛАФЧХ?
25.Почему в дифференцирующей части ПД-регулятора используется
дополнительный фильтр в виде апериодического звена с постоянной
времени Tv ?
26.Какие преимущества дает использование ПД-регулятора в сравнении с Прегулятором?
54
27.Как влияет увеличение коэффициента усиления контура на
перерегулирование и время переходного процесса?
28.Как найти порядок передаточной функции замкнутой системы, зная
характеристики всех ее блоков?
29.Связана ли близость полюсов передаточной функции замкнутой системы
к мнимой оси с малым запасом устойчивости?
30.Как зависит статический коэффициент усиления замкнутой системы от
характеристик измерительного устройства?
31.Что такое астатическая система? Что такое порядок астатизма?
55
Отчет по лабораторной работе № 2
Проектирование регулятора для линейной системы
Выполнили:
студенты гр. ЕС-11 Иванов И.И., Петров П.П.
Проверил:
к.т.н., доцент Сидоров К.К.
Вариант
20
3. Описание системы
Исследуется система управления судном по курсу, структурная схема
которой показана на рисунке.
привод
регулятор
+
–
C(s)
объект
R0(s
–
P(s)
H(s
измерительная
система
Движение судна описывается линейной математической моделью в виде
передаточной функции
P( s ) 
K
s (Ts s  1) ,
где K  0.0694 рад/сек, Ts  18.2 сек,
Привод моделируется как интегрирующее звено
R0 ( s ) 
1
TR s ,
TR  2 сек,
охваченное единичной отрицательной обратной связью. Модель
измерительного устройства представляет собой апериодическое звено с
передаточной функцией
H (s) 
1
Toc s  1 ,
Toc  6 сек,
4. Исследование разомкнутой системы
 Передаточная функции рулевого устройства
56
1
2s  1 .
R(s) 
 Передаточная функция последовательного соединения объекта с
приводом
G(s) 
0.0694
36.4s  20.2s 2  s .
3
 Переходная характеристика этой модели:
Step Response
14
12
10
Amplitude
8
6
4
2
0
0
20
40
60
80
100
120
140
160
180
200
Time (sec)
График стремится к наклонной прямой, потому что …
Наклон асимптоты равен …
 ЛАФЧХ разомкнутой системы
Bode Diagram
50
Magnitude (dB)
0
System: Wr
Gain Margin (dB): 7.12
At frequency (rad/sec): 0.0797
Closed Loop Stable? Yes
-50
-100
-150
-90
System: Wr
Phase Margin (deg): 26
Delay Margin (sec): 9.2
At frequency (rad/sec): 0.0493
Closed Loop Stable? Yes
Phase (deg)
-180
-270
-360
-3
10
-2
10
-1
10
0
10
1
10
Frequency (rad/sec)
 Система с регулятором C ( s)  ... устойчива, запасы устойчивости: по
амплитуде – 7,12 дБ, по фазе – 26 градусов.
 Максимальный коэффициент усиления разомкнутой системы равен …
Это объясняется тем, что …
5. Исследование системы с пропорциональным (П-) регулятором
57
 Переходная функция замкнутой системы при C ( s)  ...
Step Response
1.6
1.4
1.2
System: Closed Loop: r to y
I/O: r to y
Settling Time (sec): 305
Amplitude
1
0.8
0.6
0.4
0.2
0
0
50
100
150
200
250
300
350
400
450
500
Time (sec)
 Время переходного процесса Tïï  305 сек, перерегулирование   51% .
 Для обеспечения перерегулирования не более 10% требуется
уменьшить коэффициент усиления регулятора до значения
C ( s)  0.348
 Переходная функция скорректированной замкнутой системы при
C ( s)  0.348
Step Response
1.4
System: Closed Loop: r to y
I/O: r to y
Peak amplitude: 1.1
Overshoot (%): 9.95
At time (sec): 112
1.2
System: Closed Loop: r to y
I/O: r to y
Settling Time (sec): 171
1
Amplitude
0.8
0.6
0.4
0.2
0
0
50
100
150
Time (sec)
200
250
300
 Время переходного процесса Tïï  171 сек,
 Запасы устойчивости: по амплитуде 16,3 дБ, по фазе 57.9 градуса.
6. Исследование системы с пропорционально-дифференциальным (ПД-)
регулятором
 Общий вид передаточной функции регулятора

Ts 
C ( s)  K c 1  s  ,
 Tv  1 
где Ts  18.2 сек, Tv  1 сек,
а коэффициент K c должен быть выбран в процессе проектирования в
соответствии с требованиями к системе.
4.1 Регулятор, обеспечивающий перерегулирование 10%
58
 Для обеспечения перерегулирования 10% требуется выбрать K c  0.942
 Переходная функция скорректированной замкнутой системы
Step Response
1.4
System: Closed Loop: r to y
I/O: r to y
Peak amplitude: 1.1
Overshoot (%): 9.97
At time (sec): 34
1.2
System: Closed Loop: r to y
I/O: r to y
Settling Time (sec): 52.4
1
Amplitude
0.8
0.6
0.4
0.2
0
0
10
20
30
40
50
60
70
80
90
Time (sec)
 Время переходного процесса Tïï  52 сек,
 Запасы устойчивости: по амплитуде 15.9 дБ, по фазе 60.2 градусов.
 В сравнении с П-регулятором, использование ПД-регулятора позволяет
…
4.2 Регулятор, обеспечивающий кратчайший переходный процесс
 Для обеспечения минимального времени переходного процесса
требуется выбрать K c  0.704
 Переходная функция скорректированной замкнутой системы
Step Response
1.4
1.2
System: Closed Loop: r to y
I/O: r to y
Settling Time (sec): 34.5
1
Amplitude
0.8
0.6
0.4
0.2
0
0
10
20
30
40
50
60
70
80
Time (sec)
 Время переходного процесса Tïï  34 сек,
 Запасы устойчивости: по амплитуде 18.4 дБ, по фазе 67.3 градуса.
 Передаточная функция замкнутой системы
0.025771 (s+0.05208) (s+0.1667)
------------------------------------------------------------(s+0.9892) (s+0.5459) (s+0.04826) (s^2
+ 0.1382s + 0.008584)
 Порядок передаточной функции равен 5, потому что …
59
 Полюса передаточной функции
-0.9892
-0.5459
-0.0691 + 0.0617i
-0.0691 - 0.0617i
-0.0483
 Близость полюсов к мнимой оси означает, что … При этом запас
устойчивости …
 Коэффициент усиления системы в установившемся режиме равен …
Это объясняется тем, что …
 При постоянном сигнала установившаяся ошибка …, потому что …
 При линейно возрастающем сигнале установившаяся ошибка …,
потому что …
 При использовании датчика, описываемого моделью
H (s) 
2 K oc
Toc  1 ,
коэффициент усиления в установившемся режиме будет равен …,
потому что …
 Полученная система является астатической, то есть, отслеживает без
ошибки постоянный входной сигнал. Это определяется тем, что …
 При линейно возрастающем сигнале …
 Передаточная функция замкнутой системы от входа к сигналу
управления
13.5168 s (s+0.05208) (s+0.05495) (s+0.1667) (s+0.5)
------------------------------------------------------------(s+0.9892) (s+0.5459) (s+0.04826) (s^2
+ 0.1382s + 0.008584)
 Изменение сигнала управления при единичном ступенчатом входном
сигнале
Step Response
14
12
10
Amplitude
8
6
4
2
0
-2
0
5
10
15
20
25
30
Time (sec)
60
 Сигнал управления стремится к нулю, потому что …
ЛАБОРАТОРНАЯ РАБОТА 3
ДИСКРЕТНОЕ ПРЕОБРАЗОВНАИЕ ФУРЬЕ. СВОЙСТВА.
Цель работы. Практическое изучения вычисления ДПФ. Изучение
свойств ДПФ.
Вопросы для самоподготовки.
1 Прямое дискретное преобразование Фурье (сущность, условия
применения, пример во временной и спектральной областях).
2 Обратное дискретное преобразование Фурье (сущность, пример во
временной и спектральной областях).
3 Свойства дискретного преобразования Фурье.
4 Физическая сущность коэффициентов ДПФ во временной и
спектральной областях (с примерами).
5 Принцип восстановления аналогового сигнала по результатам
цифровой обработки.
6 Связь аналоговой функции во временной области с видом выборки
ДПФ
в
частотной
области
(с примерами).
7 Связь вида выборки во временной области с ее аналоговым
прототипом (с примерами).
8 Определите для заданной выборки во временной области {xk}6 = (0,
1, 4, 9, 16, 25) вид временной функции исходного аналоговогосигнала и
объясните его. Изобразите график.
9 Объясните, какая временная функция соответствует выборке ДПФ в
частотной
области
вида
{Cn}6 = (0, 1, 0, 0, 0, 0). Изобразите и объяснитеграфик аналоговой функции
исходного сигнала x(t).
Спектральный анализ в Матлаб.
61
Целью спектрального анализа сигналов является определение
гармонического спектра этих сигналов, то есть частот гармонических
составляющих сигнала (частотного спектра), амплитуд этих гармонических
составляющих (амплитудного спектра) и их начальных фаз (фазового
спектра). Под статистическим анализом процессов обычно понимают
нахождение такой характеристики их связи как взаимная корреляционная
функция двух процессов, а также связанной с ней частотной характеристики
― взаимной спектральной плотности этих процессов.
Так как в MATLAB все сигналы представлены в виде дискретных
отсчетов, для вычисления спектра сигналов используется дискретное
преобразование Фурье. ДПФ позволяет вычислять дискретные отсчеты
непрерывного спектра сигналов, используя временные отсчеты сигнала. В
системе MATLAB предусмотрены преобразования заданного вектора в
соответствии с дискретными прямым и обратным преобразованиями Фурье.
Это осуществляется с помощью функций fft (Fast Fourier Transformation) и
ifft (Inverse Fast Fourier Transformation). Используя обращения к этим
функциям вида y=fft(x,n) и x=ifft(y,n), можно получить вектор комплексных
отсчетов ДПФ у(к) (в первом случае) и вектор комплексных дискретных
отсчетов сигнала х(n) (во втором случае) по формулам:
1
y k  
N
N
 xne
 j 2
k n
N
;
m 1
n
xn    y k e
j 2
k n
N
.
k 1
Здесь N ― число элементов заданного вектора х(n) (количество отсчетов
дискретного сигнала в выборке), n ― номер отсчета выборки во временной
области), k ― номер отсчета выборки в частотной области.
Вызов функции осуществляется с использованием команды
sf = fft(st,N)
где st – вектор, содержащий временные отсчеты сигнала,
N – количество отсчетов в st.
Результат выполнения функции – вектор sf, вектор комплексных чисел,
содержащий отсчеты ДПФ в спектральной области, с интервалом по частоте
Fs/N, где Fs – частота дискретизации.
В выражениях ДПФ (см. лекции) не содержится указания на реальные
моменты времени или значения частот, в них используются только номера
отсчетов. Для построения спектра сигналов, заданных в определенном
временном масштабе, необходимо знать, с какой частотой брались отсчеты
непрерывного сигнала. Если последовательность отсчетов x(nT) представляет
набор отсчетов, взятых с интервалом дискретизации T = 1/Fs, то частоты
62
анализа, т.е. частоты, которые соответствуют спектральным отсчетам ДФТ,
будут расположены с интервалом по частоте Fs/N.
Первый элемент полученного вектора (в MATLAB нумерация
элементов векторов начинается с единицы) соответствует нулевой частоте,
последний – частоте Fs(N-1)/N, т.е. спектр является симметричным
относительно частоты Fs/2. При этом код MATLAB, позволяющий получить
вектор значений частот для ДПФ размерности N, если частота дискретизации
сигнала равна Fs
f = (0:N-1)/N*Fs;
Так как в работе все входные сигналы являются реальными, для
изображения спектра требуется только первая половина спектральных
отсчетов вектора ДПФ sf (другая половина – симметрична относительно
частоты Fs/2). Вектор значений частот может быть задан в виде
f = 0, Fs/N, 2Fs/N, . . . ,(N/2 - 1)Fs/N
соответствующая команда MATLAB
f = (0 : N/2 - 1)*Fs/N
и для изображения спектра сигнала используется команда
plot(f, abs(sf(1:N/2)).
Для того, чтобы спектр сигнала был расположен симметрично относительно
частоты f = 0 используется команда
sf = fftshift(fft(st, N))
При этом значения частот расположены в диапазоне –Fs/2 до Fs/2
f = (-N/2 : N/2 - 1)*Fs/N
Для изображения двустороннего спектра используется команда
plot(f, abs(sf)).
В качестве примера применения функций fft и ifft получим
спектральную диаграмму одиночного прямоугольного импульса (рис.4.1) с
амплитудой А = 0.75, длительностью 0.25 с. Длительность сигнала выберем Т
= 10 с, а дискрет времени Ts = 0.1 с. Для наглядности построения
воспользуемся процедурой stem.
Ts=0.1; T=10; A=0.75; w=0.5;
t=0:Ts:T; y=A*rectpuls(t,w);
plot(t,y); grid; title('Прямоугольный импульс');
xlabel('Время (с)'); ylabel('y(t)')
63
Прямоугольный импульс
0.8
0.7
0.6
y(t)
0.5
0.4
0.3
0.2
0.1
0
0
1
2
3
4
5
Время (с)
6
7
8
9
10
Рисунок 4.1 – Одиночный прямоугольный импульс
x=fft(y); df=1/T; Fmax=1/Ts; f=0:df:Fmax;
a=abs(x); stem(f,a); grid; title('Модуль fft-преобразования');
xlabel('Частота (Гц)'); ylabel('Модуль')
Модуль fft-преобразования
2.5
2
Модуль
1.5
1
0.5
0
0
1
2
3
4
5
Частота (Гц)
6
7
8
9
10
Рисунок 4.2 – Модуль fft-преобразования прямоугольного импульса
Теперь построим график модуля Фурье-изображения процесса (рис.4.3):
xp=fftshift(x); f1=-Fmax/2:df:Fmax/2; a=abs(xp);
stem(f1,a); grid; title('Частотный спектр');
xlabel('Частота (с)'); ylabel('Модуль')
64
Частотный спектр
2.5
2
Модуль
1.5
1
0.5
0
-5
-4
-3
-2
-1
0
Частота (с)
1
2
3
4
5
Рисунок 4.3 – Спектральная диаграмма прямоугольного импульса
Пример вычисления спектра синусоидального сигнала
clear all%
N=2^10; % Длина блока
fs=1e5; % Частота дискретизации (Hz)
Ts=1/fs; % Интервал дискретизации (s)
t=(0:N-1)*Ts; % Вектор времени (s)
A=2; % Амплитуда сигнала
f0=fs/12; % Частота сигнала (Hz)
phi=-pi/2; % Фаза сигнала (rad)
x= A*cos(2*pi*f0*t + phi);
% Вычисление спектра
X=fft(x)/N; %
Xa=abs(X); % Модуль спектра
Xp=angle(X); % Спектр фаз (rad)
f=fs*(0:N-1)/N; % Вектор значений частот (Hz)
%
figure(1)
subplot(2,1,1)
plot(t,x)
xlim([0 4/f0]);% масштаб по оси частот
title('Сигнал')
xlabel('\с')
subplot(2,1,2)
plot(f,Xa);
%plot(f-fs/2,fftshift(Xa));
%axis([-fs/2 fs/2 0 1.1*max([abs(A0),A/2])])
65
Рисунок 3.2 Результат вычисления спектра синусоиды функцией fft.
Задание на лабораторную работу
Для выполнения лабораторной работы можно использовать
вычислительный скрипт Матлаб dft.m, находящийся в рабочей папке.
Замените исходный сигнал и выполните следующие задания
1. Исследование прямого преобразования Фурье. Сигнал представлен N
отсчетами во времени ( N=2m ), m определено в интервале 2-8. Найти спектр
сигнала, представленного на интервале периодически восемью отсчета8ми.
1.1. { Xk } = (1; 1; 1; 1; 1; 1; 1; 1);
1.2. { Xk } = (0; 0.71; 1; 0.71; 0; -0.71; -1; -0.71);
1.3. { Xk } = (0; 1; 0; -1; 0; 1; 0; -1);
1.4. { Xk } = (1; 1; 0; 0; 0; 0; 0; 0);
1.5. { Xk } = (1; 1; 1; 0; 0; 0; 0; 0).
Зарисовать временные и спектральные диаграммы с указанием величин
отсчетов.
66
2. Исследование обратного преобразования Фурье. Ввести действительные
составляющие спектра X(ώ), полагая что мнимая составляющая Y(w) = 0.
2.1. { Xn } = (1; 0; 0; 0; 0; 0; 0; 0);
2.2. { Xn } = (0; 1; 0; 0; 0; 0; 0; 0);
2.3. { Xn } = (0; 0; 1; 0; 0; 0; 0; 0);
2.4. { Xn } = (1; 1; 0; 0; 0; 0; 0; 0).
Ввести мнимую составляющую Y(w), полагая X(w) = 0.
2.5. { Yn } = (0; 1; 0; 0; 0; 0; 0; 0).
Сравнить результаты с предыдущим опытом (п.2).
3. Исследование применимости теоремы суперпозиции.
Исследование включает в себя проверку равенства спектра отклика
линейной системы на сумму воздействий сумме спектров каждого
воздействия. Для этого следует выполнить следующие операции:
3.1 Найти спектр прямоугольного импульса x(t)
{ Xk } = (1; 1; 0; 0; 0; 0; 0; 0).
Записать действительную Xn, мнимую Yn, составляющие спектра, его
модуль Cn и фазу Qn.
3.2 Найти спектр треугольного импульса y(t)
{ Yk } = (1; 0.75; 0.5; 0.25; 0; 0; 0; 0).
Записать значения Xn, Yn, Cn и Qn.
3.3 Найти сигнал f(t) = x(t) + y(t) ; { fk } = {Xk}+{Yk}.
3.4 Проверить равенство (принцип суперпозиции)
Sf (jw) = Sx(jw) +Sy(jw).
4. Исследование свертки двух сигналов.
4.1 Рассчитать свертку двух сигналов, используемых в п.3.
fn = 1/N  Xk*Yn-k , n=0...N-1.
4.2 Найти спектр свертки Cfn и Qfn.
4.3 Проверить выполнение равенства Sf (jw) = Sx (jw) * Sy (jw).
5. Исследование влияния изменения масштаба сигнала на его спектр:
67
5.1 Найти спектр S1(jw) сигнала (последовательность прямоугольных
импульсов) с амплитудой 0.5В и скважностью 4;
5.2 Увеличить амплитуду сигнала в два раза и найти его спектр S2(jw);
5.3 Проверить выполнение равенства
S2(jw) = 2S1(jw).
ЛАБОРАТОРНАЯ РАБОТА 3
ИЗУЧЕНИЕ ПРАКТИЧЕСКОГО ПРОЕКТИРОВАНИЯ ЦИФРОВЫХ
ФИЛЬТРОВ МЕТОДОМ ВЕСОВЫХ ОКОН В MATLAB.
1.Цель работы
Изучение основ проектирования и моделирования цифровых фильтров
в среде Matlab, пакеты sptool и fdatool. Проведение экспериментального
исследования процесса фильтрации сигналов.
2 Вопросы для подготовке к лабораторной работе.
1 В чем заключается синтез НЦФ методом весовых функций?
2 Каковы основные этапы синтеза НЦФ методом весовых функций?
3 Как находится ИХ НЦФ при синтезе методом весовых функций?
4 От чего зависит порядок (длина ИХ) НЦФ, синтезируемого методом
весовых функций?
5 Приведите выражение для ИХ hd(n), соответствующей заданной
(идеальной) частотной характеристике (ЧХ) Hd(jw). Почему коэффициенты
68
hd(n) разложения заданной ЧХ Hd(jw) в ряд Фурье не могут быть
использованы в качестве коэффициентов синтезируемого НЦФ?
6 Как производится усечение ИХ, соответствующей заданной ЧХ Hd(jw)?
Как проявляется усечение на качестве аппроксимации заданной ЧХ Hd(jw)?
7 К чему приводит усечение ряда Фурье (ИХ hd(n)) с помощью весовых
функций конечной длины?
8 Как выражается ЧХ синтезируемого фильтра через ЧХ весовой функции и
заданную ЧХ?
9 Как связаны параметры ЧХ фильтра с параметрами весовой функции?
10 Какой математический алгоритм обработки реализуют НЦФ?
11 Как вычисляются отсчеты выходного сигнала НЦФ в соответствии с
алгоритмом ДВС?
3. Описание лабораторной работы
3.1 Лабораторная работа реализована на персональном компьютере с
программным обеспечением
MATLAB с применением пакета Signal
Processing, в котором имеется программа FDATool (Filter Design and
Analysis), реализующая графический интерфейс для расчета фильтров и
просмотра их характеристик.
3.2 Запуск системы
Для запуска программных пакетов SPTool и
FDATool нужно
предварительно запустить систему MATLAB. На командной строке системы
MATLAB с одним командным окном необходимо набрать имя программы
>>fdatool
>>sptool
3.3 Проведение работы.
Для изучения фильтрации цифровым фильтром необходимо
выполнить проектирование фильтра по заданным требованиям. Результат
проектирования – отсчеты импульсной характеристики фильтра.
Далее необходимо получить реализацию сигнала, которые будет подан
на вход цифрового фильтра. В Matlab это может быть выполнено простыми
командами:
69
Fs=1e4; Ts=1/Fs; t=[0:Ts:0.5];
F1 = …; F2 = …;
randn('state',0);
x=sin(2*pi*F1*t)+cos(2*pi*F2*t)+0.1*randn(size(t));
Результат расчетов – вектор отсчетов сигнала х – сумма двух
гармонических сигналов с частотами F1 и F2 герц с добавленными
отсчетами нормального шума. Отсчеты сигнала вычислены с частотой
дискретизации 10 кГц.
Далее запустите пакеты sptool и fdatool.
Пакет sptool позволяет выполнять формирование и обработку
различных сигналов во временной и спектральной областях. Вектор отсчетов
сигнала х может быть импортирован в sptool:
Во вкладке меню File/Import выбрать Import to SPTool в котором
выбираются x и Fs в SPTool. Выбрать х в рабочей области Workspace ,
нажмите верхнюю правую стрелку и назовите сигнал sig1. Далее необходимо
добавить значение частоты дискретизации Fs. Нажмите ОК.
В окне Signals можно выбрать сигнал sig1 и нажать на View. В
открывшемся окне отображается временная диаграмма сигнала.
Далее выполняется расчет цифрового полосового фильтра. Параметры
фильтра выбрать так, чтобы выполнить фильтрацию входного сигнала –
выходной сигнал должен содержать только составляющую с частотой F2.
Для этого откройте fdatool и наберите следующие параметры:
f p1 = ….kHz, f p2 = ….kHz
fs1 = ….kHz, fs2 = ….kHz
частота дискретизации Fs= 10 кгц.
Порядок фильтра N
Неравномерность 1 дб.
Нажать на кнопку Design Filter для расчета фильтра filt1.
Можно импортировать уже рассчитанный фильтр.
Следующим шагом является применение рассчитанного фильтра к
сигналу, т.е. непосредственно фильтрация.
70
Выберите исходный сигнал sig1 в списке сигналов. Далее выбирается
рассчитанный фильтр filt1. Нажмите кнопку ”применить” и назовите сигнал
на выходе фильтра sig2.
При помощи программы sptool выполняется сравнение входного и
выходного сигналов фильтра в частотной областях.
В окне SPtool signals выбрать исходный сигнал sig1. В окне Spectra
создать диаграмму spectr1 и открыть окно просмотра спектра.
Нажмите Применить (Apply) для вычисления спектра сигнала sig1.
Выполните аналогичные действия для сигнала на выходе фильтра sig2.
Получите спектр выходного сигнала. Сравните временные диаграммы sig1 и
sig2.
При необходимости измените параметры цифрового фильтра и
проведите вычисления выходного сигнала.
Результаты выполнения работы оформить в виде временных и
спектральных диаграмм входных и выходных сигналов цифрового
фильтра. Укажите параметры фильтра.
ПРИЛОЖЕНИЕ 1
ВЫЧИСЛЕНИЯ В MATLAB
Название системы Matlab произошло от сокращенного – MATrix
LABoratory – матричная лаборатория. Применение матриц как основных
объектов системы способствует резкому уменьшению числа циклов, которые
очень распространены при выполнении матричных вычислений на обычных
языках программирования высокого уровня, и облегчению реализации
параллельных вычислений.
Вычисления в Мatlab
Центральным понятием всех математических систем является
математическое
выражение. Оно задает то, что должно быть вычислено в численном (реже
символьном) виде. Математические выражения строятся на основе чисел,
констант, переменных, операторов, функций и разных спецзнаков.
Специфика MATLAB в том, что математические выражения задаются в виде
3
одной строки. Например, 2 записывается как 2^3.
71
Знак ; (точка с запятой) в конце строки ввода блокирует вывод
результата вычислений на экран, например:
>> 2^3;
Однако специальная переменная ans (от answer – ответ) позволяет вывести
результат вычислений:
>> ans
ans = 8
Простейшие вычисления
>> 3 + 8 % Сложение
ans =
11
>> 12 / 4; % деление
>> ans - 2 % вычитание 2 из последнего результата ans
>>
ans =
1
>> x = 12 / 3;
>> y = x^2 * (12 - ans)
ans =
176
Последовательность
выполнения операций можно изменять при
помощи скобок. Если после выражения ставится оператор ; (точка с запятой),
то результат операции не выводится на экран. Комментарии пишутся в
строке после символа %, строка после символа % игнорируется MATLAB.
Работа с редактором m-файлов
Любую последовательность команд в MATLAB можно оформить в
виде m-файла,
называемого скрипт-файлом. Для создания и редактирования таких файлов
служит специальный редактор m-файлов. Его пустое окно открывается
командой New (Новый файл), которую можно ввести активизацией кнопки с
тем же названием в панели инструментов или из позиции File меню окна
MATLAB.
К примеру, введем такой скрипт-файл вычисления суммы чисел 2 и 3 и
построения графика синусоиды:
2+3
x=0:0.1:15
y=sin(x)
plot(x,y)
72
Введенный файл можно пустить из окна редактора, исполнив команду
Run в позиции Debug (Отладка) меню окна редактора, или набрав имя
файла в командной строке и нажав на Enter. В результате будет вычислено
выражение 2 + 3 и число 5 появится в окне сессии MATLAB. Будет также
построен
в отдельном окне график синусоидальной функции.
Переменные в MATLAB
Переменные – это имеющие имена объекты, способные хранить
некоторые, обычно разные по значению, данные. В зависимости от этих
данных переменные могут быть числовыми или символьными, векторными
или матричными. На языке программирования MATLAB можно задавать
переменным определенные значения. Для этого используется операция
присваивания, вводимая знаком равенства:
Имя-переменной = Выражение.
В MATLAB явное определение переменных не требуется. Определение
происходит автоматически при первоначальном присваивании переменной
значения или при инициализации переменной. Если в процессе вычислений
обращаются к несуществующей переменной, MATLAB выдает сообщение об
ошибке.
Имена переменных и их значения могут быть получены при
помощи команд who или whos, а также в графическом окне Workspace.
Выводятся переменные, их размерности и занимаемый ими объем памяти.
Для удаления ранее определенных переменных из памяти применяют
команду clear (имя переменной).
команда
Help функция
Lookfor символы
whos
описание
Описание функции и
применение
Поиск ключевого слова
в файлах помощи Help
Список применяемых
переменных
пример
>> help sin
>> lookfor inverse
>> whos
Операторы и встроенные функции
MATLAB
Оператор – это специальное обозначение для определенной операции
над данными – операндами. Например, простейшими арифметическими
операторами являются знаки суммы +, вычитания -, умножения * и деления /.
73
Операторы используются совместно с операндами. Например, в выражении
2+3 знак + является оператором сложения, а числа 2 и 3 – операндами
Функции – это имеющие уникальные имена объекты, выполняющие
определенные преобразования своих аргументов и при этом возвращающие
результаты этих преобразований. Возврат результата – отличительная
черта функций. При этом результат вычисления функции с одним выходным
параметром подставляется на место ее вызова, что позволяет использовать
функции в математических выражениях, например функцию sin в 2*sin(pi/2).
Функции в общем случае имеют список аргументов (параметров),
заключенный в круглые скобки. Например, функция Бесселя записывается
как bessel(NU,X). В данном случае список параметров содержит два
аргумента –
NU в виде скаляра и X в виде вектора. Многие функции допускают ряд форм
записи, отличающихся списком параметров. Если функция возвращает
несколько значений, то она записывается в виде
[Y1, Y2,...]=func(X1, X2,...),
где Y1, Y2,... – список выходных параметров и X1, X2,... – список входных
аргументов (параметров).
Математические функции
Функция
exp
Log, Log10, Log2
sqrt
fix
mod
rem
Описание
Экспоненциальная
функция
Натуральный логарифм,
десятичный, по
основанию 2
Квадратный корень из
числа
Целая часть числа
Пример
>> exp(2)
ans = 7.3891
>> log(10)
ans = 2.3026
>> sqrt(25)
ans = 5
>> fix(7.389)
ans = 7
Деление по модулю
>> mod(7,3)
ans = 1
Остаток целочисленного >> rem(12,9)
деления
ans = 3
Зарезервированные символы.
MATLAB содержит ряд символов, которые зарезервированы системой.
Имя
ans
eps
Описание
Сохраненный результат последнего
вычисления
Точность между двумя реальными
74
pi
i/j
Inf
NaN
числами
Число Пи
Мнимая часть комплексного числа
Символ бесконечности
Символ неопределенности
Скрипты и функции
Функции пользователя
Хотя ядро новых версий системы MATLAB содержит уже более 1000
встроенных функций (не считая функций, определенных в десятках пакетов
расширения), всегда может понадобиться какая-то нужная пользователю
функция. Язык программирования системы MATLAB предоставляет ряд
возможностей для задания функций пользователя. Одна из таких
возможностей заключается в применении функции inline, аргументом
которой надо в апострофах задать выражение, задающее функцию одной или
нескольких переменных. В приведенном ниже примере задана функция двух
переменных – суммы квадратов sin(x) и cos(y):
>> sc2=inline('sin(x).^2+cos(y)^.2')
sc2 =
Inline function:
sc2(x,y) = sin(x).^2+cos(y).^2
Можно также задавать свои функции в виде m-файлов. Например,
можно в окне редактора m-файлов (открывается командой New в меню File)
создать m-файл с именем sc2 и листингом:
function y=sc2(x,y)
y=sin(x).^2+cos(y).^2
Записав его на диск, можно командой type sc2 вывести листинг созданной
функции:
>> type sc2
function y=sc2(x,y)
y=sin(x).^2+cos(y).^2
75
Сообщения об ошибках и исправление ошибок
Большое значение при диалоге с системой MATLAB и отладке
программ в ней имеет диагностика ошибок. Рассмотрим ряд примеров,
поясняющих технику диагностики. Введем, к примеру, ошибочное
выражение
>> sqr(2)
и нажмем клавишу ENTER. Система сообщит об ошибке:
??? Undefined function or variable 'sqr' % % Неопределенная функция или
переменная sqr
>> x
??? Undefined function or variable 'x'. % Неопределенная функция или
переменная X
Иногда в ходе вывода результатов вычислений появляется сокращение
NaN (от слов Not a Number – не число). Оно обозначает неопределенность,
например вида 0/0 или Inf/Inf, где Inf – системная переменная со значением
машинной бесконечности. Могут появляться и различные предупреждения
об ошибках (на английском языке). Например, при делении на 0 конечного
числа появляется предупреждение «Warning: Devide by Zero.» («Внимание:
деление на нуль»).
Диапазон чисел, представимых в системе, лежит от 10–308 до 10+308.
В примере
x = 0:pi/20:3*pi;
y = sin(x);
x = 0:pi/40:3*pi;
plot(x,y)
выводится сообщение об ошибке
Error using ==> plot
Vectors must be the same lengths. % векторы должны быть одинаковой
размерности, длины
но команда Plot получает два вектора с разным количеством переменных x и
y.
Следующая ошибка возникает при перемножении матриц.
v1=[2 3 4]; v2=[4 5 6 ];
76
%Вычислим скалярное произведение
c=v1⋅v2
??? Error using ==> mtimes
Inner matrix dimensions must agree.
%Система
выдает
ошибку
перемножаемых матриц .
о
несогласованности
размерностей
Для правильного перемножения нужно транспонировать вторую матрицу.
Операция транспонирования
выполняется с помощью символа " ' ":
v1*v2'
ans =
47.
Применение оператора : (двоеточие)
Очень часто необходимо произвести формирование упорядоченных
числовых последовательностей. Такие последовательности нужны,
например, для создания векторов со значениями абсциссы при построении
графиков или при создании таблиц. Для этого в MATLAB используется
оператор : (двоеточие) в виде:
Начальное_значение : Шаг : Конечное_значение
Данная конструкция порождает возрастающую последовательность чисел,
которая начинается с начального значения, идет с заданным шагом и
завершается конечным значением. Применение этой конструкции резко
уменьшает потребность в задании программных циклов.
Если Шаг не задан, то он принимает значение 1. Если конечное значение
указано меньшим, чем начальное значение, – выдается сообщение об ошибке.
Примеры
применения оператора : даны ниже:
>> 1:5
ans = 1 2 3 4 5
>> i=0:2:10
i = 0 2 4 6 8 10
>> j=10:-2:2
j = 10 8 6 4 2
>> V=0:pi/2:2*pi;
>> V
V = 0 1.5708 3.1416 4.7124 6.2832.
77
Логические операторы
Логические операторы и соответствующие им функции служат для
реализации
поэлементных логических операций над элементами одинаковых по размеру
массивов. Они широко используются в управляющих структурах программ.
Оператор
==
~=
<=
>=
&&
||
~
&
|
Описание
Равно
Не равно
Меньше либо равно
Больше либо равно
Логическое И
Логическое ИЛИ
Логическое НЕ
Поэлементное И
Поэлементное ИЛИ
Пример
>> 1 < 2 % 1 меньше 2?
ans =
1 % Да, результат – логическая единица
>> 2 == 0 % 2 равен 0?
ans =
0 % Нет, результат равен 0
>> 7 > [ 2 10 1 7 ] % Сравнение скалярной величины с векторной
%
ans = % Поэлементное сравнение
1010
>> [ 1 1 1 ] & [ 1 0 1 ] % Полементное И
ans =
101
Комплексные числа
В расчетах с комплексными числами следует помнить, что в MATLAB для
знака мнимой единицы зарезервированы символы I и J
>> z = 3 + j*4 % Формирование комплексного числа
78
z = 3 + 4i
>> re = real(z) % Реальная часть
re = 3
>> im = imag(z) % Мнимая часть
im = 4
>> a = abs(z) % Модуль
a=5
>> phi = angle(z) % Фаза
phi = 0.92730
>> z2 = a*exp(j*phi)
z2 = 3.0000 + 4.0000i
Команда
x = real(z)
y = imag(z)
Описание
Определение реальной
части КЧ
Мнимая часть КЧ
a = abs(z)
Модуль числа Z
phi = angle(z)
Фаза числа Z
Пример
>>real(2+3j)
ans = 2
>> imag(2+3j)
ans = 3
>> abs(-5)
ans = 5
>> angle(1-j)
ans = -0.78540
]
Матрицы и векторы
В Matlab
по умолчанию предполагается, что каждая заданная
переменная – это вектор, матрица или массив. Все определяется конкретным
значением переменной. Например, если задано X=1, то это значит, что X –
это вектор с единственным элементом, имеющим значение 1, а точнее даже
матрица с размером 1×1. Если надо задать вектор из трех элементов, то их
значения следует перечислить в квадратных скобках, разделяя пробелами
или запятыми. Так, например, присваивание
>> V=[1 2 3]
V=123
задает вектор V, имеющий три элемента со значениями 1, 2 и 3 (его можно
считать и матрицей размера 3×1). После ввода вектора система выводит его
на экран дисплея. Заметим, для вектора столбца нужно разделять элементы
знаками «;» (точка с запятой):
>> V=[1; 2; 3]
V=
1
2
79
3
Задание матрицы требует указания нескольких строк и нескольких
столбцов. Для разграничения строк используется знак ; (точка с запятой).
Этот же знак в конце ввода предотвращает вывод матрицы или вектора (и
вообще любой операции) на экран дисплея. Так, ввод
>> M=[1 2 3; 4 5 6; 7 8 9];
задает квадратную матрицу, которую можно вывести:
>> M
M=
123
456
789
Возможен ввод элементов матриц и векторов в виде арифметических
выражений, содержащих любые доступные системе функции, например:
>> V= [2+2/(3+4),exp(5),sqrt(10)];
>> V
V = 2.2857 148.4132 3.1623
Для задания векторов удобно применять команду linspace, которая
позволяет получить вектор значений в определенных пределах с равным
интервалом.
>> x = linspace(5,10,100); % вектор из 100 элементов в диапазоне от 5 до 10
>> x(1:5)
ans =
5.0000 5.0505 5.1010 5.1515 5.2020
Команда linspace может использоваться при задании вектора
значений временных отсчетов или отсчетов частот дискретного спектра.
Для доступа к целым строкам или столбцам матрицы применяют
команду двоеточия “:”, которая заменяет тот или иной индекс
>> A = [ 1 2 3; 4 5 6; 7 8 9 ]
A=
123
456
789
>> A(1,:) = [] % удаление первой строки
80
При умножении матриц следует обращать внимание на то, что число
столбцов первой матрицы должно быть равным числу строк второй
матрицы.
Поэлементное умножение и сложение матриц
x = [1 2 3]
y = [4 5 6]
>> z = x.*y
z=
4 10 18
>> x.\y, x./y
ans =
4.0000 2.5000 2.0000
ans =
0.2500 0.4000 0.5000
Обьединение матриц
>> A = [ 1 2; 3 4 ]; % Матрица размером 2x2
>> B = [ 5 5 ]; % Матрица размером 1x2
>> C = [ A; B ] % Объединение матриц
C=
12
34
55
>> D = [ A B' ]
D=
125
345
Транспонирование матриц
>> B = A'
B=
13
24
Векторизация циклов.
81
Под векторизацией понимается преобразование циклов for и while к
эквивалентным векторным или матричным выражениям. При векторизации
алгоритма ускоряется выполнение M-файла.
Пример
Вот один из способов вычислить 1001 значение функции синуса на
интервале [0 10], используя оператор цикла:
i = 0;
for t = 0:.01:10
i = i + 1;
y(i) = sin(t);
end
Эквивалентная векторизованная форма имеет вид
t = 0:.01:10;
y = sin(t);
В этом случае вычисления выполняются намного быстрее, и такой подход в
системе MATLAB является предпочтительным.
Предварительное выделение памяти.
В системе MATLAB есть возможность для существенного сокращения
времени выполнения программы за счёт предварительного размещения
массивов для выходных данных. Предварительное распределение избавляет
от необходимости изменять массив при увеличении его размеров.
Используйте соответствующие функции предварительного выделения
памяти, как это показано в таблице для различных типов массивовТип
массива
Функция Примеры
Массив чисел
zeros y = zeros(1, 100)
for i = 1:100
y(i) = det(X^i);
end
Массив записей struct data = struct([1 3], 'x', [1 3], 'y', [5 6])
data(3).x = [9 0 2];
data(3).y = [5 6 7];
Массив ячеек
cell B = cell(2, 3)
B{1, 3} = 1:3;
B{2, 2} = 'string';
Предварительное выделение памяти позволяет избежать фрагментации
памяти при работе с большими матрицами. В ходе сеанса работы системы
MATLAB, память может стать фрагментированной из-за работы механизмов
динамического распределения и освобождения памяти. Это может привести к
появлению большого количества фрагментов свободной памяти, и
82
непрерывного пространства памяти может оказаться недостаточно для
хранения какого-либо большого массива.
Графический вывод результатов вычислений
Для наглядного представления результатов работы программы важно
уметь правильно оформлять их. Наиболее емкой формой отображения
информации является графическая. В системе MATLAB для этого имеется
ряд эффективных средств.
Общие требования к представлению графической информации.
Вычислительная программа, создаваемая инженером, в большинстве
случаев предназначена для исследования поведения разрабатываемого
устройства при разных условиях его эксплуатации и различных значениях
его конструктивных параметров или для расчета определенных параметров
его поведения. Информация, получаемая в результате выполнения
вычислительной инженерной программы, как правило, имеет форму ряда
чисел, каждое из которых отвечает определенному значению конкретного
параметра (аргумента). Такую информацию удобнее всего обобщать и
представлять в графической форме.
Требования к оформлению инженерной графической информации
отличаются от требований к обычным графикам в математике. Пользовательинженер должен иметь возможность принять такое решение о выборе
значения некоторых конструктивных параметров, характеризующих
исследуемый процесс или техническое устройство, чтобы его
прогнозируемое поведение удовлетворяло заданным условиям. Поэтому
инженерные графики должны быть «читабельными», то есть такими, чтобы с
их помощью можно было легко отсчитывать значение функции при любых
значениях аргумента (и наоборот) с относительной погрешностью в
несколько процентов. Это становится возможным, если координатная сетка
графиков соответствует определенным целым числам какого-либо
десятичного разряда. Графики, построенные системой MATLAB, полностью
отвечают этим требованиям.
С помощью набора определенных функций системы MATLAB можно в
поле графика ввести его название, обозначить оси, ввести пояснение к
графику. Также можно определить тип и цвет линий.
Для сравнения графиков система позволяет располагать их в одном поле
или в одном окне друг под другом.
Процедуры и функции графической визуализации.
Вывод графиков в системе MATLAB ― настолько простая и удобная
операция, что ее можно использовать даже в режиме калькулятора. Основной
функцией, обеспечивающей построение графиков на экране дисплея,
является функция plot. Общая форма обращения к ней такова:
83
plot(x1,y1,s1,x2,y2,s2,…)
Здесь x1, y1 ― заданные векторы, элементами которых являются массивы
значений аргумента (x1) и функции (y1), отвечающие первой кривой графика;
x2, y2 ― массивы значений аргумента и функции второй кривой и т. д. При
этом предполагается, что значения аргумента откладываются вдоль
горизонтальной оси графика, а значения функции ― вдоль вертикальной оси.
Переменные s1, s2, … являются символьными (их указание не является
обязательным). Любая из них может содержать до трех специальных
символов, определяющих соответственно: а) тип линии, которая соединяет
отдельные точки графика; б) тип точки графика; в) цвет линии. Если
переменные s не указаны, то типом линии по умолчанию является отрезок
прямой, типом точки ― пиксел, а цвет устанавливается в такой очередности:
синий, зеленый, красный, голубой, фиолетовый, желтый, черный, белый.
Графики в MATLAB всегда выводятся в отдельное графическое окно,
которое называют фигурой.
Для примера выведем на экран график синусоиды (рис.):
x=0:0.001:2*pi; y=sin(x);
plot(x,y)
1
1
0.8
0.
8
0.6
0.
6
0.4
0.
4
0.2
0.
2
0
0
-0.2
0.2
-0.4
0.4
-0.6
0.6
-0.8
0.8
-1
0
1
2
3
4
5
6
7
Рисунок 1. СинусоидаРисунок
-1
0
1
2
3
4
5
6
7
. Результат применения функции grid
Нанесение сетки из координатных линий обеспечивается с помощью
функции grid (рис.). При этом сетка координат всегда соответствует
«целым» шагам изменения.
84
Заголовок выводится в графическое поле с помощью процедуры
title(’<текст>’). Текст ввода должен всегда помещаться между
апострофами. Аналогично можно вывести объяснения к графику, которые
размещаются вдоль горизонтальной оси (функция xlabel) и вдоль
вертикальной оси (функция ylabel). Применим эти функции для нашего
примера (рис.):
x=0:0.001:2*pi; y=sin(x);
plot(x,y);title('Синусоида');
xlabel('Значения x'); ylabel('Значения функции'), grid
Синусоида
1
0.8
0.6
Значения функции
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
0
1
2
3
4
5
6
7
Значения x
Рисунок. Результат применения функций title, xlabel, ylabel
В среде MATLAB несложно выводить и графики, заданные
параметрически. Например, построим график функции, которая определена
формулами (рис.):
x  4e 0.05t sin t; y  0.2e 0.1t sin 2t.
t=0:0.1:50;
x=4*exp(-0.05*t).*sin(t); y=0.2*exp(-0.1*t).*sin(2*t);
plot(x,y); title('Параметрическая функция');
xlabel('x'); ylabel('y'); grid
85
Параметрическая функция
0.2
0.15
0.1
0.05
y
0
-0.05
-0.1
-0.15
-0.2
-4
-3
-2
-1
0
x
1
2
3
4
Рисунок. График параметрически заданной функции
Система MATLAB предоставляет очень удобную возможность ― не
указывать аргумент функции при построении ее графика. В таком случае в
качестве аргумента система принимает номер элемента вектора, график
которого строится. Например, построим график вектора х (рис.7):
x=[3 5 2 7 3 9 1];
plot(x); title('График вектора x');
xlabel('Номер элемента'); ylabel('Значение элемента'); grid
График вектора x
9
8
Значение элемента
7
6
5
4
3
2
1
1
2
3
4
Номер элемента
5
6
7
Если функция задана своими значениями при дискретных значениях
аргумента и неизвестно, как она может изменяться в промежутках между
значениями аргумента, удобнее представлять ее график в виде отдельных
вертикальных линий для любого из заданных значений аргумента. Это
86
можно сделать, применяя процедуру stem, обращение к которой аналогично
обращению к процедуре plot (рис.):
stem(x); title('График вектора x');
xlabel('Номер элемента'); ylabel('Значение элемента')
График вектора x
9
8
7
Значение элемента
6
5
4
3
2
1
0
1
2
3
4
Номер элемента
5
6
7
Рисунок 2. График, построенный с помощью процедуры stem
Чрезвычайно полезной для нас является функция hist (построение
графика гистограммы заданного вектора). Стандартное обращение к ней
имеет вид:
hist(y,x)
где y ― вектор, гистограмму которого нужно построить; x ― вектор,
элементы которого определяют интервал изменения первого вектора. Эта
функция осуществляет две операции: 1) подсчитывает количество элементов
вектора y, значения которых попадают внутрь соответствующего диапазона,
указанного вектором x; 2) строит столбцовую диаграмму подсчитанных
чисел элементов вектора y как функцию диапазонов, указанных вектором x.
В качестве примера построим гистограмму вектора у, элементы которого
распределены по нормальному закону с математическим ожиданием 0 и
среднеквадратическим отклонением 1. Общее количество элементов вектора
у 10000 (рис.10):
x=-2.5:0.05:2.5; y=randn(10000,1);
hist(y,x); title('Гистограмма нормального распределения');
xlabel('x'); ylabel('Вероятность x'); grid
87
Гистограмма нормального распределения
250
Вероятность x
200
150
100
50
0
-3
-2
-1
0
x
1
2
3
Рисунок 3. Гистограмма функции randn
MATLAB имеет несколько функций, которые позволяют строить
графики в логарифмическом масштабе. К примеру, функция logspace с
обращением
x=logspace(d1,d2,n)
формирует вектор-строку х, содержащую n равноотстоящих в
логарифмическом масштабе друг от друга значений в диапазоне от 10 до 10
.
Функция loglog выводит графики, которые по обеим осям строятся в
логарифмическом масштабе. Построение графиков, в которых используется
логарифмический масштаб только по одной из координатных осей,
осуществляется с помощью процедур semilogx (вертикальная ось) и
semilogy (горизонтальная ось). Обращение к этим процедурам аналогично
обращению к функции plot.
Для примера построим амплитудно-частотную и фаза-частотную
характеристики фильтра нижних частот (рис.), имеющего коэффициент
передачи вида:
K ( j ) 
1
.
1  jRC
Как известно, коэффициент передачи, представляющий из себя комплексное
число, равен K(jω)=K(ω)exp(φ(ω)), где K(ω) ― амплитудно-частотная
характеристика (модуль комплексного числа), φ(ω) ― фаза-частотная
характеристика (аргумент комплексного числа). Воспользуемся известными
нам функциями:
88
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
Амплитудно-частотная характеристика
Отношение амплитуд
1
0.8
0.6
0.4
0.2
0
0
10
1
10
2
10
Частота (Гц)
3
10
4
10
Фаза-частотная характеристика
0
Фаза (град)
-20
-40
-60
-80
-100
0
10
1
10
2
10
Частота (Гц)
3
10
4
10
Рисунок 4. АЧХ и ФЧХ фильтра нижних частот
В этом примере была использована функция subplot. Она необходима,
если требуется построить несколько графиков в одном графическом окне, но
на разных графических полях. Обращение к ней имеет вид:
subplot(m,n,p).
Здесь m указывает, на сколько частей разделяется графическое окно по
вертикали, n, соответственно, ― по горизонтали, а p является номером
подокна, в котором будет строиться график. При этом подокна нумеруются
слева направо построчно сверху вниз.
Если необходимо изменить режим масштабирования, можно
воспользоваться функцией axis: axis([xmin xmax ymin ymax])
устанавливает жесткие границы поля графика в единицах величин, которые
откладываются по осям, axis('auto') приводит масштабы по осям по
умолчанию, axis('ij') перемещает начало отсчета в левый верхний угол
89
(матричная система координат), axis('xy') возвращает декартову систему
координат с началом отсчета в левом нижнем углу графика, axis('square')
устанавливает одинаковый диапазон изменения переменных по осям
графика, axis('equal') обеспечивает одинаковый масштаб по осям
графика.
Команда text(x,y,<'текст'>) позволяет расположить указанный текст
в поле графика, при этом начало текста помещается в точку с координатами х
и у. Но не всегда удается указать «удобные» координаты, поэтому
используют команду gtext('текст'), в результате вызова которой в
активном графическом окне появляется перекрестие. Перемещение
перекрестия с помощью мыши позволяет указать место начала вывода
указанного текста.
Чтобы создать несколько графических окон, в каждом из которых
расположены соответствующие графики, можно воспользоваться командой
figure. Эта команда создает новое графическое окно, оставляя предыдущие.
Наконец, для того чтобы несколько последовательно вычисленных
графиков были изображены в графическом окне в одном стиле, можно
использовать команду hold on. Команда hold off выключает режим
сохранения графического окна, установленного предшествующей командой.
Для примера построим в одном графическом поле несколько функций
Бесселя первого рода различных порядков (рис.12):
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-й порядок')
90
Функции Бесселя первого рода
0.6
0.5
Син-1-й порядок; Зел-2-й порядок; Красн-3-й порядок
0.4
Значение функции
0.3
0.2
0.1
0
-0.1
-0.2
-0.3
-0.4
0
2
4
6
8
10
x
12
14
16
18
20
Рисунок 5. Функции Бесселя первого рода
Вывод текста в графическое окно.
Как было сказано ранее, разбивка графического окна на подокна
осуществляется с помощью процедуры subplot.
Сделаем следующее: выведем графическое окно, которое будет
содержать три графических подокна и одно текстовое подокно. Причем
графические подокна будут располагаться друг под другом, а текстовое ―
справа от них. Для этого с помощью вышеуказанной процедуры разобьем
графическое окно на 12 частей. Части объединяются аналогично
объединению строк и столбцов матрицы (рис.13):
subplot(3,4,[1 2 3]); subplot(3,4,[5 6 7]);
subplot(3,4,[9 10 11]); subplot(3,4,[4 8 12])
91
1
1
1
0.9
0.5
0.5
0.8
0
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
0
1 0.7
1
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
1
0.6
0.5
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
0
1
0.3
1
1
0.2
0.5
0.5
0.1
0
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
0
0
0.5
1
Рисунок 6. Разбивка графического окна
0
Рисунок 7. Результат выполнения
команды axis('off')
Для того чтобы вывести текст в одно из подокон, нужно сначала удалить
из данного подокна изображение осей координат и надписей на них. Это
делается с помощью команды axis('off') (рис.14).
Основной функцией, обеспечивающей вывод текста в графическое окно,
является функция text. Обращение к ней имеет вид:
text(x,y,'<текст>','FontName','<название щрифта>','FontSize',<размер шрифта в
пикселах>)
Данная функция осуществляет вывод конкретного текста определенным
шрифтом указанного размера, начало текста находится в точке подокна с
координатами х и у соответствующего поля графика подокна. При этом
координаты х и у измеряются в единицах величин, откладываемых вдоль
соответствующих осей. Пример приведен на рис.15:
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);
text(0.15,0.5,'и случайного','FontSize',10);
text(0.3,0.45,'процесса','FontSize',10)
92
1
0.5
Графики
0
функций
-0.5
-1
0
1
2
3
4
5
6
7
8
9
10
4
гармонического
2
сигнала
и случайного
0
процесса
-2
-4
0
1
2
3
4
5
6
7
8
9
10
0
1
2
3
4
5
6
7
8
9
10
4
2
0
-2
-4
Рисунок 8. Пример текстового оформления графического окна
В данном примере была использована функция length(t), она
определяет длину вектора t.
93
ПРИЛОЖЕНИЕ 2
ОПИСАНИЕ ИНТЕРАКТИВНОЙ ОБОЛОЧКИ SPTOOL
Интерактивная оболочка пакета Signal Processing включает:
o средство поиска и просмотра сигналов (Signal Browser);
o проектировщик фильтров (Filter Designer);
o средство просмотра характеристик фильтров (Filter Viewer);
o средство просмотра спектра (Spectrum Viewer).
Оболочка активизируется путем ввода в командном окне MATLAB
команды sptool. В результате на экране появится окно SPTool (рис.6.9).
Как видим, это окно содержит три списка: Signals (Сигналы), Filters
(Фильтры) и Spectra (Спектры). Под каждым из них имеются кнопки с
названиями команд, которые можно применять к объектам списков.
Рисунок 6.1 – Окно SPTool
Под списком Signals (Сигналы) находится единственная кнопка View
(Просмотр), это означает, что объекты (сигналы), имена которых содержатся
в данном списке, могут быть только просмотрены. К списку Filter (Фильтры)
относятся четыре кнопки: View (Просмотр), New (Создать), Edit (Правка),
Apply (Применить). Они позволяют просматривать, создавать и
редактировать фильтры, а также применять их к одному или нескольким
объектам, выделенным в списке Signals (Сигналы). Под списком Spectra
(Спектры) располагаются кнопки View (Просмотр), Create (Создать), Update
(Обновить), с помощью которых можно просматривать, создавать и
обновлять (создавать заново под тем же именем) спектры сигналов.
94
В указанных списках размещаются имена (идентификаторы)
переменных или процедур, входящих в открытый sptool-файл, имеющий
расширение .spt (имя этого файла отображается в заголовке окна).
При первом обращении к окну SPTool его заголовок содержит имя
файла startup.spt, все три списка окна ― пустые; доступной является только
кнопка New Design (Создать). Таким образом, после вхождения в оболочку
SPTool допустимой является только операция создания нового фильтра.
Чтобы сделать доступными остальные кнопки, необходимо откуда-то
импортировать данные о каких-то сигналах. Такие данные должны быть
сформированы средствами, не относящимися к оболочке SPTool (например,
являться результатом выполнения некоторой программы MATLAB или
результатом моделирования в среде Simulink), и записаны как некоторые
переменные либо в рабочем пространстве (Workspace), либо на диске в файле
с расширением .mat.
6.2 Импорт сигналов
Обрабатывать сигналы в SPTool можно лишь после того, как они
сформированы с помощью определенной программы MATLAB, а
полученные векторы значений данных этих сигналов импортированы в среду
SPTool. Для этого в окне SPTool выберите команду File ► Import (Файл ►
Импорт), после чего появится диалоговое окно Import to SPTool (Импорт в
SPTool), представленное на рис.6.10.
Рисунок 6.2 – Окно Import to SPTool
В области Source (Источник) данного окна по умолчанию установлен
переключатель From Workspace (Из рабочего пространства). Это означает,
что окно настроено на импорт сигналов из рабочего пространства MATLAB.
Поэтому все имена переменных рабочего пространства представлены в
списке Workspace Contents (Содержимое рабочего пространства). В начале
сеанса работы данный список пуст.
Допустим, что мы сгенерировали случайные процессы x(t), y(t) и y1(t) в
соответствии с программой, приведенной в разделе «Графические средства».
В результате в рабочем пространстве MATLAB появились векторы x, y и y1,
95
каждый из которых содержит по 10000 элементов. Импортируем их в среду
SPTool. После этого в списке Workspace Contents (Содержимое рабочего
пространства) появятся имена всех переменных рабочего пространства
MATLAB (рис.6.2).
Выбрав в этом списке необходимую переменную, нужно щелкнуть на
кнопке со стрелкой, указывающей на поле Data. В результате в этом поле
должно появиться имя выбранной переменной. Затем на поле Sampling
Frequency (Частота дискретизации) следует записать желаемое значение
частоты дискретизации. Фактически этим параметром задается временной
промежуток Ts между отдельными значениями выбранного вектора процесса.
В поле Name (Имя) нужно ввести имя, под которым данный вектор будет
храниться в среде SPTool. На рис.6.3 виден результат выбора переменной y1,
которая будет записана в SPTool под тем же именем с частотой
дискретизации 100 Гц (то есть с дискретом времени 0.01 с).
Рисунок 6.3 – Импорт в SPTool сигнала y1
Выполнив описанную подготовительную работу, следует щелкнуть на
кнопке OK, и импорт сигнала в среду SPTool будет произведен. После этого
окно Import to SPTool исчезнет и окно SPTool изменит свой вид: в списке
Signals (Сигналы) появится имя вектора сигнала, станут доступными кнопка
View (Вид) под этим списком, а также кнопка Create (Создать), относящаяся
к списку Spectra (Спектры). Это означает, что появилась возможность
находить спектральные характеристики импортированного сигнала.
6.3 Просмотр сигналов
После импорта вектора сигнала можно воспользоваться средствами его
просмотра. Для этого достаточно выделить в списке Signals (Сигналы)
необходимый сигнал и щелкнуть на кнопке View (Просмотр), расположенной
ниже списка. В результате должно появиться окно Signal Browser (Браузер
сигналов). Выбрав в списке сигнал y1, получим окно, изображенное на
рис.6.4.
96
Рисунок 6.4 – Окно Signal Browser
Под заголовком окна расположена строка меню. Меню File (Файл)
включает команды, предназначенные для подготовки и вывода на принтер
содержимого окна.
Меню Markers (Маркеры) включает в себя следующие команды. Первая
команда Markers позволяет включать (отключать) маркеры на изображении
процессов. Остальные команды доступны при включенных маркерах. После
установки флажка рядом с командой Vertical (По вертикали) отображаются
лишь аргументы точек пересечения маркеров с графиком процесса. Если
активна команда Horizontal (По горизонтали), создаются горизонтальные
линии маркеров, что позволяет отсчитывать только их вертикальные
координаты. Команда Track (Отслеживать) возвращает предыдущий режим
работы с маркерами. Использование команды Slope (Наклон) приводит к
появлению на графике еще одной прямой, соединяющей точки пересечения
графика сигнала с маркерными линиями. При этом внизу экрана выводится
значение тангенса угла наклона этой прямой к оси абсцисс. Вызов команды
Peaks (Максимумы) приводит к тому, что линии маркеров могут быть
установлены только в точках максимальных значений сигнала. При этом
внизу окна появляются значения этих максимумов и их аргументов.
Аналогично, с помощью команды Valleys (Минимумы) определяются точки
минимумов сигнала. Наконец, команда Export (Экспорт) позволяет записать
изображенную в окне маркерную структуру в виде массива с указанным
именем в рабочее пространство MATLAB.
Ниже строки меню находится панель инструментов. С помощью
инструментов, расположенных на этой панели, можно произвести действия,
предусмотренные меню File (Файл), Markers (Маркеры), Windows (Окна), а
также выполнить следующие действия: изменить цвета кривых,
изображаемых в окне графиков; изменить масштабы изображения по обеим
97
осям графика; выделить для увеличенного изображения отдельную область
графика.
6.4. Создание спектров сигналов
После ввода в окно SPTool сигналов можно найти оценки их
спектральных свойств. Для этого достаточно в списке Signals (Сигналы) окна
SPTool отметить (выделить) тот сигнал, оценку спектральной плотности
которого вы хотите получить, и вызвать команду Create (Создать),
относящуюся к списку Spectra (Спектры). При этом на экране появится окно
Spectrum Viewer (Просмотр спектра), показанное на рис.6.13.
Рисунок 6.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 (Применить)
98
в окне Spectrum Viewer (Просмотр спектра) в области отображения спектра
появится спектр сигнала y1(t), показанный на рис.6.14.
Рисунок 6.6 – Cпектр сигнала y1(t)
Применение разработанного фильтра
Использовать в среде SPTool разработанный фильтр чрезвычайно
просто. Для этого следует в списке Signals (Сигналы) окна SPTool выделить
имя сигнала, который нужно преобразовать с помощью фильтра, а в списке
Filters (Фильтры) ― имя фильтра, с помощью которого надо преобразовать
этот сигнал, и активизировать команду Apply (Применить). В результате в
списке Signals (Сигналы) появится имя нового сигнала, начинающееся с
сочетания символов sig, за которым следует порядковый номер.
Полученный сигнал можно просмотреть, как это было описано ранее,
используя команду View (Просмотр). Например, применяя только что
разработанный фильтр filt1 к сигналу y1(t), получим процесс,
изображенный на рис.6.7
99
Рисунок 6.7 – Результат прохождения сигнала y1(t) через фильтр filt1
100
ПРИЛОЖЕНИЕ 3
ОПИСАНИЕ ИНТЕРАКТИВНОЙ СРЕДЫ FDATOOL
Среда FDATool представляет графический интерфейс для расчета
фильтров и просмотра их характеристик. На вкладке Design Filter задается
тип
синтезируемой АЧХ - фильтр нижних частот, тип фильтра
нерекурсивный (FIR), метод синтеза - метод окон (синтез с использованием
весовых функций). При проектировании КИХ фильтра в среде FDATool
применяются следующие методы: Equiriple - синтез фильтров с
равномерными пульсациями АЧХ методом Ремеза; Least-Squares минимизация реднеквадратичного отклонения АЧХ от заданной и метод
окон (Window). В разделе Filter Order задается порядок КИХ-фильтра, Расчет
фильтра осуществляется после нажатия кнопки Design Filter.
В методе окон обратное преобразование Фурье частотной
характеристики дает бесконечную в обе стороны последовательность
отсчетов импульсной характеристики. Для получения КИХ-фильтра
заданного порядка эта последовательность усекается путем выбора
центрального фрагмента нужной длины. Для ослабления паразитных
эффектов в этом методе синтеза усеченная импульсная характеристика
умножается на весовую функцию (окно), плавно спадающую к краям.
Рисунок 7.1 − Окно программы FDATool.
101
7.2 Синтез фильтра
Расчет фильтра начинается с задания требуемых параметров в окне
7.3 Необходимо выбрать тип синтезируемой
переключателя Filter Type (рисунок 3.2).
АЧХ,
с
помощью
Возможны следующие варианты:
- Lowpass ( ФНЧ );
- Highpass ( ФВЧ );
- Bandpass ( ПФ );
7.4
Выбрав категорию синтезируемой АЧХ, следует выбрать тип
синтезируемого фильтра, установив переключатель, расположенный в
разделе Design Method, в положение FIR (нерекурсивный) или IIR
(рекурсивный). Каждому типу фильтра соответствует список возможных
методов синтеза, перечисленных ниже и показанных на рисунке 3.3.
Нерекурсивные фильтры (FIR):
o Equiripple - синтез фильтров с равномерными пульсациями АЧХ
методом Ремеза;
o Least-Squares – на основе минимизации среднеквадратического отклонения АЧХ от заданной;
o Window - синтез с использованием весовых функций (окон);
Рекурсивные фильтры (IIR):
Синтез осуществляется по различным аналоговым прототипам методом
билинейного z-преобразования:
o
o
o
o
Butterworth - синтез фильтра Баттерворта;
Chebyshev Type I - синтез фильтра Чебышева первого рода;
Chebyshev Type II - синтез фильтра Чебышева второго рода;
Elliptic - синтез эллиптического фильтра;
102
Рисунок 7.3 - Список возможных методов синтеза фильтров
Выбрать порядок фильтра в разделе Filter Order (см. рисунок 3.2).
Примечание: Возможен автоматический выбор оптимального порядка
фильтра путем установки переключателя в положение Minimum Order.
Задать числовые параметры выбранной АЧХ в разделах Frequency
Specifications, Magnitude Specifications (рисунок 3.2). Параметры, которые
необходимо задать, иллюстрируются графиком, выводимым в разделе Filter
Specifications. Это можно сделать, нажав кнопку
на панели
инструментов. Вид этого графика меняется в зависимости от выбранного
типа АЧХ.
Выбрав метод синтеза и задав характеристики фильтра, щелкните на
расположенной в нижней части окна кнопке
для создания вашей
модели фильтра.
4. Просмотр характеристик фильтра
После выполнения
характеристики.
расчета
фильтра,
нужно
просмотреть
его
Выбор графика для просмотра производится с помощью кнопок панели
инструментов или следующих команд меню Analysis (рисунок 3.2):

Filter Specifications − вывод графика, поясняющего задание АЧХ;
103



ФЧХ;
Magnitude Response − вывод графика АЧХ;
Phase Response − вывод графика ФЧХ;
Magnitude and Phase − одновременный вывод графиков АЧХ и

Group Delay − вывод графика частотной зависимости групповой
задержки;

Impulse Response − вывод графика импульсной характеристики;

Phase Delay – вывод графика частотной зависимости фазовой
задержки;

Step Response − вывод графика переходной характеристики;

Pole/Zero Plot − вывод графика расположения нулей и полюсов на
плоскости;

View Filter Coefficients− просмотр коэффициентов фильтра.
Когда на экран выведен какой-либо из графиков, можно использовать
кнопки Zoom In
и Zoom Out для управления масштабом отображения.
ЛИТЕРАТУРА
104
1. Рабинер Л, Гоулд Б. Теория и применение цифровой обработки
сигналов / Пер. с англ.; Под ред. Ю. И. Александрова. - М.: Мир, 1978.
2. Оппенгейм А. В., Шафер Р. В. Цифровая обработка сигналов: Пер. с
англ. / Под ред. С. Я. Шаца. - М.: Связь, 1979.
3. Сергиенко А.Б. Цифровая обработка сигналов. 3-е изд. Учеб. пособие.
— 3-е изд. — СПб.: БХВ-Петербург, 2011. — 768
4. А. И. Солонина, С. М. Арбузов Цифровая обработка сигналов.
Моделирование в MATLAB. БХВ-Петербург, 2008 г. -814
5. Дьяконов В. П. MATLAB 7.*/R2006/2007. Самоучитель — Москва.:
«ДМК-Пресс», 2008. — С. 768.
105
Download