4

Modelica ライブラリ (Modelica.Blocks.Continuous.TransferFunction) の伝達関数ブロックに次の行があることに気付きました。

parameter Real bb[:] = vector([zeros(max(0,na-nb),1);b]);

「ベクトル」関数呼び出しが何をするのか、なぜそれが必要なのか理解できません。しません

parameter Real bb[:] = [zeros(max(0,na-nb),1);b];

同じ結果につながる?

Modelica Language Specification 3.2 で次の説明を見つけましたが、実際には役に立ちません。

"vector(A) - A がスカラーの場合は 1-ベクトルを返し、それ以外の場合は配列のすべての要素を含むベクトルを返します。最大で 1 つの次元が存在する場合size > 1です。"

全体の話は、Modelica の配列とベクトルの違いに基づいていると思います。誰かが私がそれを整理するのを手伝ってくれたら、私は感謝します.

4

1 に答える 1

4

簡単な答え: ベクトルは 1 次元配列です。

次のように宣言したとします。

Real x[1,5,1,1];

この物体には 5 つの要素しかなく、それらはすべて同じ次元に含まれています。では、これを 5 要素の単純なベクトルに変換したい場合はどうなるでしょうか。これを行うことができます:

Real y[5] = { x[1,i,1,1] for i in 1:5 };

しかし、それは面倒です。代替手段は次のとおりです。

Real y[5] = vector(x);

コンパイラはこれを見て、a を持つ次元を自動的に見つけ、size>1すべての要素をベクトルとして引き出します。

そして、あなたが提起した1つの点に対処するために、これは有効ではありません:

Real z[5] = [1,2,3,4,5];

左側がベクトル (1 次元) で、右側が配列であるためです。通常、右側を使用する場合、左側は次のようにする必要があります。

Real z[1,5] = [1,2,3,4,5];

それをベクトルに詰め込みたい場合は、右辺を配列からベクトルに変換する必要があります。つまり、

Real z[5] = vector([1,2,3,4,5]);

それは役に立ちますか?

于 2013-10-28T18:32:55.207 に答える