Matlab撿知識 S Function再體驗

2021-09-28 21:53:59 字數 1301 閱讀 5511

作為乙個學控制(越來越偏離軌道)的學生,使用simulink的小部分功能是在頻繁不過的了,但是我本科到碩士一年級,用simulink呼叫自建函式,不是簡單s函式就是複雜m-function,基本都會避開s-function(一開始感覺賊麻煩)。其實,m-function和s-function同時用到複雜的地方,m-function更麻煩…

用s-function是在乙個小型機械臂**的demo需求上完成,由於需要完成正逆向運動學建模以及simulink呼叫,所以自己寫函式嵌入simulink。

這裡面主要設計了乙個問題:迴圈迭代以及判斷,這是m-function很難完成的乙個任務,不是不能完成,以前試過用m-function迴圈迭代求解,但是要設定許多的全域性變數值,類似以前寫的乙個儲存變數值的方法,不過要用global代替persistant以及在選單欄上面編輯變數,這樣非常麻煩,而且simulink對m-function語法的結構非常嚴格,頻繁報錯。

s-function實在是不得不接觸才用上的(其實早該用這個了,這才是正道

s-function主要特點是符合simulink邏輯,分為初始化階段和執行輸出階段(細節在介紹部分),這樣的好處是可以設定和simulink契合的步長,節奏一致,呼叫子.m子函式容易,不會像m-function一樣頻繁報錯。

s-function可以在進入前設定外部引數,s-function parameters,可以呼叫形式:資料結構體,陣列都行。

s-function name:呼叫的函式的名稱,在路徑下edit建立

matlab有自帶的一些s-function模板,在script下寫edit sfun + tab鍵開啟模板,2018版本simulink裡面edit不會出現模板,以前的版本有的可以。

模板不變,主要是初始化以及輸出函式部分

如上部分**,初始化主要初始化輸入輸出引數個數構成sys結構體,這裡不用太在意,只要設定好離散連續變數個數,輸入輸出個數就可以(不要求深度開發s-function)。在case 3 是函式的輸出環節,可以呼叫當前路徑下面的功能函式,在上圖中我也頻繁在呼叫,還可以進行迴圈迭代,在上圖同樣用while和if來進行迴圈判斷。s-function好處是可以很好的契合simulink,同時更加像是在寫.m-file,不過是要定義好外部引數來呼叫。

matlab知識集錦

灰度影象擊中與擊不中運算 影象灰度拉伸的作用 灰度拉伸又叫對比度拉伸,它是最基本的一種灰度變換,使用的是最簡單的分段線性變換函式,它的主要思想是提高影象處理時灰度級的動態範圍。它可以有選擇的拉伸某段灰度區間以改善輸出影象。如圖,所示的變換函式的運算結果是將原圖在a到b之間的灰度拉伸到c到d之間。如果...

matlab知識集錦

matlab中的inv函式是什麼意思 inv是求逆矩陣。x 是矩陣轉置 對複數矩陣而言是共軛轉置 matlab rgb2gray 函式是基於什麼原理編寫的,或者這個函式的 以r g b為軸建立空間直角座標系,則rgb圖的每個象素的顏色可以用該三維空間的乙個點來表示,而gray圖的每個象素的顏色可以用...

matlab 常用知識

20200714 oct 25,2018 1 格式化輸出例如sprintf fprintf num2str中,表示浮點數的輸出 f顯示小數形式 e顯示科學計數法形式 g是兩者的綜合,會根據資料選擇適當的顯示方式 2 判斷乙個矩陣是否病態?直接用 cond a 其返回值就是a 矩陣 的條件數,當條件數...