処理中が終わらない

60 ビュー (過去 30 日間)
Cir 2t
Cir 2t 2021 年 3 月 5 日
コメント済み: Cir 2t 2021 年 3 月 6 日
添付のscriptCCCM_2021でCCCM_2021を実行すると処理中となり、そのままフリーズします。
複素数になっているのかもしれませんが、調べ方がわかりません。
教えていただきたいです。

採用された回答

Hernia Baby
Hernia Baby 2021 年 3 月 5 日
おそらくメモリ不足です。
刻み幅がめちゃくちゃ細かいので、格納するデータ量も相当なものになると思います。
--------------------------------------------------------------
以下検証
CCCM_2021.mにカウントを入れました。
disp('count'+string(t))
scriptCCCM_2021でレンジを変えて計算しましたがものすごいです
[TClock_AR2011,XClock_AR2011] = ode45(@CCCM_2021, [0 5], IC , options);
特に以下はものすごい計算量になります。
sol = ode45(@CCCM_2021, [0 2], XClock_AR2011(end,:), options);
一応これで計算は回りました
これだけ短くしてもワークスペース内の変数サイズは大きいので元のコードだとメモリがパンクすると思います。
刻み幅を大きくするか、レンジを短くするしかないのかなと思います。
  2 件のコメント
Hernia Baby
Hernia Baby 2021 年 3 月 5 日
補足
disp('count'+string(t))
はステップ t をカウントしてるだけです。
これで計算がきちんと回っているか一応モニターできます
Cir 2t
Cir 2t 2021 年 3 月 6 日
ありがとうございます。
メモリですか。
どうにか、できないか調べてみます

サインインしてコメントする。

その他の回答 (1 件)

OH
OH 2021 年 3 月 5 日
この分野には詳しくないのですが、
フリーズはPCのハードウェア的な問題かと思われます。(メモリー不足等)
CCCM_2021.mの最後の行にendを足して、script_CCCM2021.mで使われているode45()の引数であるtspanを短くすることでプログラム回りました。
ですが、時間はかなりかかりそうですね。matlabのプロファイラを見る限り変数の事前割り当て等、プログラムの最適化が必要だと思います。
  1 件のコメント
Cir 2t
Cir 2t 2021 年 3 月 6 日
ありがとうございます。

サインインしてコメントする。

カテゴリ

Help Center および File Exchangeパフォーマンスとメモリ についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!