3

我正在尝试构建一个 ARMAX 模型,该模型将水库水位高度预测为先前高度和上游流入量的函数。我的数据的时间步长约为 0.041 天,但确实略有不同,我有 3643 个时间序列点。我尝试使用基本的 armax Matlab 命令,但收到此错误:

Error using armax (line 90)
Operands to the || and && operators must be convertible to
logical scalar values.

我正在尝试的代码是:

data = iddata(y,x,[],'SamplingInstants',JDAYs)
m1 = armax(data, [30 30 30 1])

其中 y 是高程向量,以 y=[135.780 135.800 135.810 135.820 135.820 135.830]' 开始,x 是流量向量,以 x=[238.865 238.411 238.033 237.223 237.223 233.8'为向量的时间戳]以 JDAYs=[122.604 122.651 122.688 122.729 122.771 122.813]' 开头。

我是这种模型类型和系统识别工具箱的新手,所以我在找出导致该错误的原因时遇到了问题。Matlab的例子不是很有帮助......

4

1 回答 1

2

我希望这不会迟到。

检查您的代码,我发现您正在使用一个名为SamplingInstants. 我不确定ARMAX功能是否适用。其实我很确定。我已经尝试了几次,不,它没有。而且它似乎也不是ARMAX- 或其他方法 - 的一个有据可查的选项。

ARXARMAX其他模型基于 Z 变换形式的线性离散系统,也就是说,通常可以假设您的系统已在常规采样率下进行采样。当然,这不是法律,但这是处理线性系统和非线性系统时的标准框架。而且大多数工业控制和采集系统都在定期采样率下工作。然而。

尝试进入ARMAX标准设置,如下所示:

y=[135.780 135.800 135.810 135.820 135.820 135.830 .....]';
x=[238.865 238.411 238.033 237.223 237.223 233.828 .....]';
%JDAYs=[122.604 122.651 122.688 122.729 122.771 122.813 .....]';
JDAYs=122.601+[0:length(y)-1]*4.18';
data = iddata(y,x,[],'SamplingInstants',JDAYs);
m1 = armax(data, [30 30 30 1])

这将永远有效。请确保xy足够长,以便能够正确估计所有自由系数,大于mean(4*orders)ARMAX以便工作 - 在这种情况下,大于 121- 并且期望大于10*mean(4*orders),以便ARMAX算法正确解决您的问题,并且足够时变的,以防止接触到病态的解决方案。

祝你好运 ;)...

于 2014-08-28T03:06:29.637 回答