Discretization of position and velocity

1 view (last 30 days)
Hey all,
I need to discretize the states x (x(1) is position, x(2) is velocity) in a function called dicretize.
function s = discretize(x, par)
if 0 < x(1) < 2*pi
x(1) = x(1);
x(1) = mod(x(1), 2*pi);
s(1) = discretize(x(1), 1,par.pos_states)

Accepted Answer

Ameer Hamza
Ameer Hamza on 29 Mar 2020
First, the condition
if 0 < x(1) < 2*pi
is not doing what it seem it does. The correct it
if 0 < x(1) && x(1) < 2*pi
Beside, why do you use the if block when you are using mod function which will automatically wrap all values in the interval [0,2*pi]. Check the following code
function s = discretize_state(x, par)
% TODO: Discretize state. Note: s(1) should be
% TODO: position, s(2) velocity.
x(1) = mod(x(1), 2*pi);
s(1) = round(x(1)/(2*pi)*(par.pos_states-1) + 1);
Ameer Hamza
Ameer Hamza on 31 Mar 2020
The first one map -pi -> 0 and pi -> 2*pi and it will wrap the values according to interval [-pi, pi]. The second one map all the values in the range [-pi pi], but to use that, you will need to change
round((x(1)/(2*pi)+0.5)*(par.pos_states-1) + 1);

Sign in to comment.

More Answers (0)


No tags entered yet.




Community Treasure Hunt

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

Start Hunting!