在 Modelica (SystemModeler) 中生成白噪声

2024-03-18

我正在尝试将测量噪声添加到模拟中。这可以在 Simulink 等中完成,但在 Modelica 和 SystemModeler 中似乎更困难。

关于如何做到这一点有什么想法吗?


您可以通过外部 C 代码在 Wolfram SystemModeler 中添加白噪声。

Modelica 代码(我已从代码中删除了图表注释,以便更容易阅读):

package WhiteNoise "Package for generating white noise"
  extends Modelica.Icons.Library;

  block NoiseNormal "Normally distributed random noise"
    parameter Real mean=0 "Mean value of random noise";
    parameter Real stdev=1 "Standard deviation of random noise";
    parameter Real tSample=0.01 "Noise sample time";
    Modelica.Blocks.Interfaces.RealOutput y;
  equation 
    when initial() then
      WhiteNoise.initRandomNormal();
    end when;
    when sample(0, tSample) then
      y=mean + stdev*WhiteNoise.RandomNormal(time);
    end when;
  end NoiseNormal;

  function initRandomNormal
    external "C" ext_initRandomNormal()   annotation(Include="#include \"ext_initRandNormal.c\"");
  end initRandomNormal;

  function RandomNormal
    output Real y;
    input Real u;
    external "C" y=ext_RandomNormal(u)   annotation(Include="#include \"ext_RandNormal.c\"");
  end RandomNormal;

end WhiteNoise;

外部代码:

ext_intRandNormal.c

#include <math.h>
#include <limits.h>

void ext_initRandomNormal()
{
    srand(time(NULL));
}

ext_RandNormal.c

#include <math.h>
#include <limits.h>
double ext_RandomNormal(double timein)

{
    unsigned int seed = 0;
    double v1, v2, r;

    timein /= 100;
    seed = (timein - floor(timein)) * UINT_MAX;

    do
    {
        v1 = 2 * ((double) rand()) /((double) RAND_MAX) - 1;
        v2 = 2 * ((double) rand()) /((double) RAND_MAX) - 1;
        r = v1 * v1 + v2 * v2;
    } while((r >= 1.0) || (r == 0.0));

    return v1 * sqrt( - 2.0 * log(r) / r );
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Modelica (SystemModeler) 中生成白噪声 的相关文章

  • OpenModelica 建模库仑摩擦:翻译错误,优化后模块 findZeroCrossings(模拟)失败

    我正在尝试在 Modelica 中模拟库仑摩擦力 基本概念是检查表面之间的相对速度是否小于常数 并且试图使表面相互滑动的外力是否小于最大静摩擦力 法线力 静摩擦系数 则摩擦力等于负值的外部剪切力 否则 摩擦力等于滑动方向相反方向的动摩擦力
  • 两相 Modelica Media 示例

    我正在尝试在 OpenModelica 中开发具有单一物质 液体或蒸汽 的流动模拟 Modelica Media Water 模型确实有两个阶段 但极其复杂 并且很难用完全不同的物质来重现 我想找到一个我可以使用的两相介质的简单示例 有一个
  • Modelica 类图

    我正在寻找一种可以 自动 从 Modelica 代码创建类图的工具 https trac modelica org Modelica attachment ticket 85 classDiagramModelicaMedia png我需要
  • 非线性代数方程的初步猜测

    我有一个非线性代数方程组需要求解 如何使用计算值 具有连续时间变化 作为解变量的初始猜测 而不是使用参数作为起始值 初始方程部分可以用于此目的吗 我创建了一个测试模型来解释这个问题 model Teststartvalue Real val
  • 何时在 Modelica 语言中使用 noEvent 运算符?

    Modelica 中的 noEvent 运算符不使用迭代来查找触发事件的精确时刻 看来这会导致计算错误 这是我在以下网站上找到的示例https mbe modelica university behavior discrete decay
  • 外部函数:从 C 脚本使用 .dll 的替代方法

    这是一个伴随问题外部函数 在 C 脚本中引用头文件来编译 dll 该堆栈溢出问题是使用 Modelica 外部函数调用 c 脚本 然后 该 c 脚本使用 dll 中包含的 c 函数 以下是我尝试过的最初首选方法和我不喜欢的工作尝试 初步尝试
  • 使用 python 进行 Modelica 参数研究

    我想使用 python 在不同的 modelica 建筑库 建筑物 IDEAS 中运行参数研究 例如 更改渗透率 我尝试过 simulateModel和simulateExtendedModel zone n50 value 我的问题 为什
  • 在 OpenModelica 中模拟闭式液压循环

    我想对一个封闭的液压循环进行建模 正如人们可以在 Modelica 标准库 流体 示例 加热系统中找到的那样 对于供暖系统以及我的 简约 示例 我遇到了同样的问题 系统是超定的 在接下来的讲座中 您可以发现加热系统是一个 坏例子 所以我想这
  • 外部函数:在 C 脚本中引用头文件来编译 dll

    使用 Dymola 2017 情况 A 调用外部 c 脚本 我已经成功实现了没有 include 语句的简单外部 c 函数 模型功能 function chirp input Modelica SIunits AngularVelocity
  • 是否可以在 Windows 机器上从 Dymola 编译 Linux 可运行的 fmus?

    我正在尝试使用 Dymola 从 Windows 计算机导出 FMU 以便在 Linux 和 Windows 操作系统上使用 我猜这样的 fmu 将有 linux64 和 linux32 二进制文件以及 win32 和 win64 二进制文
  • 如何在 Dymola 中隐藏模拟变量

    模拟模型后是否可以隐藏对象或输出 我有很多东西 我觉得我在浪费时间筛选它们试图找到我的正确答案 如果没有 有没有办法组织我的输出在模拟选项卡中的显示方式 Thanks Dymola 的主要可能性是 使组件受到保护 默认情况下 受保护的组件不
  • FMU FMI模拟,设置某类参数时不修改结果

    我为该示例开发了一个基于 MSL 流体库的简单 Modelica 模型 我将 MassFlowSource 与管道和 Boundary PT 连接为接收器功能 如下图所示 http www casimages com img php i 1
  • 在 Modelica 模拟中包含因果关系会导致模型扁平化时出现平移错误

    我想模拟基于能量工作的质量弹簧模型的控制器 model model parameters parameter Real m 1 parameter Real k 1 parameter Real Fmax 3 parameter Real
  • 使用“在模型中保存起始值”选项来帮助 Dymola 中的收敛

    I build a model in dymola Even though there are some errors during the initialization process but the calculation succee
  • 如何将一个向量的参数插入另一个向量?

    我有一个大小为 5 的 重心 向量 parameter Length barycenters 5 1 2 3 4 5 我想将此向量的参数添加到另一个大小为 7 的向量 b prime 中 这意味着打算让 b prime 0 1 2 3 4
  • 后续问题:Modelica仿真和方程初始化总时间计算

    我正在写这个相关问题this https stackoverflow com questions 61375492 modelica total time calculation of simulation and equation ini
  • 如何将自定义包添加到 Dymola/Modelica 的启动路径中?

    我有一个自定义包 我发现自己在 Dymola 模型中重复使用该包 并且我想将此包放在一个公共目录中 每当我启动 Dymola 时都会自动加载该目录 我当前的策略是在加载我正在处理的模型时加载自定义包 然后保存总计 这并不优雅 因为自定义包的
  • 使用 pyFMI 进行模拟时出现 CVodeError

    我尝试在 Anaconda Python 3 6 8 上设置 pyFMI 安装 pyFMI 站点上列出的所有必需软件包 fmu 加载没有问题 但当我尝试模拟 fmu 时 出现错误 Could not find cannot import n
  • 在 Modelica (SystemModeler) 中生成白噪声

    我正在尝试将测量噪声添加到模拟中 这可以在 Simulink 等中完成 但在 Modelica 和 SystemModeler 中似乎更困难 关于如何做到这一点有什么想法吗 您可以通过外部 C 代码在 Wolfram SystemModel
  • Modelica 外部函数:C 与 C99

    在 Modelica 中可以定义外部函数 规范第 12 9 章表示支持 C 和 Fortran77 将来可能会支持 C 和 Fortran90 现在我想知道哪个C 的版本 http en wikipedia org wiki C progr

随机推荐

  • 生成多个pandas数据框

    我正在从网站检索 csv 格式的多个数据框 我将数据帧保存在一个空列表中 然后一一读取 我无法将它们附加到单个数据框中 因为它们具有不同的列名称和列顺序 所以我有以下问题 我可以在用于读取文件的循环内创建一个具有不同名称的数据框 这样我就可
  • MinGW 的 msvcrt 替代品? (例如,获得符合要求的 snprintf)

    所以这是一个有趣的 我们有一些 C 库should与平台无关 即使它们是在 Linux 上开发的 因为它们仅依赖于 ISO IEC 9899 1999 中定义的 C 标准库 当我们用 MinGW 编译这些库时 一开始一切似乎都工作正常 但今
  • 这是什么类型的图表?可以使用 ggplot2 创建它吗?

    我有这张图表 我正在尝试复制 它有两个 X 轴和 Y 轴连续变量 并用一条线绘制这两个变量之间随时间变化的关系 我的问题有两个部分 首先 这种类型的图表叫什么 这是不寻常的 因为点之间的线是由第三个变量 年份 决定的 而不是它们在 X 轴上
  • SQL Server集成身份验证模式

    我想知道何时在 Web 应用程序的连接字符串中使用 Windows 身份验证模式 应用程序本身使用 Windows 身份验证进行授权 将使用哪个帐户登录 SQL Server 不是web应用程序池帐号吗 使用 Windows 身份验证登录
  • 突然间无法再在 IntelliJ 中运行 Kotlin 测试

    我有一个大型 Kotlin 项目 其中包含为 KotlinTest 编写的大约 2500 个单元测试 该项目是一个 Gradle 项目 我能够从 Gradle 任务运行所有测试 但通常我从编辑器运行它们 我可以通过单击 运行 图标从编辑器运
  • 运行 android 时出错:Gradle 项目同步失败。请修复您的项目并重试

    Android Studio 1 2 RC0 不断告诉我Error running android Gradle project sync failed Please fix your project and try again 我怎样才能
  • 远程 Web 应用程序调试在 ios 8 beta 中不起作用

    我正在尝试在模拟器上调试 ios 8 beta 下的 Web 应用程序 运行最新版本的 safari 版本 7 0 6 和 Xcode 但我在 safari 中只能看到 没有可检查的应用程序 有什么建议 您需要最新的 Safari 每晚版本
  • 无法在 Web 服务器上启动调试。 Web 服务器找不到所请求的资源

    我在尝试调试 ASP NET MVC 应用程序时遇到此错误 我已将应用程序设置为 使用本地 IIS Web 服务器 并选择 ASP NET 作为调试器 在不进行调试的情况下运行该网站效果很好 但是当我尝试调试时 出现以下错误 Unable
  • Python 文件操作

    我用这个 python 程序得到了一个错误 IOError Errno 0 Error from sys import argv file open test txt a print file tell not at the EOF pla
  • groupByKey(...) 中的 类在其成员中有一个 Map。 groupByKey 操作因“不可比较”问题而失败

    我有课Entreprise具有基元数据类型和另一个类上的 Map Etablissement它仅由原始数据类型组成 public class Entreprise implements Comparable
  • FnBox 示例抛出错误:盒装中没有 FnBox?

    我尝试运行FnBox示例来自官方文档 https doc rust lang org 1 27 0 std boxed trait FnBox html但它会抛出一个错误 error E0432 unresolved import std
  • Android 蓝牙 Le 扫描仪在一段时间后停止

    我正在使用活动的蓝牙 LE 扫描仪运行应用程序或服务 并在日志控制台上显示扫描结果 如果我把手机锁在桌子上不再碰 一段时间后它停止了 并且没有给我更多的扫描结果 如果我按下电源按钮并且屏幕唤醒 它会给我更多扫描结果 如果我再次锁定屏幕或等待
  • 在 macOS 上通过终端启动 Spyder 时出现 kq_init 警告

    我在 Mac 上运行 Spyder High Sierra 我有 2 个使用 Anaconda 定义的虚拟环境 对于 python 2 7 13 虚拟环境是 py27 对于 python 3 65 虚拟环境是 py36 当我转到 py36
  • 使用 dup2 时的竞争条件

    这个联机帮助页 http linux die net man 2 dup2为了dup2系统调用说 EBUSY 仅限 Linux 这可能会在执行期间由 dup2 或 dup3 返回 open 2 和 dup 的竞争条件 它谈论什么竞争条件以及
  • Chart_Series() 是否适用于对数轴?

    有没有办法产生对数 y 轴chart Series 我正在使用实验chart Series 而不是chartSeries 中的方法quantmod 因为在绘图中添加额外的线时更方便 library quantmod POWR lt getS
  • Qt:如何检测是否选择了某个小部件?

    我没有看到任何信号 槽 函数可以告诉我鼠标是否选择了某个小部件 是否可以有这样一个函数来告诉我当前的QWidget是否被选中 我如何区分 当前小部件被选择 和 其子小部件之一被选择 您可以使用以下命令检查小部件的焦点hasFocus 功能
  • C++ 中的 Bron Kerbosch 算法

    我一直在练习我的 C 算法知识 并陷入了标准 BK 实现 该算法输出了太多的派系 我似乎不明白为什么 我将图表示为邻接列表 vector lt list
  • 应用程序未与 iCloud 同步核心数据更改

    我设置了一些 NSLogs 以确保我的应用程序与 iCloud 同步更改 但我已经等了半个小时并且更改没有同步 这是我的核心数据代码 核心数据存储存储在文档目录中 因为我希望它在失去对 iCloud 的访问时能够继续工作 并且不希望它在这种
  • 英文数字的可扩展正则表达式

    我正在尝试创建一个正则表达式认出 英文数字 http en wikipedia org wiki Names of numbers in English 例如one nineteen twenty 一百二十二 等等 一直到数百万 我想要re
  • 在 Modelica (SystemModeler) 中生成白噪声

    我正在尝试将测量噪声添加到模拟中 这可以在 Simulink 等中完成 但在 Modelica 和 SystemModeler 中似乎更困难 关于如何做到这一点有什么想法吗 您可以通过外部 C 代码在 Wolfram SystemModel