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

10 views (last 30 days)
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 Comments
Manikanta Aditya
Manikanta Aditya on 12 Apr 2024
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 on 12 Apr 2024
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

Sign in to comment.

Answers (0)

Products


Release

R2021a

Community Treasure Hunt

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

Start Hunting!