処理中が終わらない

42 views (last 30 days)
Cir 2t
Cir 2t on 5 Mar 2021
Commented: Cir 2t on 6 Mar 2021
添付のscriptCCCM_2021でCCCM_2021を実行すると処理中となり、そのままフリーズします。
複素数になっているのかもしれませんが、調べ方がわかりません。
教えていただきたいです。

Accepted Answer

Hernia Baby
Hernia Baby on 5 Mar 2021
おそらくメモリ不足です。
刻み幅がめちゃくちゃ細かいので、格納するデータ量も相当なものになると思います。
--------------------------------------------------------------
以下検証
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 Comments
Hernia Baby
Hernia Baby on 5 Mar 2021
補足
disp('count'+string(t))
はステップ t をカウントしてるだけです。
これで計算がきちんと回っているか一応モニターできます
Cir 2t
Cir 2t on 6 Mar 2021
ありがとうございます。
メモリですか。
どうにか、できないか調べてみます

Sign in to comment.

More Answers (1)

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

Sign in to comment.

Categories

Find more on パフォーマンスとメモリ in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!