黑盒信号预测

信息处理 离散信号 距离度量
2021-12-20 03:48:17

我有一个有状态的黑匣子,有四个实值输入和一个实值输出。我的问题是预测每个时刻的输出,给定到目前为止看到的输入序列。在学习阶段,我可以随心所欲地改变输入并观察输出。当然,有一点噪音,而且黑匣子似乎不是完全确定的。

具体来说,我正在对硬盘进行建模,并且我想在给定所有先前请求的情况下预测最新请求的访问时间。不过,由于显式模型的复杂性,并且我希望这适用于其他类似设备,例如 SSD,我想要一种更黑盒的方法。

一些人建议信号处理可能适合分析输入和输出值的序列。

信号处理中是否有任何想法可以帮助我预测输出或表征输入?

2个回答

通常,对于非线性系统,没有任何工具可以保证工作。你需要对盒子的性质有所了解。如果您可以使用具有未知参数的系统对其进行建模,那么通过观察输入-输出关系来“学习”可以帮助您估计这些参数,但我怀疑您是否可以盲目地“学习”系统模型,特别是如果它具有记忆/状态。话虽如此,估计非线性系统的一种或多或少的通用方法是使用Volterra 内核和某种梯度下降方法来最小化递归误差LMSRLS等方法被广泛使用。

Volterra 内核可帮助您估计系统的形式

y(t)=k0+n=1kn(t1,t2,,tn)x(tt1)x(tt2)x(ttn)dt1dt2dtn

查看以下系统的一种方法是通过中添加非线性项来注意它与卷积的相似性。但是请注意,如果您的系统的非线性不能用多项式(指数、对数和许多其他函数)建模,则需要无穷大的复杂度才能正确估计您的系统。x

在线免费提供的关于该主题的论文并不多,但您可以查看这篇这篇以了解这一切的意义。

如果你的盒子(大部分)是线性的,这是一个非常简单的问题,如果它主要是非线性的,它可以任意复杂。如果我们假设线性,那么简单的叠加就成立了。您可以测量从每个输入到输出的传递函数(而其他输入为零),然后将输出计算为各个输入响应的总和。在频域中,我们会写

Y(w) = X1(w)*H1(w) + X2(w)*H2(w) + X3(w)*H3(w) + X4(w)*H4(w); 

其中 Y(w) 是输出频谱,Xn 是输入“n”的输入频谱,Hn 是从输入“n”到输出的传递函数。在时域中它将是

y(t) = x1(t)**h1(t) +  ... + x4(t)**h4(t);

其中“**”是卷积算子,y(t) 是输出信号,xn(t) 是输入信号,hn(t) 是从输入 n 到输出的脉冲响应。这两个方程基本上是彼此的傅立叶变换。