首页 文章

simulink中的matlab函数

提问于
浏览
0

我需要在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))

How can I build the same function inside a Simulink matlab-function block and see the results directly on the Scope?

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

1 回答

  • 2

    也许只是你没有选择一个很好的例子,但是在将你给出的代码翻译成Simulink时,有几点需要注意 .

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

    • 您在示例中使用 plot 仅绘制前100个点,其中Simulink Scope浏览显示的数据 . 当模拟运行的时间长于此时,没有概念只显示Scope中的前X个点 .

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

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

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

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

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

相关问题