我有一个数据表,可以导入到' 2d-lookup表' simulink 行和列的间距不相等。 如何创建一个模型,该模型将x,y作为输入,并通过从表中插值将z作为输出。 (即对于x,y,它们是表中值之间的某些值,它应该根据表值生成多项式方程并获取输入并给出结果)。
我可以使用matlab curvefit app获得它,但我只能使用simulink。
答案 0 :(得分:1)
你几乎已经做了你想做的事。
使用Simulink 2-D查找表可以自动插入数据:
看看这个:我设置不等间距的数据,这很好用!表数据是您的z
函数值。所以只需更改x,y
(在我的示例中为u1,u2
),您就可以获得所需内容。您可以看到它适用于(x,y) = [2 8]
。
现在,让我们解决第二个问题 - 如何获取所有z
值的总和?
这里重要的时刻 - 你想得到多少钱!你知道,Simulink有许多不同的求解器,它们具有可变或固定的步长。因此,使用固定步骤解决问题,例如dt = 0.2
将为t= 0, 0.2, 0.4, ...
提供所有答案,依此类推。它会插入你输入数据并为每个解决z
,如果你在这里得到总和,那么它会是你想要的吗?
如果是,最简单的方法 - 使用Integrator
阻止。像这样的东西:
但是!如果您只想为值解决这个问题,您可以在工作区x,y
中设置(评论中为(1 1), (3 8) , (7 10)
对),并仅获得3 z
的总和?这是一个很好的另一个问题,也许它比使用2d查找表更难:)
我将展示许多可能的解决方案之一: 转到配置参数/解算器并使用步长= 1 设置固定步骤。并使用这个:
你可以看到它显示给你101
,但在你的情况下它必须是95
(1+24+70
)!这是因为simulink也为t = (0, 0)
解决了这个问题! t=0
的插值数据会额外提供6
。它很容易解决 - 添加z
的{{1}}表值。
希望现在很清楚!