程序如下:
function sys=mdlOutputs(t,x,u,n)
sys(1)=6;
for m=1:100
n(m)=m*0.00001;
end
sys(1)=-6;
想用for循环做一个延时,生成一个脉冲序列,高电平为6低电平为-6,可输出波形总是输出-6,没有变化。还有为什么两个全写成sys就提示前面的sys不被使用。请高手指教
高手,我首先感谢你的热心帮忙!并已生成了幅值是6的脉冲序列!可是我还要再问你一个问题,以前没说清楚,这个脉冲是随时按照下面的式子改变占空比的。a=p1*311sin(100*pi*(k+1))+p2*u(k)+p3*i(k)+p4.
得到的a是6保持的时间,p1=1.56*10^(-6),p2=-1.295*10^(-6),p3=-7.847*10^(-6),p4=61.5*10^(-6)都是常数,u(k),i(k)是S函数的两个输入,311sin(100*pi*(k+1))是下一采样时刻的正弦值。脉冲的周期是T=0.000125s.能不能再改改您的回答。谢谢了!我把剩余的分数28分全给你了。能再帮帮我吗,我是个新手,您估计也早看出了,matlab的基本东西都不会,可是这个任务真的太急了。谢谢谢谢了!!!
matlab中S函数的编程问题
答案:1 悬赏:80 手机版
解决时间 2021-03-21 08:19
- 提问者网友:浮克旳回音
- 2021-03-20 16:07
最佳答案
- 五星知识达人网友:归鹤鸣
- 2021-03-20 17:28
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)];
因为时间关系,没有仔细斟酌,程序不是很简洁,但是可以用。
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)];
因为时间关系,没有仔细斟酌,程序不是很简洁,但是可以用。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯