具有非均匀(不规则)采样数据的系统识别

时间:2016-09-27 13:52:47

标签: matlab sampling system-identification

我正在尝试使用MATLAB的系统识别工具箱(App)和命令行来识别我的四轴飞行器的模型。我有输入和输出信号都是非均匀采样,具体来说,连续测量之间的采样时间在整个实验中并不是恒定的。

我发现可以使用以下方法在MATLAB上创建非统一数据集:

FlightData = iddata(inputs, outputs, [],'SamplingInstants', time, 'Name', dataName);

其中time包含非均匀采样时间向量。但是,我在MATLAB上找不到任何接受这种非均匀数据的线性或非线性模型。

如果有人能给出任何提示,我将不胜感激。

1 个答案:

答案 0 :(得分:2)

系统识别工具箱中对不规则采样数据的支持非常有限。系统识别工具箱的许多功能都需要定期采样数据see this link

从您使用 df1 <-data.frame( id = c(1,1,1,2,2,3,3,3,3) ) df2 <- data.frame( id = c(1,2,3), n = c(5,9,8) ) 我想您的输入和输入输出数据在同一时刻成对测量,但相邻样本之间的时间跨度不规则。

在这种情况下,您可以使用某些(线性)插值,例如interp1。这可能会在估算中引入一些错误,但这是一种简单快速的方法。只需定期计算时间步长并插入它们。

df1:

id   n
1    5
1    5
1    5
2    9
2    9
3    8
3    8
3    8
3    8

应该这样做。

如果您的(原始)采样频率大于相关动态的频率,则误差应该很小。直升机的(刚体)动力学大约为1 Hz,因此测量50或100 Hz的输入和输出数据通常很好(但这可能取决于您的应用)。