В этом примере показано, как использовать команды для непрерывных/дискретных, дискретных/непрерывных и дискретных/дискретных преобразований.
Control System Toolbox™ предлагает обширную поддержку дискретизации и повторной дискретизации линейных систем, включая:
c2d
дискретизирует модели в непрерывном времени
d2c
вычисление непрерывных расширений моделей дискретного времени
d2d
повторяет модели в дискретном времени.
Для выполнения этих операций доступно несколько алгоритмов, включая:
Удержание нулевого порядка
Удержание первого порядка
Импульсный инвариант
Тастин
Совпадающие полюсы/нули.
Для примера рассмотрим систему второго порядка с задержкой:
Чтобы вычислить дискретизацию удержания нулевого порядка (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')
Заметьте, что оба подхода приводят к одному и тому же ответу.
Смотрите пример, озаглавленный Дискретизация узкополосного фильтра, для получения дополнительной информации о том, как выбор алгоритма и частота дискретизации влияют на точность дискретизации.