Дискретизация и повторная дискретизация моделей

В этом примере показано, как использовать команды для непрерывных/дискретных, дискретных/непрерывных и дискретных/дискретных преобразований.

Связанные команды

Control System Toolbox™ предлагает обширную поддержку дискретизации и повторной дискретизации линейных систем, включая:

  • c2d дискретизирует модели в непрерывном времени

  • d2c вычисление непрерывных расширений моделей дискретного времени

  • d2d повторяет модели в дискретном времени.

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

  • Удержание нулевого порядка

  • Удержание первого порядка

  • Импульсный инвариант

  • Тастин

  • Совпадающие полюсы/нули.

Непрерывное/дискретное преобразование

Для примера рассмотрим систему второго порядка с задержкой:

$$ G(s) = e^{-s} {s - 2 \over s^2 + 3 s + 20} $$

Чтобы вычислить дискретизацию удержания нулевого порядка (ZOH) со частотой дискретизации 10 Гц, введите

G = tf([1 -2],[1 3 20],'inputdelay',1);
Ts = 0.1;   % sampling interval
Gd = c2d(G,Ts)
Gd =
 
             0.07462 z - 0.09162
  z^(-10) * ----------------------
            z^2 - 1.571 z + 0.7408
 
Sample time: 0.1 seconds
Discrete-time transfer function.

Сравните непрерывные и дискретные переходные характеристики:

step(G,'b',Gd,'r')
legend('Continuous','Discretized')

Дискретное/непрерывное преобразование

И наоборот, можно использовать d2c вычисление «интерполяции» в непрерывном времени для данной системы дискретного времени. Начиная с дискретизации Gd вычисленный выше, преобразовать его обратно в непрерывный и сравнить с исходной моделью G:

Gc = d2c(Gd);
step(G,'b',Gd,'r',Gc,'g--')
legend('Original','Discretized','D2C Interpolant')

Два отклика в непрерывном времени идеально совпадают. Вы не всегда можете получить идеальное соответствие, особенно когда ваш интервал дискретизации Ts слишком велик, и сглаживание происходит во время дискретизации:

Ts = 1;  % 10 times larger than previously
Hd = c2d(G,Ts);
Hc = d2c(Hd);
step(G,'b',Hd,'r',Hc,'g--',10)
legend('Original','Discretized','D2C Interpolant')

Повторная дискретизация систем дискретного времени

Повторная дискретизация состоит из изменения интервала дискретной системы дискретного времени. Эта операция выполняется с d2d. Для примера рассмотрим дискретизацию на 10 Гц Gd нашей оригинальной модели в непрерывном времени G. Вы можете повторно отобразить его с частотой 40 Гц используя:

Gr = d2d(Gd,0.025)
Gr =
 
             0.02343 z - 0.02463
  z^(-40) * ----------------------
            z^2 - 1.916 z + 0.9277
 
Sample time: 0.025 seconds
Discrete-time transfer function.

Сравните это с прямой дискретизацией при частоте 40 Гц:

step(G,'b',Gr,'r',c2d(G,0.025),'g--',4)
legend('Continuous','Resampled from 0.1 to 0.025','Discretized with Ts=0.025')

Заметьте, что оба подхода приводят к одному и тому же ответу.

Какой алгоритм и частота дискретизации выбрать?

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