日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

用S-函数编写Simulink中的正弦模块

發布時間:2024/7/23 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用S-函数编写Simulink中的正弦模块 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1、用S-函數實現一個正弦波信號源。要求其幅度、頻率和初始相位參數可由外部設置,并將這個信號源進行封裝。 S-函數程序代碼如下: function [sys,x0,str,ts] =ch2example17Sfun(t,x,u,flag,Amp,Freq,Phase) % 正弦波信號源 switch flag, ????case 0?????? % flag=0 初始化 ???????[sys,x0,str,ts]=mdlInitializeSizes; ????case 3?????? % flag=3 計算輸出 ???????sys=mdlOutputs(t,Amp,Freq,Phase); ????case {1, 2, 4, 9 }??? % 其他作不處理的flag ???????sys=[];??????????? % 無用的flag時返回sys為空矩陣 otherwise % 異常處理 ???????error(['Unhandled flag = ',num2str(flag)]); end % 主函數結束 % 子函數實現(1)初始化函數---------------------------------- function [sys,x0,str,ts] = mdlInitializeSizes? % sizes = simsizes;?????????? % 獲取SIMULINK仿真變量結構 sizes.NumContStates? = 0;?? % 連續系統的狀態數為0 sizes.NumDiscStates? = 0;?? % 離散系統的狀態數為0 sizes.NumOutputs???? = 1;?? % 輸出信號數目是1 sizes.NumInputs????? = 0;?? % 輸入信號數目是0 sizes.DirFeedthrough = 0;?? % 該系統不是直通的 sizes.NumSampleTimes = 1;?? % 這里必須為1 sys = simsizes(sizes); str = [];?????????? % 通常為空矩陣 x0? = [];?????????? % 初始狀態矩陣x0 (零狀態情況) ts? = [0 0];??????? % 表示連續取樣時間的仿真 % 初始化函數結束 ? % 子函數實現(2)系統輸出方程函數----------------------------- function sys = mdlOutputs(t,Amp,Freq,Phase) sys = Amp*sin(2*pi*Freq*t+Phase);% 這里寫入系統的輸出方程矩陣形式即可 % 修改這個函數可以得到任意的波形輸出 % 系統輸出方程函數結束

?

?

2、在該S-函數接口中,我們使用了三個輸入參數項分別作為正弦波的幅度、頻率和初

位的輸入,相應地在使用S-函數模塊調用該函數時需要在設置對話框中的S-function?

parameters中填寫這些輸入參數項,然后對S-函數模塊進行封裝,就得到了一個子系

統和相應的參數設置對話框。完成后的系統如下圖所示。最后,設置好示波器顯示范

圍和仿真參數就可以啟動仿真實驗了。



圖:S-函數實現的信號源和封裝結果



總結

以上是生活随笔為你收集整理的用S-函数编写Simulink中的正弦模块的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。