処理中が終わらない

80 vues (au cours des 30 derniers jours)
Cir 2t
Cir 2t le 5 Mar 2021
Commenté : Cir 2t le 6 Mar 2021
添付のscriptCCCM_2021でCCCM_2021を実行すると処理中となり、そのままフリーズします。
複素数になっているのかもしれませんが、調べ方がわかりません。
教えていただきたいです。

Réponse acceptée

Hernia Baby
Hernia Baby le 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 commentaires
Hernia Baby
Hernia Baby le 5 Mar 2021
補足
disp('count'+string(t))
はステップ t をカウントしてるだけです。
これで計算がきちんと回っているか一応モニターできます
Cir 2t
Cir 2t le 6 Mar 2021
ありがとうございます。
メモリですか。
どうにか、できないか調べてみます

Connectez-vous pour commenter.

Plus de réponses (1)

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

Connectez-vous pour commenter.

Catégories

En savoir plus sur プログラミング dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!