How to turn a continuous time-y(t) array into Zero-Order-Hold and Tustin method discrete plot with different Ts

9 次查看(过去 30 天)
Hi, I've obtained the continuous plant of a cone-shaped-tank on Simulink. I took the data and turned into arrays both for time and y(t). I'd like to discretize both with ZOH and Tustin.
I haven't found any method yet.
Thank you in advance,
Pablo.
  4 个评论
Manikanta Aditya
Manikanta Aditya 2024-4-12
If you have time-series data and you want to estimate a transfer function, you can use the tfest function in MATLAB’s System Identification Toolbox. Here is a simple example:
% Assuming 'time' and 'y' are your arrays
data = iddata(y,[],Ts); % Create an iddata object, Ts is your sampling time
np = 2; % Number of poles
nz = 0; % Number of zeros
sys = tfest(data,np,nz); % Estimate transfer function
Once you have the transfer function, you can then discretize it using the Zero-Order Hold (ZOH) and Tustin methods as mentioned in the previous comments.
% For Zero-Order Hold
sys_zoh = c2d(sys, Ts, 'zoh');
% For Tustin method
sys_tustin = c2d(sys, Ts, 'tustin');
Pablo Graale
Pablo Graale 2024-4-12
Mmm it doesn't allow me to use the tfest function with the data obtained with the iddata command. I've obtained something replacing the [] with the time, but I'm not certain the obtained data makes sense.
With the data from my system on Simulink I had the following
What the second plot means, is that the cone-shaped-cone takes about 25 seconds to empty and the dashed line is the linearized system I obtained with the Taylor expansion. The system looks a bit complex, I wish it was just a transfer function

请先登录,再进行评论。

回答(0 个)

产品


版本

R2021a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by