Discretization of position and velocity
조회 수: 1 (최근 30일)
이전 댓글 표시
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
채택된 답변
Ameer Hamza
2020년 3월 29일
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
Ameer Hamza
2020년 3월 31일
Giulio, try this
x(2) = mod(x(2)+pi, 2*pi);
The second line should be correct.
Ameer Hamza
2020년 3월 31일
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);
추가 답변 (0개)
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!