作者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/m.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