variables - Modelica中时间变量的平均值
问题描述
我有一个简单的模型如下,我打算计算 x 导数 wrt time(der(x)) 的平均值。
model Average
Real x;
initial equation
x = 2.0;
equation
der(x) = x + 5;
annotation (experiment(StopTime=10, __Dymola_Algorithm="Dassl"));
end Average;
关键是它是原始代码的简化代码,其中“x”由 CombiTimeTable 给出。我需要执行几个模拟(通过几个文本文件作为 CombiTimeTable 的输入),它们没有相同的行数(不同的持续时间)。换句话说,StopTime 因情况而异,例如在此特定情况下,StopTime 为 10 秒。有没有办法使用一般方程来计算 der(x) 的平均值。如果有人可以提供帮助,我将不胜感激。
解决方案
假设你想要 der(X) 的平均值,你就不能将平均值计算为 (x2-x1)/(time2-time1) 吗?
如果您想要数值解而不是解析,请使用 Modelica.Blocks.Math.Mean。请注意,它对信号进行采样,因此会出现一些数字错误。为了提高准确性,您需要减少采样周期,但这样做会增加模拟系统所需的时间。如果您不需要在模拟期间使用平均值,也可以使用结果文件的后处理。
推荐阅读
- r - 使用 R 检查值是否在区间内
- google-sheets - Google Sheet:COUNTA 无法识别公式生成的空白单元格
- sql-server - OWIN + Identity + Web Api 中的 SQL 连接泄漏
- graphql - GraphQL:POST 正文丢失、无效的 Content-Type 或 JSON 对象没有键
- sql-server - 重新格式化来自 Azure 数据工厂 V2 中数据流的错误消息
- python - confluent kafka producer avro schema error ClientError: Schema parse failed: Unknown named schema
- database-design - 存储多对多模型(标签)数据的最佳实践
- vue.js - vuejs 支持 v-model 到 getdata
- command-line - 如何从命令行获取命令行变量到jupyter?
- scala - 通过在另一个表上查找对数据框列表的值进行排序