我在Matlab中需要一个非常简单的函数帮助

时间:2014-03-16 11:46:47

标签: matlab function arduino simulink

在图片中,显示了我的Simulink模型的一部分。

Part of the simulink model

它的工作原理如下:

  • Data是从 serialport 发送的内容。当我开始 模拟,如果有数据发送,Data具有它的值。什么时候 没有发送任何数据,Data发送0作为输出。

  • serialport 上有数据时,
  • Status为1,当有 没有发送任何数据。

  • 我想要它做的是:"如果 serialport 中有任何数据,请给出 y已发送数据的值。如果没有发送数据,请保持y为 之前的值"。

所以我添加了自己的用户定义函数

function y = fcn(u,x)
   if (x == 0)
      y = y;
   else
      y = u;
   end 
end

但这给了我一个错误,说y没有定义。 如何在没有任何用户定义的功能的情况下实现这个简单的解决方案?有人可以,弄清楚吗?提前谢谢。

2 个答案:

答案 0 :(得分:2)

我没有编写这个函数,而是使用一个启用的子系统,其中包含库中的默认设置(其中没有块)。当enable为零时,保持输出。

答案 1 :(得分:0)

编辑:“不等于实际上是”〜=“,如另一条评论中所述。

在我看来,你的功能定义中缺少括号:

function [y] = fcn(u,x)
if (x == 0)
    y = y;
else
    y = u;
end 
end

它的微调,但我认为可以做得更漂亮一点。 这是我未经测试的版本:

function [y] = fcn(u,x)
//% "!=" means "not equal"
//% So when x isn't 0 the amount of u is added to y
if (x != 0)
    y = u;
end 
end