Вы находитесь на странице: 1из 30

Математическое

SRNS.RU
моделирование РТУ и С
Лекция 7. Моделирование
линейных звеньев

Преподаватель:
Корогодин Илья
korogodin@srns.ru
Литература
Монаков А.А. Основы
математического
моделирования
радиотехнических систем.
Учебное пособие. – СПб.:
ГУАП, 2005. – 100с.

Глава 2, Раздел 2.1:


Моделирование линейных
звеньев
Литература
А.Б.Сергиенко. Цифровая
обработка сигналов. СПб,
Питер, 2002. — 608 с.: ил.

А.Б.Сергиенко.
Signal Processing Toolbox –
обзор:
http://matlab.exponenta.ru/sig
nalprocess/book2/index.php
Литература
Ричард Лайонс - Цифровая
обработка сигналов /
Understanding Digital Signal
Processing, 2006

Глава 5. Фильтры с
импульсной характеристикой
конечной длины

Глава 6. Фильтры с
импульсной характеристикой
бесконечной длины

Глава 7. Специальные КИХ-


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

Формально отличие в дифурах (линейные/нелинейные):

t
1
u ( t ) = i ( t ) rC + ∫ i ( t ) dt
C
( (
i = I s exp u
nV ) − 1)
0

Но важно следствие - при действии суммы сигналов отклик звена


есть суперпозиция откликов на каждое воздействие в отдельности:

K ( p ) ∑α i S i = ∑α i K ( p ) S i
Коэффициент передачи
Линейное звено описывается дифуром:
( M ) t + ... + a y (1) t + a y t = b x( N ) t + ... + b x(1) t + b x t
aM y () 1 () 0 () N () 1 () 0 ()
jω t
Нам достаточно научиться его решать для воздействия x ( t ) = e ,
а потом воспользоваться преобразованием Фурье и линейностью

jω t
Решение лежит на поверхности - y ( t ) = Ue
ɺ :

( jω ) M ɺ jωt + ... + ( jω ) a Ue
aM Ue ɺ jωt , + a Ue
ɺ jωt
1 0

= ( jω ) bN e jωt + ... + ( jω ) b1 e jωt , +b0 e jωt


N

откуда
( jω ) bN + ... + ( jω ) b1 , +b0
N
Uɺ = Uɺ ( jω ) =
( jω ) M
aM + ... + ( jω ) a1 + a0
Коэффициент передачи
Нетрудно заметить, что в этом случае
y ( t ) = Ux
ɺ (t )
Да это же не только комплексная амплитуда,
но ещё и коэффициент передачи (transfer function)!

Обозначим s = jω
bN s N + ... + b1 s + b0
H ( s ) = Uɺ ( s ) =
aM s M + ... + a1 s + a0

Благодаря линейности для сигналов с произвольным спектром имеем

y f ( s ) = H ( s ) x f ( s ) , y f ( s ) = f { y ( t )} , x f ( s ) = f { x ( t )}
Коэффициент передачи
dy ( t )
x(t ) = i (t ) R + y (t ), i ( t ) = C ⇒
dt
dy ( t )
RC + y (t ) = x(t ) ⇒
dt
a1 = RC ; a0 = 1; b0 = 1; ⇒
1
H (s) =
RC ⋅ s + 1
В MATLAB есть функции
для работы с линейными
звеньями

clear all; clc; close all;

RC = 1e-6;

a = [RC 1];
b = [1];

freqs(b, a);
Коэффициент передачи
clear all; clc; close all;
RC = 1e-6;

a = [RC 1]; b = [1];


Fs = 100; Fmax = 4e5; f = 0:Fs:Fmax;
H = freqs(b, a, 2*pi*f);

figure(1); subplot(2,1,1);
plot(f/1e6, 20*log10(abs(H)));
subplot(2,1,2);
plot(f/1e6, rad2deg(unwrap(angle(H))));
Функция unwrap
Импульсная характеристика
Умножению в частотной области соответствует свертка во временной
+∞
y (t ) = ∫ h (τ ) x ( t − τ ) dτ Для нашей RC-цепи и П-импульса:
−∞
+∞
1
h (t ) = ∫ H ( jω ) e jωt d ω

−∞
σ + j∞
1
А можно и через преобразование Лапласа: h (t ) = ∫ H ( s ) e st ds
2π j
σ − j∞

Это интегрирование по линии, параллельной мнимой оси.


Выбором сигмы все особенности подынтегральной функции
оставляют слева от контура интегрирования.
+∞ +∞
Обратно: H ( jω ) = ∫ h ( t ) e− jωt dt ↔ H ( s ) = ∫ h ( t ) e− st dt
0 0
Импульсная характеристика
Для построения импульсной
характеристики можно воспользоваться
функциями Сontrol System Toolbox
RC = 1e-6; a = [RC 1]; b = [1];

sys = tf(b,a);
[y,t] = impulse(sys); % Без ‘[y, t] =‘
% сразу построит график

figure(1); plot(t, y);


xlabel('t, s'); ylabel('h(t)');
grid on
Нули и полюсы
Функцию передачи можно представить в виде

H (s) = k
( s − z N )( s − z N −1 ) ⋅ ... ⋅ ( s − z1 )

( s − pM )( s − pM −1 ) ⋅ ... ⋅ ( s − p1 )
b
здесь k = N - коэффициент усиления,
aM
zi - нули, pi - полюсы.

( )
Re pi < 0 ⇔ устойчивость
Цифровые фильтры
Всё это здорово, наглядно и удобно описывает аналоговые системы,
но нам же нужно уметь их моделировать – получать отклик на сигнал

И входные, и выходные сигналы в машине мы представляем в виде


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

( ) ( )
xk = x tk → yk ≈ y tk
Нужна модель, для которой это приближенное равенство
выполняется как можно точнее.

Да это же задача синтеза цифрового фильтра по аналоговому прототипу!


Импульсная характеристика
Т.к. система линейна, то может описываться только уравнением вида:
yk + a1 yk −1 + a2 yk − 2 + ... + aM yk − M =
= b0 xk + b1 xk −1 + b2 xk − 2 + ... + bN xk − N
Непрерывные линейные системы характеризуются импульсной
характеристикой – откликом на дельта-функцию.
Для дискретной системы можем найти отклик на единичный импульс:

( )
yk = yk −1 + 0.3 ⋅ xk − yk −1 = 0.7 ⋅ yk −1 + 0.3 ⋅ xk - ФНЧ

clear all; close all; clc


x = [1 0 0 0 0 0 0 0 0 0 0 0 0 0 0];
km = 1:length(x);
for k = km
if k > 1
y(k) = 0.7*y(k-1) + 0.3*x(k);
else
y(k) = 0.3*x(k);
end
end
figure(1); stem(km, y)
impz()
yk = 0.7 ⋅ yk −1 + 0.3 ⋅ xk →
→ a0 = 1, a1 = −0.7, b0 = 0.3
clear all; close all; clc

a = [1 -0.7]; b = [0.3];
h = impz(b, a, 15);

figure(1); stem(h);
xlabel('k'); ylabel('h_k'); grid on
Свертка: conv(), deconv()
Т.к. система линейная, то
Можем воспользоваться
нынешний выход есть сумма
реакций: функциями conv и deconv
k clear all; close all; clc
yk = ∑ xn hk − n
a = [-0.7]; b = [0.3];
n =−∞
xh = [1 0 0 0 0 0 0 0 0 0 0 0 0 0 0];
km = 2:length(xh); h(1) = b(1)*xh(1);
for k = km
h(k) = -a(1)*h(k-1) + b(1)*xh(k);
end

x = [0 0 0 0 0 1 1 1 1 1 1 1 1 1 1];

y = conv(x, h);
xdec = deconv(y, h);

figure(1)
stem(1:length(y), y); hold on
stem(1:length(xdec), xdec, 'r'); hold off
grid on; legend('y', 'x'); xlabel('k')
Transfer function
Вспоминаем РЦС, z-преобразование и его свойства:
+∞ k
yk = ∑ xn hk − n = ∑ xn hk − n ⇔
n =−∞ n =−∞

⇔ Y ( z ) = H ( z ) X ( z ), H ( z ) = ∑ k
h z −k

k =0
Или из уравнения:

yk + a1 yk z −1 + ... + aM yk z − M = b0 xk + b1 xk z −1 + ... + bN xk z − N

b0 + b1 z −1 + ... + bN z − N
H ( z) =
1 + a1 z −1 + ... + aM z − M
Связь с преобразованием Фурье:

− jωT
H ( jω ) = H ( z ) jωT = ∑ k
h e H ( z) =
0.3
z =e
k =0 1 − 0.7 z −1
Transfer function
clear all; close all; clc

− jωT
H ( jω ) = H ( z ) ∑ k
a = [-0.7]; b = [0.3];
jωT = h e
z =e
xр = [1 0 0 0 0 0 0 0 0 0 0 0 0 0 0]; k =0
km = 1:length(x);
for k = km yk = 0.7 ⋅ yk −1 + 0.3 ⋅ xk →
if k > 1
0.3
h(k) = -a(1)*h(k-1) + b(1)*xh(k);
H ( z) =
else
h(k) = b(1)*xh(k);
1 − 0.7 z −1
end
end

T = 0.001; f = 0:(1/T/100):(1/T);
z = exp(1i*2*pi*f*T);

H2 = 0;
for k = km
H2 = H2 + h(k) * z.^-k;
end

H1 = 0.3 ./ (1 - 0.7 * z.^-1);


figure(1); plot(f, abs(H1), f, abs(H2), '*')
xlabel('f, Hz'); ylabel('|H|'); grid('on');
freqz()
clear all; close all; clc

a = [1 -0.7]; b = [0.3];
H = freqz(b, a);

T = 0.001;
f = ( (1:length(H)) - 1)/ length(H)*1/T/2 ;

figure(1); plot(f, abs(H));


ylabel('|H|'); grid on; xlabel('f, Hz');
filter()
clear all; close all; clc

a = [1 -0.7]; b = [0.3];

x = [0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0];
y = filter(b, a, x);

figure(1)
stem(1:length(y), y); hold on
stem(1:length(x), x, 'r'); hold off
grid on; legend('y', 'x'); xlabel('k')
Коэффициенты ПФ – строки,
Нули и полюсы
нули/полюсы - столбцы
H (z) = k
(1 − z1 z −1 )(1 − z2 z −1 ) ⋅ ... ⋅ (1 − z N z −1 )
clear all; close all; clc (1 − p1 z −1 )(1 − p2 z −1 ) ⋅ ... ⋅ (1 − pM z −1 )
a = [1 -0.7]; b = [0.3];
[z, p, k] = tf2zp(b, a);

% zplane(b, a);
zplane(z, p);

pi < 1 ⇔ устойчивость
Метод инвариантности h(t)
Реализовывать цифровые фильтры в MATLAB научились, вернемся
к задаче синтеза цифрового фильтра по аналоговому прототипу

( ) ( )
xk = x tk → yk ≈ y tk ; a sj , b sj → a zj , b zj − ???

Метод инвариантности импульсной характеристики: hk = h tk ( )


( ) s= z
N N
pns t pns kT
h ( t ) = ∑ An e → hk = ∑ An e , An = H ( s ) s − zns s
n =1 n =1 n
∞ N ∞ N
pns kT − k An
H ( z ) = ∑ hk z −k
= ∑ ∑ An e z =∑
pns kT − k
k =1 n =1 k =1 n =11 − e z
Метод билинейного
Поделим на sM преобразования
M −N M −1 M
1 1 1
bN   + ... + b1   + b0  
bN s N + ... + b1 s + b0 s s s
H (s) = = M −1
aM s M
+ ... + a1 s + a0 1 1
M
aM + ... + a1   + a0  
s s
Да это же пачки интеграторов!
Метод билинейного
А давайте аналоговый
интегратор заменим цифровым!
преобразования
Интегрировать будем методом трапеций: g k = g k −1 +
( f k −1 + f k ) T
2

Итого, в качестве s должны использовать:

2  1 − z −1 
s=   Это преобразование и

T 1+ z  −1
называется билинейным
Метод билинейного
Полуплоскость переменной s
отображается в окружность
преобразования
единичного радиуса в плоскости переменной z.

Есть явление деформации оси частот.

s = jωs , z = e jΩ = e jωz T →
2 ωz T
→ ωs = tg
T 2
Можно заранее скомпенсировать
в аналоговом прототипе

2 ωs T
ωs′ = tg
T 2
Метод билинейного
Пример. Смоделируем
RC цепь, что использовали ранее.
преобразования
1 1 1 + z −1
H (s) = → H ( z) = −1
=
RC ⋅ s + 1 2 1− z 2  2  −1
RC ⋅ +1 1 + RC ⋅ +  1 − RC ⋅ z
T 1+ z −1 T  T
clear all; clc; close all;

2 RC z 2 RC
RC = 1e-6; b0z = 1, b1z = 1, a0z = 1 + , a1 = 1 −
T = RC/3; T T
as = [RC 1]; bs = [1];
[Hs, w] = freqs(bs, as);

az = [1+2*RC/T, 1-2*RC/T]; bz = [1, 1];


Hz = freqz(bz, az);

figure(1)
plot(w/2/pi/1000, abs(Hs), ...
((1:length(Hz)) - 1)/ length(Hz) *
1/T/2/1000, abs(Hz))
xlabel('f, kHz'); ylabel('|H|')
legend('|H(s)|', '|H(z)|'); grid on
Метод замены
Если 1/s – интегратор, то
s – дифференциатор!
дифференциалов

1 − z −1
Итого, в качестве s должны использовать: s=
T
Не стоит использовать когда:
- нули передаточной функции аналогового прототипа имеют
вещественную часть больше удвоенной частоты дискретизации
- нулей у передаточной функции аналогового прототипа нет
Метод замены
Пример. Смоделируем RC цепь.
дифференциалов
1 1 1
H (s) = → H ( z) = =
RC ⋅ s + 1 1 − z −1 +
RC RC −1

RC ⋅ +1 1
T T
z
T

az = [1+RC/T, -RC/T]; bz = [1]; RC z RC
b0z = 1, a0z = 1 + , a1 = −
Hz = freqz(bz, az); T T

Ограничение ИХ
При использовании перечисленных методов мы можем
ограничивать длительность импульсной характеристики.
Получаем при этом КИХ-фильтр со всеми его плюсами. НО.
Но это же применение
прямоугольного окна!
+∞
yk = ∑ xn hk − n wk − n
n =−∞
⇔ Y ( z ) = X ( z ) ( H ( z ) *W ( z ) )
А значит и
коэффициент передачи
свернется со спектром окна!

Получим эффект Гиббса.

Выбором окна можем


управлять расползанием
спектра и неравномерностью.

Вам также может понравиться