您好,登錄后才能下訂單哦!
本篇內容介紹了“怎么通過Simulink實現數據滾動刷新”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
對于這個問題,用C代碼或者m語言實現可能大家都會,就是把數據進行右移和賦值操作。用Simulink基本模塊搭建,以前沒有接觸過的可能會有些困難。所以,本文將介紹如何通過Simulink實現數據滾動。
Simulink建模思路跟C代碼實現的方式基本一致,也是主要分為右移、賦值兩部分,最終搭建的模塊如下圖所示。
上圖中紅框中的右移子系統內部需要迭代器和分配器配合使用,如下圖所示。
迭代器用于在一個步長內連續輸出N個數值,可用于遍訪數組內部的數據,非常適合對數組進行索引操作,是對數組類型數據處理的神器。
分配器用于對數組進行指定位置的數據賦值。Y0是當前待處理數組,Idx1是數組的某一位索引,U是數組某一位具體的數值。假設Idx1=a,U=b,表達的意思就是將數組Y0的第a位數值替換為b。
所以上圖中,通過迭代器和分配器配合,在每一個仿真步長,將數組的每一位向下一位賦值,實現該子系統右移的功能。
上圖綠框中的賦值部分相對就比較簡單,只有一個分配器,即將實時刷新的值賦值到第一位,實現數據更新。
下面進行簡單的仿真驗證,先進行模塊基本設置。
這里設置滾動的數組長度為5,初始值為0,所以Delay模塊給定數組[0 0 0 0 0]。
模型中迭代器長度設置為4,因為我們只需要對數組第一位以外的進行處理。
兩處分配器都可以設置為One-based,Index vector(port)。
實時更新的數據我們給定一個線性增長的ramp,初始值為0,斜率為1,然后進行步長為1s的定步長仿真,結果如下圖。
從圖中可以看出:
初始時刻數組的第一到第五位均為0,即[0 0 0 0 0];
1s時,數組的第一位被刷新為1,即[1 0 0 0 0];
2s時,數組的第一位被刷新為2,第二位被1s時第一位的1覆蓋,即[2 1 0 0 0];
3s時,數組的第一位被刷新為3,第二位被2s時第一位的2覆蓋,第三位被2s時第二位的1覆蓋,即[3 2 1 0 0];
……
實現了數據的實時滾動刷新。
“怎么通過Simulink實現數據滾動刷新”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。