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

13 ビュー (過去 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 件)

カテゴリ

Help Center および File ExchangeMarkov Chain Models についてさらに検索

Community Treasure Hunt

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

Start Hunting!