simulink中的matlab函数

时间:2016-06-19 18:29:50

标签: 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功能块中构建相同的功能,并直接在Scope上查看结果?

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

1 个答案:

答案 0 :(得分:2)

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

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

  2. 您在示例中使用t仅绘制前100个点,其中Simulink Scope会滚动显示的数据。当模拟运行的时间超过时,没有概念只显示范围中的前X个点。

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

  4. 因此,要实现相同的功能,请执行以下操作。

    • 编写一个包含以下代码的MATLAB功能块(尽管您可能需要输入plotA输入参数而不是硬编码)

      f

    • function y = myCustomSineWave(t) A = 1; f =10000; y = A*sin(2*pi*f*t);块添加到上面的块中,并在其输出上有一个Clock