Xlabel('n');
Результат работы данного фрагмента показан на рис. 1.6, где представлены графики решетчатых функций и .
Рис. 1.6. Графики функций , и для примеров 5_03 и 5_04.
Пример 5_04. Для исходных данных, указанных в примере 5_03, нужно построить выходной сигнал , используя DLTI представление модели системы и универсальную функцию lsim из пакета прикладных программ CST, входящего в среду MATLAB. Это же построение следует выполнить с помощью функции filter, которая является базовым инструментом пакета DSPT.
В листинге 5.4 представлен программный код на языке MATLAB, реализующий решение данного примера, с необходимыми комментариями. Естественно, что результат работы этого кода полностью совпадает с предшествующим примером (рис. 1.6).
Листинг 5.4
% Пример 5_04: Реакция на заданный входной сигнал
clear;
% Моменты дискретного времени
n=-5:22; nu=0:8;
% Входной сигнал
u1=exp(-0.1*abs(nu)); u0=[u1 zeros(1,14)];
u=[zeros(1,5) u0];
% Импульсная характеристика
h1=[1 -1 2 3 -2 -1 -0.5 2 3 -1];
h=[zeros(1,5) h1 zeros(1,13)];
% DLTI-объект
num=h1; den=[1 zeros(1,length(num)-1)];
dz=tf(num,den,1);
% Импульсная характеристика DLTI-объекта
[yi1,ni]=impulse(dz,22);
yi=[zeros(1,5) yi1'];
% Выходной сигнал DLTI-системы
y1=lsim(dz,u0,0:22); y=[zeros(1,5) y1'];
% Формирование выходного сигнала функцией filter
yf1=filter(yi1,1,u0);
yf=[zeros(1,5) yf1];
% Графики последовательностей
figure(2); clf reset;
subplot(3,1,1); g1=stem(n,u,'ro','fill'); grid on;
set(g1,'LineWidth',2); axis([-5,22,0,1.2]);
title('1) input signal u[n]'); set(gca, 'XTickLabel',[]);
subplot(3,1,2); g2=stem(n,yi,'ro','fill'); grid on;
set(g2,'LineWidth',2); axis([-5,22,-2.5,3.5]);
title('2) impulse responce h[k]'); set(gca, 'XTickLabel',[]);
subplot(3,1,3); g3=stem(n,yf,'ro','fill'); grid on;
set(g3,'LineWidth',2); axis([-5,22,-1,6]);
title('3) system responce y[n]'); xlabel('n');
Пример 5_05. Необходимо создать программные представления в среде MATLAB, как ss, tf и zpk-объекты соответственно для DLTI систем со следующими моделями:
а) б) ;
в) нули: 0.1, –0.2+0.1j, –0.2–0.1j;
полюса: –0.8, –0.1+0.2j, –0.1–0.2j, –0.3+0.4j, –0.3–0.4j;
коэффициенты: 1.
Далее следует преобразовать ss-объект к tf-форме, tf-объект к ss-форме и zpk-объект к ss-форме и найти собственные значения последнего ss объекта. Кроме того, нужно сгенерировать случайный устойчивый SISO DLTI-объект второго порядка в ss-форме и найти его передаточную функцию.
Для решения примера воспользуемся программой, представленной в листинге 5.5.
Листинг 5.5
% Пример 5_05: Создание и преобразование % DLTI объектов
clear;
% 1. Создание DLTI-объектов
% в ss-форме
a=[-2 3; 1 -2]; b=[1 -2]'; c=[1 1]; d=0;
dlti_1=ss(a,b,c,d,1);
% в tf-форме
% передаточная функция от q=z^(-1)
num_2=[-2 3 2 0]; den_2=[1 5 -2 -3];
dlti_2=tf(num_2,den_2,1); dlti_2.variable='q';
dlti_2
% передаточная функция от z
dlti_2a=tf(num_2,den_2,1)
% в zpk-форме
z1=0.1; z2=-0.2+0.1j; z3=-0.2-0.1j;
zz=[z1; z2; z3];
p1=-0.8; p2=-0.1+0.2j; p3=-0.1-0.2j;
p4=-0.3+0.4j; p5=-0.3-0.4j;
pp=[p1; p2; p3; p4; p5];
dlti_3=zpk(zz,pp,1,1);
% 2. Преобразование DLTI-объектов
% ss=>tf
d1=tf(dlti_1)
% tf=>ss
d2=ss(dlti_2a);
% zpk=>ss
d3=ss(dlti_3); zz3=eig(d3)
% 3. Создание случайного устойчивого DLTI-объекта
dlti_4s=drss(2); tf(dlti_4s)
Предусмотренный в программе вывод результирующей информации в командное окно имеет следующий вид:
>>
Transfer function:
-2 + 3 q + 2 q^2
-----------------------
1 + 5 q - 2 q^2 - 3 q^3
Sampling time: 1
Transfer function:
-2 z^3 + 3 z^2 + 2 z
---------------------
z^3 + 5 z^2 - 2 z - 3
Sampling time: 1
Transfer function:
-z - 7
-------------
z^2 + 4 z + 1
Sampling time: 1
zz3 =
-0.1000 + 0.2000i
-0.1000 - 0.2000i
-0.3000 + 0.4000i
-0.3000 - 0.4000i
-0.8000
Transfer function:
-0.8323 z^2 + 1.195 z - 0.4288
------------------------------
z^2 - 1.427 z + 0.5093
Sampling time: unspecified
>>
Пример 5_06. Необходимо создать в среде MATLAB ss-объект в соответствии со следующими уравнениями:
и найти его передаточную функцию. Далее необходимо выполнить линейное преобразование вектора состояния с помощью неособой матрицы
и создать соответствующий преобразованный ss-объект. Для него так же нужно найти передаточную функцию и сравнить ее с предшествующим вариантом. Для сформированных объектов построить импульсные характеристики с помощью функций impulse (CST) и impz (DSPT).
Решение примера обеспечивается программным кодом на языке MATLAB, представленном в листинге 5.6.
Листинг 5.6
% Пример 5_06:
% Линейное преобразование вектора состояния
% для DLTI-объектов
% 1. Создание DLTI-объектов в ss- и tf-формах
a=[-0.51 -0.083 -0.33;...
0.11 -0.28 -0.050;...
-0.32 0.086 -0.74];
b=[0; 1.62; -0.69]; c=[0.86 1.3 -1.6]; d=0;
dz1=ss(a,b,c,d,1); dz1_t=tf(dz1)
% 2. Линейное преобразование вектора состояния
T=[-1 2 0; 3 2 -2; 5 -1 2];
a1=inv(T)*a*T; b1=inv(T)*b;
c1=c*T; d1=0;
dz2=ss(a1,b1,c1,d1,1);
tf(dz2)
% 3. Построение импульсных характеристик
[y1,t1]=impulse(dz1);
figure(1); clf reset;
h2=stem(t1,y1,'r.','fill');
set(h2,'LineWidth',2); grid on;