2017-02-25 97 views
2

我需要一点帮助,在openmodelica中初始化数组。我创建了一个modelica类,它应该生成一个可变大小的数组。大小将被设置为一个参数,并且是整数类型。以下是我想要做的一个例子。我不断收到错误消息,并很乐意收到任何提示!谢谢。在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;