我正在尝试使用MATLAB的系统识别工具箱(App)和命令行来识别我的四轴飞行器的模型。我有输入和输出信号都是非均匀采样,具体来说,连续测量之间的采样时间在整个实验中并不是恒定的。
我发现可以使用以下方法在MATLAB上创建非统一数据集:
FlightData = iddata(inputs, outputs, [],'SamplingInstants', time, 'Name', dataName);
其中time
包含非均匀采样时间向量。但是,我在MATLAB上找不到任何接受这种非均匀数据的线性或非线性模型。
如果有人能给出任何提示,我将不胜感激。
答案 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的输入和输出数据通常很好(但这可能取决于您的应用)。