我有三个矩阵,其中包含时间值和相应的函数。我需要随时间求和的函数值。这是我的数据集(数据列用红色标记):
如您所见,列具有不同的时间和函数值,因此我需要先对它们进行插值。我试过这个模型,没有效果:
将感谢任何帮助解决我的问题
听起来您想在一组新的时间值处插入三个列表函数中的每一个,然后计算每个函数的运行总和(因为您提到需要“随时间求和的函数值”)。我相信您将需要两种不同类型的块来完成此操作:
查找表块将允许您在不同时间点插入函数的值。这将替换上面模型中显示的“Interp”块。根据您希望如何在模型中初始化表数据,这里有几个不同的选项:
如果您有一组在整个模拟过程中保持不变的数据,您可以将这些数据硬编码到模块的Table data属性中。在这种情况下,您可以使用Lookup Table 模块、更通用的Lookup Table (nD) 模块或Interpolation Using Prelookup 模块(与Prelookup 模块结合使用)。
如果您想在仿真期间从工作区加载表数据,您可以使用Lookup Table Dynamic 模块或Interpolation Using Prelookup 模块,并将其Source属性设置为使用输入端口。在这种情况下,您必须使用From Workspace 块(如上所述)加载数据,然后确保正确格式化表数据以供插值块使用。
Cumulative Sum 块将允许您保持函数随时间创建的值的总和。如果您想单独查看每个函数的运行总计,则必须将一个累积和块添加到每个插值块的输出,然后将这些块中的每一个发送到您的范围。如果您想查看加在一起的所有函数的运行总计,那么您可以像上面那样使用Sum 块来添加三个信号,然后在将其发送到示波器之前将累积 sum 块添加到该输出。
我将使用 Simulink > Lookup tables library 中的“Lookup Table Dynamic”块而不是 interp 块,并将 xdat(时间 t 列)和 ydat(值)分别放在一个单独的变量/常量中。
您可能想用“常量”块替换“来自工作区”的块。
常量块允许您将值设置为可以在命令提示符下评估的任何值。这包括普通数字(1、6、100、1e6)、数组(1:3、1:2:11、zeros(23,1)、ones(10,4)*6)和工作区变量(simin1、simin2 )。
另一方面,“从工作区”块每次执行时从变量中读取一个元素。
看起来您希望每次执行都将所有点传递给 interp 函数。(另一种表述方式:interp 块的“Pts”输入是一个常数,“in”端口(时间)是唯一改变每次执行的输入。)