首页 文章

Simulink中的插值[Matlab]

提问于
浏览
2

我有三个矩阵,包含时间和相应功能的值 . 我需要随时间推移求和的函数值 . 这是我的数据集(数据列标有红色):

如您所见,列具有不同的时间和函数值,因此我需要先插入它们 . 我试过这个模型,没有效果:
enter image description here

将不胜感激解决我的问题

3 回答

  • 1

    听起来你想要在一组新的时间值中插入三个列表函数中的每一个,然后为每个函数计算一个运行总和(因为你提到需要“随时间累加的函数值”) . 我相信你需要两种不同类型的块才能实现这个目标:

    • A Lookup Table block将允许您在不同时间点插值函数的值 . 这将替换上面模型中显示的"Interp"块 . 这里有一些不同的选项,具体取决于您希望如何在模型中初始化表数据:

    • 如果在整个模拟过程中有一组数据保持不变,则可以将此数据硬编码到块的 Table data 属性中 . 在这种情况下,您可以使用Lookup Table block,更通用的Lookup Table (n-D) blockInterpolation Using Prelookup block(与Prelookup block结合使用) .

    • 如果要在模拟期间从工作空间加载表数据,可以使用设置了 Source 属性的Lookup Table Dynamic blockInterpolation Using Prelookup block来使用输入端口 . 在这种情况下,您必须使用From Workspace block(如上所述)加载数据,然后确保正确格式化表数据以供插值块使用 .

    • A Cumulative Sum block将允许您保持函数随时间创建的值的运行总计 . 如果要单独查看每个函数的运行总计,则必须将一个累加和块添加到每个插值块的输出中,然后将每个块发送到您的范围 . 如果要查看一起添加的所有函数的运行总计,则可以像上面一样使用Sum block添加三个信号,然后在将输出发送到示波器之前将累加和块添加到该输出 .

  • 0

    您可能希望将“from workspace”块替换为“常量”块 .

    常量块允许您将值设置为可在命令提示符下计算的任何值 . 这包括香草数字(1,6,100,1e6),数组(1:3,1:2:11,零(23,1),1(10,4)* 6)和工作区变量(simin1,simin2) ) .

    另一方面,“从工作空间”块,从变量中每次执行读取一个元素 .

    看起来您希望每次执行都将所有点传递到interp函数中 . (另一种措辞方式:interp块的“Pts”输入是一个常量,“in”端口(time)是唯一改变每次执行的输入 . )

  • 0

    我将使用Simulink> Lookup表库中的“查找表动态”块而不是interp块,并将xdat(时间t列)和ydat(值)分别放在一个单独的变量/常量中 .

相关问题