作者scws (小凉)
看板MATLAB
标题[讨论] simulink function运算
时间Mon Aug 30 23:28:17 2021
我想在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
想请问有什麽方式可做这样的运算?
感谢!!
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.171.27.57 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/MATLAB/M.1630337299.A.6F5.html
※ 编辑: scws (1.171.27.57 台湾), 08/30/2021 23:33:10
1F:→ ejialan: function [y,a]=tt(x,x1,a) 08/31 09:38
2F:→ ejialan: a 也输出才会更新 08/31 09:39
3F:→ scws: 感谢回复,如果输出a,方块会多一个输出a的箭头,但a只在这 08/31 09:56
4F:→ scws: 函式使用,不用传出到下一个方块 08/31 09:56
5F:推 book5601: 我记得在function内增加global a,让a变成全域变数好像有 09/02 07:32
6F:→ book5601: 用。但在执行程式前要先单独global a一次,让系统知道他 09/02 07:32
7F:→ book5601: 是全域变数。 09/02 07:32
8F:→ YoursEver: 用楼上的做法就好,单纯是变数scope问题,宣告成global 09/07 21:49
9F:→ YoursEver: 就没事了。 09/07 21:49
10F:→ tony11025: 使用 persist 关键字呢 09/25 12:22
11F:→ tony11025: 不太建议使用 global 09/25 12:22
12F:→ tony11025: 避免其他函式或者其他 scope 有相同名称变数覆盖到,网 09/25 12:22
13F:→ tony11025: 址提供初始化 persist变数的方法 09/25 12:22