0

変数は j = 1 で始まるようになりましたが、増分が間違っています。t = 0.5 の場合、値は 2 であり、t = 1、j = 3 などの場合... 次の画像にエラーが表示されます。

変数j

class abc

import Modelica.SIunits;

parameter SIunits.Time delta_t = 0.5;

constant Real a[:] = {4,2,6,-1,3,5,7,4,-3,-6};

Real x;
Integer j(start=1);
Integer k = size(a,1);

algorithm
when {(sample(delta_t, delta_t) and j < k),j == 1} then

     x := a[pre(j)];
     j := pre(j) + 1;

end when;
end abc;

前もって感謝します。

4

2 に答える 2

0

私があなたのコードをDymola2013に入れると、私はあなたが期待したものを正確に取得します、j==2@ time==0.5

このプロットはどこから来たのですか?jは離散変数であるため、Dymolaはそのようなプロットを生成しません。

于 2013-02-26T13:47:23.540 に答える
0

わかりました、問題が見つかりました。Dymola はこのようなプロットを生成できますが、出力設定によって異なります。上記のプロットは、「イベント時に変数を保存する」を設定せずに生成されました。これを設定すると、正しい結果が得られます。

于 2013-02-28T07:24:44.303 に答える