Azzera filtri
Azzera filtri

Discretization of position and velocity

5 visualizzazioni (ultimi 30 giorni)
GCats
GCats il 29 Mar 2020
Modificato: GCats il 4 Apr 2020
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)

Risposta accettata

Ameer Hamza
Ameer Hamza il 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 Commenti
Ameer Hamza
Ameer Hamza il 31 Mar 2020
Giulio, try this
x(2) = mod(x(2)+pi, 2*pi);
The second line should be correct.
Ameer Hamza
Ameer Hamza il 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);

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Big Data Processing in Help Center e File Exchange

Tag

Non è stata ancora inserito alcun tag.

Prodotti


Release

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by