2011-03-26 265 views
2

我有三个包含时间和相应函数值的矩阵。我需要随着时间的推移求和的函数值。这里是我的数据集(数据列用红色标记): 正如你所看到的,列有不同的时间和函数值,所以我需要先对它们进行插值。我想这个模型中,都没有效果: enter image description hereSimulink插值[Matlab]

会明白在解决我的问题的任何帮助

回答

0

你可能想与“不变”块来代替“从工作区”块。

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

另一方面,“从工作区”块从变量中读取每个执行的一个元素。

看起来你希望每次执行时都要将所有的点传递给interp函数。 (另一种措辞是:输入到interp块的“Pts”是一个常量,“in”端口(时间)是唯一改变每次执行的输入。)

+0

Thnx for response。那么,我在运行模型中只有simin1变量的第一个元素? – 2011-03-26 21:02:05

+0

如果您使用“from workspace”块,则将有第一个元素用于第一次执行,第二个元素用于第二次执行,等等。这是“来自工作区”块的功能。 从您的使用情况来看,您觉得您希望将整个表格输入interp块。如果您希望每次执行整个表,则不能使用“从工作区”。 您应该使用“常量”块代替。 如果您无法理解,请尝试将“显示”块连接到“常量”块和“来自工作空间”块。我想你会看到这个问题。 – Miebster 2011-03-28 05:26:04

+0

当我运行模型时,我总是会看到一个奇怪的数字,显示simin1,这个数字甚至不在我的数据集中。 – 2011-03-28 18:57:56

0

我会使用“Lookup Table Dynamic “在Simulink>查找表库中代替interp块,并将xdat(时间t列)和ydat(值)分别放在单独的变量/常量中。

1

这听起来像是你想在一组新的时间值内插你的三个表格函数,然后计算每个函数的运行总和(因为你提到需要“随着时间的推移求和的函数值”)。我相信你会需要两个不同类型的块来实现:

  • 一个Lookup Table block将让你在不同时间点内插你的函数值。这将取代上面模型中显示的“Interp”块。有几个不同的选择这里取决于你想如何初始化表数据模型:

    1. 如果你有一组数据将保持不变,在整个模拟,你可以硬编码这个数据进入表数据块的属性。在这种情况下,您可以使用Lookup Table block,更一般的Lookup Table (n-D) blockInterpolation Using Prelookup block(与Prelookup block结合使用)。

    2. 如果要在模拟过程中从工作区加载表中的数据,你可以使用一个Lookup Table Dynamic blockInterpolation Using Prelookup block来源属性设置为使用的输入端口。在这种情况下,您将不得不使用From Workspace block加载数据(如上所述),然后确保正确格式化表格数据以供插值块使用。

  • 一个Cumulative Sum block将让你保持一个运行总计您的功能创建随时间变化的值。如果您想分别查看每个函数的运行总数,则必须在每个插值模块的输出中添加一个累计和模块,然后将其发送到您的示波器。如果您想查看所有添加的功能的运行总数,那么您可以像上面一样使用Sum block来添加您的三个信号,然后在将其发送到您的示波器之前将累加和块添加到该输出。