Arrays 初始化modelica中大小未知的数组
我需要一些帮助来初始化openmodelica中的数组。我创建了一个modelica类,它应该生成一个大小可变的数组。大小将设置为参数,类型为整数。下面是我想做的一个例子。我不断地收到错误信息,很乐意收到任何提示!谢谢Arrays 初始化modelica中大小未知的数组,arrays,modelica,Arrays,Modelica,我需要一些帮助来初始化openmodelica中的数组。我创建了一个modelica类,它应该生成一个大小可变的数组。大小将设置为参数,类型为整数。下面是我想做的一个例子。我不断地收到错误信息,很乐意收到任何提示!谢谢 parameter Integer f_min; parameter Integer f_max; Integer Freq_steigerung; Integer array_size; Integer Freq[:]; equation array_size = ceil(
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;
在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;
下面是有关使用
函数时适用的未知数组大小的相关答案
当原始数组的大小未知但变量需要该信息才能实例化时,可以使用size
命令。这种用法如下所示
function test
input Real[:] x1;
input Real[size(x1,1)] x2;
output Real[size(x1,1)] y;
algorithm
y = x1.*x2;
end test;
也可以仅在函数
的算法部分确定数组的大小。在这里,您甚至不必显式地给出数组的大小
请参阅下面的用法
function T
input Integer f_min;
input Integer f_max;
input Integer Freq_steigerung;
output Integer Freq[:];
algorithm
Freq := f_min:Freq_steigerung:f_max;
end T;
如果在模型中使用此函数,则必须创建一个函数来计算输出的大小,并将其作为T函数的输入(或至少在使用Dymola时):
见:
在许多情况下,您可以使其更加简单:
model T
parameter Integer f_min;
parameter Integer f_max;
parameter Integer Freq_steigerung;
Integer Freq[:]= f_min: Freq_steigerung: f_max;
end T;
它起作用了。事实上,方程外的初始化也有效。你的代码中有一个错误,Freq应该是Frewsry,因为我输入了错误。。。我修好了
model T
parameter Integer f_min;
parameter Integer f_max;
parameter Integer Freq_steigerung;
Integer Freq[:]= f_min: Freq_steigerung: f_max;
end T;