「読み取り専用であるため、クラス 'dtmc' の 'P' プロパティを設定でき​ません。」を解決する​にはどうすればよいで​すか?

13 次查看(过去 30 天)
Yusuke Kurisu
Yusuke Kurisu 2022-1-15
マルコフ連鎖のMATLAB関数について質問です。
https://jp.mathworks.com/help/econ/dtmc.html
「読み取り専用であるため、クラス 'dtmc' の 'P' プロパティを設定できません。」のエラーを回避し、
mc = dtmc(P)を実行後のmc.Pを編集可能にしたいのですが、どうすればよいでしょうか?
  1 个评论
Atsushi Ueno
Atsushi Ueno 2022-1-15
mc.Pを編集する為にdtmc関数を使って新たにmcを作り直せば良いと思ったのですが、直接mc.Pを変更したい理由があるのでしょうか?
mc = dtmc([0.5 0.5 0 0; 0.5 0 0.5 0; 0 0 0 1; 0 0 1 0], ...
'StateNames',["Depression" "Recession" "Stagnant" "Boom"])
mc =
dtmc with properties: P: [4×4 double] StateNames: ["Depression" "Recession" "Stagnant" "Boom"] NumStates: 4
mc.P
ans = 4×4
0.5000 0.5000 0 0 0.5000 0 0.5000 0 0 0 0 1.0000 0 0 1.0000 0
mc.P = [0.5 0.5 0 0; 0.5 0 0.5 0; 0 0 0 1; 0 0 1 0]
Unable to set the 'P' property of class ''dtmc'' because it is read-only.

请先登录,再进行评论。

采纳的回答

Atsushi Ueno
Atsushi Ueno 2022-1-15
which dtmc % 御使用の環境により場所は異なります
/MATLAB/toolbox/econ/econ/@dtmc/dtmc.m % dtmc constructor
の最初の方にある
properties (SetAccess = private, GetAccess = public) % privateをpublicに変更する
P % Normalized transition matrix
end
上記のprivateをpublicに変更すればやりたい事が実現するはずです。(動作確認していません)
ただToolboxの中身を変更する事はあまり推奨できないので、独自の構造体を作成する方が良いと思います。
  1 个评论
Yusuke Kurisu
Yusuke Kurisu 2022-1-15
先程コメントをいただいた件につきましては、複数の解析対象を複数回dtmc関数を実行し、それぞれの遷移確率の平均をmc.Pに代入し、プロットしてみたかったためです。
また、いただいた回答により、やりたい事が実現できました(あまり多用しないようにします)。
大変ありがとうございました。

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Markov Chain Models 的更多信息

Community Treasure Hunt

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

Start Hunting!