MATLAB: Numeric answer for PID command

MATLABmodelsimulink

I used a Simulink PD model and used values:
P=100; D=10; N=100
The input I am giving is
[0;0;0]-[0.05*(10-t);0.04*(10-t);0.03*(10-t)] where t=1:10
I get numeric values from the simulation.
I am trying to implement the same in script file but I get answer in transfer function format. I want the answer to be in numeric form like that from Simulink, Here is my MATLab code:
for t = 1:10
T_d = [0;0;0];
T_o = [0.05*(10-t);0.04*(10-t);0.03*(10-t)];
T_e = T_d-T_o;
C = pid(100,0,10,100)
T_u=T_e*C
end
Kindly help me in this regard.

Best Answer

In order to simulate the time response of a system using the MATLAB control system toolbox you can use the lsim function. Note it is not valid to multiply a transfer function by a time domain signal as you have done in your code.
I made an example following what I think you were trying to accomplish below
% define time domain reference (setpoint), measured output, and error
% signals
% signals must have a row for each time value and a column for each channel
t = 0:10; % start at initial time equal to zero continue to 10
T_d = [0 0 0];
T_o = [0.05*(10-t);0.04*(10-t);0.03*(10-t)]'; % note transpose, columns of T_o are channels
T_e = T_d-T_o;
% define PID controller parameters
Kp = 100; % proportional gain
Ki = 0; % integral gain
Kd = 10; % derivative gain
Tf = 100; % filter time constant
c = pid(Kp,Ki,Kd,Tf); % individual pid controller
C = [c 0 0;0 c 0;0 0 c]; % identical pid controllers for each channel
% simulate response of pid controller to error signal
T_u = lsim(C,T_e,t);
Related Question