我需要在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。它分别代表输入和输出。在上面给出的例子中,正弦波发生器不需要输入。
答案 0 :(得分:2)
也许只是因为你没有选择一个很好的例子,但在翻译你已经给Simulink提供的代码时,有几件事需要注意。
将模拟时间输入MATLAB功能块的最简单方法是将一个Clock块送入一个输入端口(如@Daniel所示,是可选的,但在这种情况下,我建议用于{ {1}})。所以我认为你在这个例子中确实需要一个输入。
您在示例中使用t
仅绘制前100个点,其中Simulink Scope会滚动显示的数据。当模拟运行的时间超过时,没有概念只显示范围中的前X个点。
您需要记住,Simulink一次生成一个模拟时间步骤的数据,因此您无法生成所有数据(根据您的MATLAB代码),然后将它们全部绘制出来。 (嗯......如果你想使用基于帧的信号,你可以,但我认为这不是你在这里要求的。)
因此,要实现相同的功能,请执行以下操作。
编写一个包含以下代码的MATLAB功能块(尽管您可能需要输入plot
和A
输入参数而不是硬编码)
f
将function y = myCustomSineWave(t)
A = 1;
f =10000;
y = A*sin(2*pi*f*t);
块添加到上面的块中,并在其输出上有一个Clock
块