我正在尝试建立一个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’这样的流量向量,而JDAY是一个时间戳向量,它的起始位置为JDAYs=122.604 122.651 122.651 122.651 03ishiplinecomincium JDAYs=122.604‘。
我对这个模型类型和系统标识工具箱都很陌生,所以我发现是什么导致了这个错误。Matlab的例子不是很有用..。
发布于 2014-08-28 03:06:29
我希望这不会让你晚一点。
检查您的代码,我发现您正在使用一个名为SamplingInstants的参数。我不确定ARMAX函数是否与它一起工作。事实上我很确定。我已经尝试过好几次了,不,它没有。而且对于ARMAX -or来说,对于其他方法,它似乎也不是一个有详细记录的选项。
ARX,ARMAX和其他模型都是基于Z变换形式的线性离散系统,也就是说,人们可以假设你的系统是在规则采样率下采样的。当然,这不是一个规律,这是处理线性-and和非线性系统的标准框架。而且大多数工业控制和采集系统都是在定期采样的情况下工作的。目前还没有。
尝试进入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])这一切都会成功的。请确保x和y足够长,以便正确估计所有自由系数,大于mean(4*orders),使ARMAX能够工作-in --在这种情况下,大于121-,并且比10*mean(4*orders)更理想,这样ARMAX算法才能正确地解决您的问题,并且有足够的时间变量来防止陷入病态的解。
(祝你好运;)
https://stackoverflow.com/questions/23231409
复制相似问题