作业帮 > 综合 > 作业

如何用matlab&simulink的look up table查表模块实现下例函数?

来源:学生作业帮 编辑:搜搜考试网作业帮 分类:综合作业 时间:2024/06/09 11:27:08
如何用matlab&simulink的look up table查表模块实现下例函数?
例如输入0~2pi/3时 输出为1
输入为2pi/3~pi时 输出为0

就是说输出时不连续的 这样应该怎么设置输入输出

图中这个表应该怎样实现呢
如何用matlab&simulink的look up table查表模块实现下例函数?
最近几天没上,刚看到.
这个问题不算难,但我出差马上要出发,楼主现在还需要回答吗?需要的话请追问,我晚上回答.
再问: 你好,我试了下貌似应该是像我图里这样设置(Iar)可是运行之后出现下图这种情况。主要是lookup table模块设置完不是应该可以在模块上显示出波形的吗 我的却是一个问号
再答:     首先,你现在设置的参数是存在问题的,因为作为输入参数的插值节点(breakpoints)要求必须严格单调增加,而你所给的    [0 2*pi/3 2*pi/3 pi pi 5*pi/3 5*pi/3 2*pi]其第2、3,4、5,6、7三组节点相同,不满足要求。 修改的做法是,在跃变的节点处把左边的节点减去eps或右边的加上eps(虽然从原理上看是跃变,但从实现的角度需要做这样的处理,几乎完全不会有影响),例如:    [0 2*pi/3-eps 2*pi/3 pi-eps pi 5*pi/3-eps 5*pi/3 2*pi] 其次,建议使用Lookup Table模块进行一元插值,没必要使用n-D Lookup Table模块。后者增加了不必要的复杂不说,而且在我这里设置和一元查表模块相同的参数却仍然报错,原因暂未查明。 最后,建议把查表的数据保存为变量,然后在模块参数中使用变量,维护起来更方便(尤其对于节点参数需要多次使用的的这种场合)。 =======补充说明=======在写完上面的内容后(在R2008a上测试),我又在R2012b上试了试,有两点补充: 1、Lookup Table模块在R2010b之后的版本被取消了,取代它的是1-D Lookup Table,而其本质上是n-D Lookup Table模块的特殊参数设置。从你的贴图看,用的应该是R2011a或者更新的版本。 2、关于上面的节点数据报错问题:    [0 2*pi/3-eps 2*pi/3 pi-eps pi 5*pi/3-eps 5*pi/3 2*pi]在R2012b上报出更具体的错误位置(在第7个节点处),经试    (5*pi/3-eps)-5*pi/3得到结果为0,这是因为eps/(5*pi/3)=4.2407e-17,已超出双精度浮点数的精度范围,也就是说,在5*pi/3上面加eps和没加一样。 解决的办法可以是把eps换成一个更大的数,或者使用类似pi*(1-eps)代替pi-eps的做法:    x=[0 2*pi/3-eps 2*pi/3 pi*(1-eps) pi 5*pi/3*(1-eps) 5*pi/3 2*pi]; 我把示例模型作为附件上传,供参考。