simulink中的Matlab函数

simulink中的Matlab函数,matlab,function,simulink,frequency,Matlab,Function,Simulink,Frequency,我需要在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函数。我知道如何使用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功能块中构建相同的函数,并直接在示波器上查看结果?


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

可能是因为您没有选择一个非常好的示例,但是在将您给出的代码转换为Simulink时,有几件事需要注意

  • 将模拟时间输入MATLAB功能块的最简单方法是将时钟块输入到输入端口(如@Daniel所示,这是可选的,但在这种情况下,我建议将其用于
    t
    )。所以我认为在这个例子中你需要一个输入端口

  • 您在示例中使用的
    plot
    仅绘制前100个点,其中作为Simulink范围滚动显示的数据。当模拟运行的时间超过该时间时,不存在仅显示范围中的前X点的概念

  • 您需要记住,Simulink一次只生成一个模拟时间步长的数据,所以您不能生成所有数据(根据您的MATLAB代码),然后将它们全部绘制出来。(嗯……如果你想使用基于帧的信号,你可以这样做,但我想这不是你要问的。)

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

    • 编写一个包含以下代码的MATLAB功能块(尽管您可能希望生成
      a
      f
      输入参数,而不是对其进行硬编码)

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

    • 时钟
      块馈送到上述块中,并在其输出上具有
      范围


      • 也许只是您没有选择一个很好的示例,但是在将您给出的代码翻译成Simulink时,有几件事需要注意

      • 将模拟时间输入MATLAB功能块的最简单方法是将时钟块输入到输入端口(如@Daniel所示,这是可选的,但在这种情况下,我建议将其用于
        t
        )。所以我认为在这个例子中你需要一个输入端口

      • 您在示例中使用的
        plot
        仅绘制前100个点,其中作为Simulink范围滚动显示的数据。当模拟运行的时间超过该时间时,不存在仅显示范围中的前X点的概念

      • 您需要记住,Simulink一次只生成一个模拟时间步长的数据,所以您不能生成所有数据(根据您的MATLAB代码),然后将它们全部绘制出来。(嗯……如果你想使用基于帧的信号,你可以这样做,但我想这不是你要问的。)

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

        • 编写一个包含以下代码的MATLAB功能块(尽管您可能希望生成
          a
          f
          输入参数,而不是对其进行硬编码)

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

        • 时钟
          块馈送到上述块中,并在其输出上具有
          范围


        您可以配置matlab功能块的端口数。您可以配置matlab功能块的端口数。