計算で得られる値を別の行列に追加したいのですが,1つの値しか追加されないです.どなたかご教示の程,お願い致します.
Rという値が計算で得られて,その値を1つずつ,RRという行列に追加したいです.
RR = [];
R = 式
RR = [RR;R]を試したのですが,上手くいかないです.
myStepfunctionを何度も実行して、一回実行したら「RR」の末尾にその時に計算した「R」を一つ追加したいです.
function [NextObservation, Reward, IsDone, LoggedSignals] = myStepfunction(Action,LoggedSignals,SimplePendulum) % 操作する前の状態を取得 statePre = [-pi/2;0]; statePre(1) = SimplePendulum.Theta; statePre(2) = SimplePendulum.AngularVelocity; IsDone = false; % 状態を更新 SimplePendulum.pstep(Action); % 操作後の状態を取得 state = [-pi/2;0]; % 状態を初期化 state(1) = SimplePendulum.Theta; % 角度 state(2) = SimplePendulum.AngularVelocity; % 角速度 X_state_Position = sin(state(1)); Y_state_Position = -cos(state(1)); % ボールの距離の計算と誤差 R = ones(1,1); RR = []; Ball_Target = 10; Ball_Distance = X_state_Position + (-state(2))* sqrt(2*abs(Y_state_Position)/9.8); R = -abs(Ball_Distance -Ball_Target);** ←ここでRを計算,常にRは値が更新されます.** RR = [RR;R]; **←計算されたRを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 コード
回答1件
あなたの回答
tips
プレビュー