[討論] simulink function運算

看板MATLAB作者 (小涼)時間2年前 (2021/08/30 23:28), 2年前編輯推噓1(1012)
留言13則, 5人參與, 最新討論串1/1
我想在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://www.ptt.cc/bbs/MATLAB/M.1630337299.A.6F5.html ※ 編輯: scws (1.171.27.57 臺灣), 08/30/2021 23:33:10

08/31 09:38, 2年前 , 1F
function [y,a]=tt(x,x1,a)
08/31 09:38, 1F

08/31 09:39, 2年前 , 2F
a 也輸出才會更新
08/31 09:39, 2F

08/31 09:56, 2年前 , 3F
感謝回復,如果輸出a,方塊會多一個輸出a的箭頭,但a只在這
08/31 09:56, 3F

08/31 09:56, 2年前 , 4F
函式使用,不用傳出到下一個方塊
08/31 09:56, 4F

09/02 07:32, 2年前 , 5F
我記得在function內增加global a,讓a變成全域變數好像有
09/02 07:32, 5F

09/02 07:32, 2年前 , 6F
用。但在執行程式前要先單獨global a一次,讓系統知道他
09/02 07:32, 6F

09/02 07:32, 2年前 , 7F
是全域變數。
09/02 07:32, 7F

09/07 21:49, 2年前 , 8F
用樓上的做法就好,單純是變數scope問題,宣告成global
09/07 21:49, 8F

09/07 21:49, 2年前 , 9F
就沒事了。
09/07 21:49, 9F

09/25 12:22, , 10F
使用 persist 關鍵字呢
09/25 12:22, 10F

09/25 12:22, , 11F
不太建議使用 global
09/25 12:22, 11F

09/25 12:22, , 12F
避免其他函式或者其他 scope 有相同名稱變數覆蓋到,網
09/25 12:22, 12F

09/25 12:22, , 13F
址提供初始化 persist變數的方法
09/25 12:22, 13F
文章代碼(AID): #1XBFaJRr (MATLAB)
文章代碼(AID): #1XBFaJRr (MATLAB)