[討論] 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