89 views (last 30 days)

Show older comments

How to obtain a step response starting from 10?

ie; the initial value of u_del is 10. Hence the response should start from 10.

k=0.2;

t2=400;

u_del=(0.0022*k*(s+0.06931)*(s^2+0.4852*s+0.1492))/((s+0.04833)*(s+0.004352)*(s^2+0.06012*s+0.01331));

figure

step(u_del,t2);

ylabel('Velocity,u (m/s)','fontsize',10);

title('Time Response');

grid

VBBV
on 19 Apr 2021 at 9:14

k = 1:10;

t2 = linspace(1,400,length(k))

u_del=@(k,s) (0.0022*k.*(s+0.06931).*(s.^2+0.4852*s+0.1492))./((s+0.04833).*(s+0.004352).*(s.^2+0.06012*s+0.01331));

figure

step(u_del(1:10,1:10),t2);

ylabel('Velocity,u (m/s)','fontsize',10);

title('Time Response');

grid

try this

Star Strider
on 19 Apr 2021 at 12:30

To set the step amplitude to 10, try this:

k=0.2;

t2=400;

s = tf('s');

u_del=(0.0022*k*(s+0.06931)*(s^2+0.4852*s+0.1492))/((s+0.04833)*(s+0.004352)*(s^2+0.06012*s+0.01331));

opts = stepDataOptions('StepAmplitude',10); % Set Amplitude

figure

step(u_del,t2,opts); % Add ‘opts’ Argument

ylabel('Velocity,u (m/s)','fontsize',10);

title('Time Response');

grid

.

Star Strider
on 19 Apr 2021 at 15:31

When I first tried to run your code, it threw:

Unrecognized function or variable 's'.

so I added the tf call, since that makes sense in the context of the Control System Toolbox, and the posted code.

I cannot guess as to what the exact problem is, only that ‘tf’ appears to have been assigned as a vector or other variable in code you did not post, and MATLAB is interpreting the 's' as the ASCII numeric equivalent, and throwing that error. The unposted code therefore overshadowed the very useful tf function with something else.

Ignore whatever exists before my posted code and run only my code as I posted it to get the desired result.

My posted code runs without error.

Paul
on 20 Apr 2021 at 2:43

Paul
on 20 Apr 2021 at 4:08

One of many, many possibilities would be:

>> u_delss=ss(u_del);

>> x0=[10/u_delss.c(1) 0 0 0];

>> t = 0:1:t2;

>> y = step(u_delss,t) + lsim(u_delss,0*t,t,x0);

>> plot(t,y,t(1:10:end),y(1:10:end),'o'),grid

Probably doesn't give the response you're looking for, but it is the response of the system u_delss to a unit step input with initial conditions x0 that result in y(t=0) = 10.

Did you just want something simple like:

[y,t] = step(u_del);

plot(t,y+10),grid

Note that this isn't the step response of u_del.

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

Start Hunting!