我需要一个非常简单的Matlab函数的帮助
图中显示了我的Simulink模型的一部分 它的工作原理如下:我需要一个非常简单的Matlab函数的帮助,matlab,function,arduino,simulink,Matlab,Function,Arduino,Simulink,图中显示了我的Simulink模型的一部分 它的工作原理如下: 数据是从串行端口发送的数据。当我开始工作时 模拟,如果有数据发送,数据具有它的值。什么时候 没有发送任何数据,数据发送0作为输出 状态在serialport上有数据时为1,在serialport上有数据时为0 没有发送任何数据 我希望它做的是:“如果serialport中有任何数据,请给出 y已发送数据的值。如果未发送数据,则保留,y作为 以前的值” 因此,我添加了自己的用户定义函数 function y = fcn(u,x)
是从串行端口发送的数据。当我开始工作时 模拟,如果有数据发送,数据
具有它的值。什么时候 没有发送任何数据,数据
发送0作为输出数据
在serialport上有数据时为1,在serialport上有数据时为0 没有发送任何数据状态
- 我希望它做的是:“如果serialport中有任何数据,请给出
已发送数据的值。如果未发送数据,则保留,y
作为 以前的值”y
function y = fcn(u,x)
if (x == 0)
y = y;
else
y = u;
end
end
但是这给了我一个错误,说y
没有定义。
我如何实现这个简单的解决方案,有没有任何用户定义的功能?有人能帮我弄清楚吗?提前感谢。编辑:如另一条评论所述,“不相等”实际上是“~=” 在我看来,函数定义中缺少括号:
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
与编写此函数不同,我将使用一个启用的子系统,该子系统具有库中的默认设置(其中没有块)。启用为零时,输出保持不变。您认为需要将
y
也传递到函数中-函数y=fcn(u,x,y)
我还没有想到这一点。非常感谢,我会让你知道它是否有效。在matlab中,“不相等”是“~=”。我会尝试使用括号让你知道。只有一个输出时不需要ThanksBackets。(问题如其他答案所述。)