【问题标题】:Matlab Function inside simulinksimulink里面的matlab函数
【发布时间】:2016-06-19 18:29:49
【问题描述】:

我需要在 Simulink 模型中使用 Matlab 函数。我知道如何使用 Matlab 函数来做简单的事情。但是我现在需要的有点复杂。让我给你一个基本的例子。

假设我需要一个模块来生成正弦波,以便直接在示波器上查看(我知道已经有一个正弦波模块,我只是以它为例)。如果我在 Matlab 中而不是在 Simulink 中编写,我会这样做:

 t = [0:1/30000:0.2];
 A = 1;
 f =10000;
 y = A*sin(2*pi*f*t);
 plot(t(1:100),y(1:100))

如何在 Simulink matlab-function 块中构建相同的函数并直接在 Scope 上查看结果?

记住:Matlab 功能块有两个端口,u 和 y。分别代表输入和输出。在上面给出的示例中,正弦波发生器不需要输入。

【问题讨论】:

  • 可以配置一个matlab功能块的端口数。

标签: matlab function simulink frequency


【解决方案1】:

也许只是你没有选择一个很好的例子,但是在将你提供的代码翻译成 Simulink 时,有几件事需要注意。

  1. 将仿真时间输入 MATLAB Function 模块的最简单方法是将时钟模块输入到输入端口(正如@Daniel 所指出的,这是可选的,但在这种情况下,我建议将其用于 @ 987654321@)。所以我认为在这个例子中你确实想要一个 inport。

  2. 您在示例中使用 plot 仅绘制前 100 个点,其中 Simulink Scope 滚动显示正在显示的数据。当模拟运行时间超过此时间时,不存在仅显示 Scope 中的前 X 个点的概念。

  3. 您需要记住,Simulink 一次生成一个仿真时间步长的数据,因此您不能全部生成它们(根据您的 MATLAB 代码)然后将它们全部绘制出来。 (嗯......如果你想使用基于帧的信号,你可以,但我认为这不是你在这里要求的。)

因此,要实现与您所拥有的等效功能,需要执行以下操作。

  • 编写一个包含以下代码的 MATLAB Function 块(尽管您可能希望将 Af 输入参数而不是硬编码)

    function y = myCustomSineWave(t) A = 1; f =10000; y = A*sin(2*pi*f*t);

  • Clock 块输入到上面的块中,并在其输出上有一个Scope

【讨论】:

    猜你喜欢
    • 2013-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-30
    • 1970-01-01
    • 1970-01-01
    • 2014-08-08
    • 2021-09-05
    相关资源
    最近更新 更多