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

4 ビュー (過去 30 日間)
Yusuke Kurisu
Yusuke Kurisu 2022 年 1 月 15 日
コメント済み: 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 件)

Community Treasure Hunt

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

Start Hunting!