我需要在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 回答
也许只是你没有选择一个很好的例子,但是在将你给出的代码翻译成Simulink时,有几点需要注意 .
将模拟时间输入MATLAB功能块的最简单方法是将一个时钟模块送入一个输入端口(如@Daniel所示,是可选的,但在这种情况下,我建议用于
t
) . 所以我认为你在这个例子中确实想要一个输入 .您在示例中使用
plot
仅绘制前100个点,其中Simulink Scope浏览显示的数据 . 当模拟运行的时间长于此时,没有概念只显示Scope中的前X个点 .您需要记住Simulink一次生成一个模拟时间步骤的数据,因此您无法生成所有数据(根据您的MATLAB代码),然后将它们全部绘制出来 . (嗯......你可以使用基于帧的信号,但我认为这不是你在这里要求的 . )
因此,要实现相同的功能,请执行以下操作 .
A
和f
输入参数而不是硬编码)function y = myCustomSineWave(t) A = 1; f =10000; y = A*sin(2*pi*f*t);
Clock
块送入上面的块,并在其输出上有一个Scope
块