在simulink中查找z为z = f(x,y)的z

时间:2016-02-05 04:05:58

标签: matlab simulink

我有一个数据表,可以导入到' 2d-lookup表' simulink 行和列的间距不相等。 如何创建一个模型,该模型将x,y作为输入,并通过从表中插值将z作为输出。 (即对于x,y,它们是表中值之间的某些值,它应该根据表值生成多项式方程并获取输入并给出结果)。

我可以使用matlab curvefit app获得它,但我只能使用simulink。

1 个答案:

答案 0 :(得分:1)

你几乎已经做了你想做的事。 使用Simulink 2-D查找表可以自动插入数据: First example 看看这个:我设置不等间距的数据,这很好用!表数据是您的z函数值。所以只需更改x,y(在我的示例中为u1,u2),您就可以获得所需内容。您可以看到它适用于(x,y) = [2 8]

现在,让我们解决第二个问题 - 如何获取所有z值的总和? 这里重要的时刻 - 你想得到多少钱!你知道,Simulink有许多不同的求解器,它们具有可变或固定的步长。因此,使用固定步骤解决问题,例如dt = 0.2将为t= 0, 0.2, 0.4, ...提供所有答案,依此类推。它会插入你输入数据并为每个解决z,如果你在这里得到总和,那么它会是你想要的吗? 如果是,最简单的方法 - 使用Integrator阻止。像这样的东西: enter image description here

但是!如果您只想为值解决这个问题,您可以在工作区x,y中设置(评论中为(1 1), (3 8) , (7 10)对),并仅获得3 z的总和?这是一个很好的另一个问题,也许它比使用2d查找表更难:)

我将展示许多可能的解决方案之一: 转到配置参数/解算器并使用步长= 1 设置固定步骤。并使用这个: enter image description here

你可以看到它显示给你101,但在你的情况下它必须是951+24+70)!这是因为simulink也为t = (0, 0)解决了这个问题! t=0的插值数据会额外提供6。它很容易解决 - 添加z的{​​{1}}表值。

希望现在很清楚!