首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Matlab中建立ARMAX模型

如何在Matlab中建立ARMAX模型
EN

Stack Overflow用户
提问于 2014-04-22 22:27:48
回答 1查看 4.1K关注 0票数 3

我正在尝试建立一个ARMAX模型,它可以预测水库水位的上升,因为以前的海拔和上游的流入都是如此。我的数据有大约0.041天的时间步调,但确实略有变化,我有3643个时间序列点。我试过使用基本的armax Matlab命令,但是我得到了以下错误:

代码语言:javascript
复制
Error using armax (line 90)
Operands to the || and && operators must be convertible to
logical scalar values.

我正在尝试的代码是:

代码语言:javascript
复制
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的例子不是很有用..。

EN

回答 1

Stack Overflow用户

发布于 2014-08-28 03:06:29

我希望这不会让你晚一点。

检查您的代码,我发现您正在使用一个名为SamplingInstants的参数。我不确定ARMAX函数是否与它一起工作。事实上我很确定。我已经尝试过好几次了,不,它没有。而且对于ARMAX -or来说,对于其他方法,它似乎也不是一个有详细记录的选项。

ARXARMAX和其他模型都是基于Z变换形式的线性离散系统,也就是说,人们可以假设你的系统是在规则采样率下采样的。当然,这不是一个规律,这是处理线性-and和非线性系统的标准框架。而且大多数工业控制和采集系统都是在定期采样的情况下工作的。目前还没有。

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

代码语言:javascript
复制
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能够工作-in --在这种情况下,大于121-,并且比10*mean(4*orders)更理想,这样ARMAX算法才能正确地解决您的问题,并且有足够的时间变量来防止陷入病态的解。

(祝你好运;)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23231409

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档