您的当前位置:首页正文

look up table查表模块

2022-10-02 来源:汇智旅游网


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

2013-06-01 20:02

例如输入0~2pi/3时 输出为1

输入为2pi/3~pi时 输出为0

感谢回答

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

图中这个表应该怎样实现呢

你好,我试了下貌似应该是像我图里这样设置(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];

我把示例模型作为附件上传,供参考。

Lookup_Table_2012b.mdl大小:33.84K

怎么在matlab simulink中的查表模块(look up table)添加已经做好的表格

2011-08-25 22:09

对于3维以上的表格,是没有办法直接编辑的,方法是这样:

首先在breakpoints中将你每一维的插值点写入,比如是:

[10,20]

[10,20]

[10,20]

这样表格为两页两行两列。总共有八个数据。

table data中的数是这样写的

reshape([4,16,10,0,5,19,18,0],2,2,2)

这里使用到了reshape函数,它是把一个向量重新整合成一个矩阵的形式。

因篇幅问题不能全部显示,请点此查看更多更全内容