Modelica中平均值和标准差的计算

Modelica中平均值和标准差的计算,modelica,Modelica,在Modelica中,计算连续信号的平均值(mean)和标准偏差(StdDev)的最佳方法是什么。应计算固定时间T内的平均值和STDEV;i、 例如,从t-t到t。下面是问题的离散解决方案。它在Modelica中编码为一个块,具有1个连续输入和2个连续输出信号。使用Modelica内置函数示例完成离散化: block MeanStdDevDiscr "Determines the mean value and standard deviation of a signal for a fixed

在Modelica中,计算连续信号的平均值(mean)和标准偏差(StdDev)的最佳方法是什么。应计算固定时间T内的平均值和STDEV;i、 例如,从t-t到t。

下面是问题的离散解决方案。它在Modelica中编码为一个块,具有1个连续输入和2个连续输出信号。使用Modelica内置函数示例完成离散化:

block MeanStdDevDiscr 
"Determines the mean value and standard deviation of a signal for a fixed time interval T."
  extends Modelica.Blocks.Interfaces.BlockIcon;
  import SI = Modelica.SIunits;

  parameter SI.Time T = 0.1 
    "Time interval used for calculating mean value and standard deviation";
  parameter Integer n = 10 "number of increments in T";

  Modelica.Blocks.Interfaces.RealInput u "signal input"
    annotation (Placement(transformation(extent={{-140,-20},{-100,20}})));
  Modelica.Blocks.Interfaces.RealOutput[2] y 
    "y[1] = average value; y[2] = standard deviation"
    annotation (Placement(transformation(extent={{100,-10},{120,10}})));

protected 
  parameter SI.Time dt = T/n "Precision of monitor";
  Real[n] uArray;

initial equation 
  uArray = ones(n)*u;

equation 
  when sample(0, dt) then
    uArray[1] = u;
    for j in 2:n loop
      uArray[j] = pre(uArray[j-1]);
    end for;
  end when;
  y[1] = sum(uArray)/n; // mean value
  y[2] = sqrt(sum((uArray .- y[1]).^2)/n); // standard deviation

  annotation (Diagram(graphics));
end MeanStdDevDiscr;

有模拟连续解决方案吗?