回覆列表
  • 1 # 使用者8090911253619

    function [sys,x0,str,ts]=mdlInitializeSizes sizes = simsizes; sizes.NumContStates = 0; sizes.NumDiscStates = 4; sizes.NumOutputs =

    1; sizes.NumInputs =

    2; sizes.DirFeedthrough = 0; sizes.NumSampleTimes = 0; sys = simsizes(sizes); x0 = [0 6 1 0];%x(1)時間0開始;x(2)幅值;x(3)切換標誌位;x(4)週期標誌位; str = []; ts = []; function sys=mdlUpdate(t,x,u) T=0.000125;%週期設定 k=x(4); s=x(2); i=x(3); if mod(i,2)==1 p1=1.56*10^(-6); p2=-1.295*10^(-6); p3=-7.847*10^(-6); p4=61.5*10^(-6); m=u(1); n=u(2); a=p1*311*sin(100*pi*(k+1))+p2*m+p3*n+p4; t3=T*k+a; end if mod(i,2)==0 t3=T*k; end t1=x(1); t2=t; if (t1<=t3) & (t2>t3)%尋找切換時間點 s=-s; i=i+1; if mod(i,2)==0 k=k+1; end end sys=[t2 s i k]; function sys=mdlOutputs(t,x,u) sys=[x(2)]; 因為時間關係,沒有仔細斟酌,程式不是很簡潔,但是可以用。

  • 中秋節和大豐收的關聯?
  • 有夢想和沒有夢想的人都是怎樣生活的?