【发布时间】:2021-10-13 11:16:12
【问题描述】:
我想为矩阵增加价值。 但是,我做不到。 我为强化学习制作了阶梯函数,并计算了名为 R 的值。 我想收集 R 的值并添加到名为 RR 的矩阵中。 但是,不会添加所有计算值。 这是因为它是在函数内部完成的吗?如果它不在函数中,它可以工作。 请大神告诉我解决方法。
% Define the step function
function [NextObservation, Reward, IsDone, LoggedSignals] =
myStepfunction(Action,LoggedSignals,SimplePendulum)
% get the pre statement
statePre = [-pi/2;0];
statePre(1) = SimplePendulum.Theta;
statePre(2) = SimplePendulum.AngularVelocity;
IsDone = false;
% updating states
SimplePendulum.pstep(Action);
% get the statement after updating
state = [-pi/2;0];
state(1) = SimplePendulum.Theta;
state(2) = SimplePendulum.AngularVelocity;
RR = [];
Ball_Target = 10;
Ball_Distance = Ballfunction(SimplePendulum);
R = -abs(Ball_Distance -Ball_Target); ← this the calculated value
RR = [RR,R]; ← I want to add R to RR
if (state(2) > 0) || (SimplePendulum.Y_Position < 0)
IsDone = true;
[InitialObservation, LoggedSignal] = myResetFunction(SimplePendulum);
LoggedSignal.State = [-pi/2 ; 0];
InitialObservation = LoggedSignal.State;
state = InitialObservation;
SimplePendulum.Theta =-pi/2;
SimplePendulum.AngularVelocity = 0;
end
LoggedSignals.State = state;
NextObservation = LoggedSignals.State;
Reward = +max(R);
end
【问题讨论】:
-
要在函数之外更新
RR,您需要将RR传递给函数并再次退出。 -
您正确地将
R添加到RR,但是当您添加RR = []时,您将RR设置为一个空矩阵。