[讨论] simulink function运算

楼主: scws (小凉)   2021-08-30 23:28:17
我想在simulink拉matlab function的方块
想做类似下面的运算
function y=tt(x,x1,a)
e=x-x1
a.i=a.i+y
a.j=a.j-y
y=a.i*a.i+a.j*a.j
方块输入x,x1
输出 y
a是一个结构,存一些变量,变量不用输出但要随时间更新
我一开始有先在workspace
先设定a.i=0
a.j=0
在function运算都不更新a,都会回workspace抓一开始初始值的a
想请问有什么方式可做这样的运算?
感谢!!
作者: ejialan (eji)   2021-08-31 09:38:00
function [y,a]=tt(x,x1,a)a 也输出才会更新
楼主: scws (小凉)   2021-08-31 09:56:00
感谢回复,如果输出a,方块会多一个输出a的箭头,但a只在这函式使用,不用传出到下一个方块
作者: book5601 (苍澜野兽)   2021-09-02 07:32:00
我记得在function内增加global a,让a变成全域变量好像有用。但在执行程式前要先单独global a一次,让系统知道他是全域变量。
作者: YoursEver (猪是妳)   2021-09-07 21:49:00
用楼上的做法就好,单纯是变量scope问题,宣告成global就没事了。
作者: tony11025   2021-09-25 12:22:00
使用 persist 关键字呢不太建议使用 global避免其他函式或者其他 scope 有相同名称变量覆蓋到,网址提供初始化 persist变量的方法

Links booklink

Contact Us: admin [ a t ] ucptt.com