2017-02-25 19 views
2

openmodelicaで配列を初期化するには少し助けが必要です。可変サイズの配列を生成するmodelicaクラスを作成しました。サイズはパラメータとして設定され、整数型です。以下は、私がしたいことの例です。私はエラーメッセージを受け取り続け、喜んでヒントを受け取ります!ありがとう。モデルで未知のサイズの配列を初期化する

parameter Integer f_min; 
parameter Integer f_max; 
Integer Freq_steigerung; 
Integer array_size; 
Integer Freq[:]; 

equation 
array_size = ceil((f_max-f_min)/Freq_steigerung); 
Freq[array_size] = f_min: Freq_steigerung: f_max; 

答えて

4

実行時に可変サイズの配列をModelicaで使用することはできません。 すべての配列サイズはコンパイル時に知る必要があるため、サイズはパラメータまたは定数である必要があります。

配列サイズが不明なコンポーネントを含む関数(またはレコード)を持つことはできますが、呼び出し時にバインドする必要があります(コンパイル時にはまだわかっています)。このような

何かが動作します:以下

model T 
    parameter Integer f_min; 
    parameter Integer f_max; 
    parameter Integer Freq_steigerung; 
    parameter Integer array_size = integer(ceil((f_max-f_min)/Freq_steigerung)); 
    Integer Freq[array_size]; 
equation 
    Freq = f_min: Freq_steigerung: f_max; 
end T; 
+1

実際には、方程式の初期化も機能します。 – Gladson

0

functionsを使用する場合に適用される未知の配列サイズに関する関連答えです。

sizeコマンドは、元の配列のサイズは不明ですが、変数にはその情報をインスタンス化する必要がある場合に使用できます。この使用法を以下に示します。

function test 
    input Real[:] x1; 
    input Real[size(x1,1)] x2; 

    output Real[size(x1,1)] y; 
algorithm 
    y = x1.*x2; 
end test;