Discretization of position and velocity
1 view (last 30 days)
Show older comments
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);
else
x(1) = mod(x(1), 2*pi);
end
s(1) = discretize(x(1), 1,par.pos_states)
0 Comments
Accepted Answer
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);
end
6 Comments
Ameer Hamza
on 31 Mar 2020
Giulio, try this
x(2) = mod(x(2)+pi, 2*pi);
The second line should be correct.
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);
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!