我有三个包含时间和相应函数值的矩阵。我需要随着时间的推移求和的函数值。这里是我的数据集(数据列用红色标记): 正如你所看到的,列有不同的时间和函数值,所以我需要先对它们进行插值。我想这个模型中,都没有效果: Simulink插值[Matlab]
会明白在解决我的问题的任何帮助
我有三个包含时间和相应函数值的矩阵。我需要随着时间的推移求和的函数值。这里是我的数据集(数据列用红色标记): 正如你所看到的,列有不同的时间和函数值,所以我需要先对它们进行插值。我想这个模型中,都没有效果: Simulink插值[Matlab]
会明白在解决我的问题的任何帮助
你可能想与“不变”块来代替“从工作区”块。
常量块允许您将值设置为任何可在命令提示符下评估的值。这包括香草数(1,6,100,1e6),数组(1:3,1:2:11,零(23,1),1(10,4)* 6)和工作空间变量(simin1,simin2 )。
另一方面,“从工作区”块从变量中读取每个执行的一个元素。
看起来你希望每次执行时都要将所有的点传递给interp函数。 (另一种措辞是:输入到interp块的“Pts”是一个常量,“in”端口(时间)是唯一改变每次执行的输入。)
我会使用“Lookup Table Dynamic “在Simulink>查找表库中代替interp块,并将xdat(时间t列)和ydat(值)分别放在单独的变量/常量中。
这听起来像是你想在一组新的时间值内插你的三个表格函数,然后计算每个函数的运行总和(因为你提到需要“随着时间的推移求和的函数值”)。我相信你会需要两个不同类型的块来实现:
一个Lookup Table block将让你在不同时间点内插你的函数值。这将取代上面模型中显示的“Interp”块。有几个不同的选择这里取决于你想如何初始化表数据模型:
如果你有一组数据将保持不变,在整个模拟,你可以硬编码这个数据进入表数据块的属性。在这种情况下,您可以使用Lookup Table block,更一般的Lookup Table (n-D) block或Interpolation Using Prelookup block(与Prelookup block结合使用)。
如果要在模拟过程中从工作区加载表中的数据,你可以使用一个Lookup Table Dynamic block或Interpolation Using Prelookup block其来源属性设置为使用的输入端口。在这种情况下,您将不得不使用From Workspace block加载数据(如上所述),然后确保正确格式化表格数据以供插值块使用。
一个Cumulative Sum block将让你保持一个运行总计您的功能创建随时间变化的值。如果您想分别查看每个函数的运行总数,则必须在每个插值模块的输出中添加一个累计和模块,然后将其发送到您的示波器。如果您想查看所有添加的功能的运行总数,那么您可以像上面一样使用Sum block来添加您的三个信号,然后在将其发送到您的示波器之前将累加和块添加到该输出。
Thnx for response。那么,我在运行模型中只有simin1变量的第一个元素? – 2011-03-26 21:02:05
如果您使用“from workspace”块,则将有第一个元素用于第一次执行,第二个元素用于第二次执行,等等。这是“来自工作区”块的功能。 从您的使用情况来看,您觉得您希望将整个表格输入interp块。如果您希望每次执行整个表,则不能使用“从工作区”。 您应该使用“常量”块代替。 如果您无法理解,请尝试将“显示”块连接到“常量”块和“来自工作空间”块。我想你会看到这个问题。 – Miebster 2011-03-28 05:26:04
当我运行模型时,我总是会看到一个奇怪的数字,显示simin1,这个数字甚至不在我的数据集中。 – 2011-03-28 18:57:56