关于matlab simulink中三角波模块的问题!

为什么我把时间参数换一下,产生的三角波会越来越乱,最后干脆不产生了??

“repeating sequence ”这个模块产生的波形是根据“time values ”和“output values ”两个值确定的,就是说: time values =[ t1 t2 .....tn],output values =[ v1 v2 ....vn]这样产生的波形是:在t1时刻波形的幅值是v1、t2时刻波形的幅值是v2……tn时刻波形的幅值是vn,之后,重复这一波形。波形的重复次数跟你simulink时候的simlulation stop time值有关。
另外,你的最后一个图,time values =[ 0 0.001],output values =[ 1 2],你把simlulation stop time设成0.01,会看到三角波的~追问

按照您说的确实出来了三角波,output[1 2] 但是三角波幅值在1.8,2之间跳动 这是怎么回事?然后我出来的三角波为什么会和simlulation stop time有关,要是我需要连续输出1秒的三角波呢??

追答

我的理解是matlab计算和scope的显示都是是有误差的,所以会波动……
simlulation stop time是总的仿真时间,你的time values 是0~0.001,就是波形的周期是0.001秒,如果仿真时间是1,那就是要仿真1秒,这样就的有1/0.001=1000个三角波,估计scope的显示没这么高的精度,所以,就看不到……
你仿真1s的时候,scope看到的是直线,是它显示的问题,真实的数据是有的,你用“to workspace”模块,双击它把采样时间设成“0.0001”(比你在time values 里设的时间要短,不然还是什么都采样不出来),然后运行。simlulink里运行完之后,到matlab界面下的workspace里找“simout”变量,“simout”是个结构体,它的“signal”成员里的“values”子成员是个数组,在这个数组里你会看到“repeating sequence ”产生的值~

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-12-30

求解器默认步长过大,根据信号发生的频率把步长设到合适的值就可以了

第2个回答  2011-12-30

仿真界面有一个调节时间的窗口,可以改动

第3个回答  2020-02-21
应该是仿真步长设置的是变动的步长 改成指定步长就可以了 比如0.00001 可以理解为采样时间的设定 选用的生成三角波的仿真模块是没有问题的
第4个回答  2012-06-01
用方波发生器,在积分就可以了。如,两个方波发生器,占空比都是50%,周期自己设定好了,两个幅值大小相反(例如,第一个为+1,第二个为-1),第二个的延时设置为半个周期,两个方波信号通过加法器,输出给积分器(1/s),出来的就是三角波了。这种方法三角波没有负值。
需要负值的话,可以用四个方波发生器,每个占空比都设置为25%,至于延时呢从第一个到第四个分别为0,0.25T,0.5T,0.75T,幅值分别设置为:1,-1,-1,1 当然,他们的周期T要一样,四个方波信号通过加法器,输出给积分器(1/s),出来的就是三角波了,有正负值的。再建立一个子模块就ok了,想改变的话,同时变四个的幅值和周期,就可以了
相似回答