Этот пример показывает, как использовать команды для непрерывных/дискретных, дискретных/непрерывных, и дискретных/дискретных преобразований.
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
, чтобы вычислить непрерывно-разовый "interpolant" для данной системы дискретного времени. Начиная с дискретизации 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')
Заметьте, что оба подхода приводят к тому же ответу.
Смотрите, что пример назвал Дискретизацию Фильтра Метки для получения дополнительной информации о том, как выбор алгоритма и уровня выборки влияет на точность дискретизации.