问题标签 [system-identification]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
459 浏览

matlab - ARMAX 合身百分比

我使用armax模型来描述两个信号之间的关系。我使用了具有不同模型顺序的 matlab armax 函数。

为了评估模型的效率,我从 Report.Fit.FitPercent 中提取了值,期望它能够说明模型与实验数据的拟合程度。因为它是 fitpercent,所以我希望它在 0-100% 之间。我的结果范围从 ~ -257 到 99.99。

我在 mathworks 或其他网站上找不到这个值是如何计算的以及如何解释它。如果您能解释如何理解 fitPercent 值,那就太好了。

我使用的代码非常简单,它为不同的模型结构(订单)生成 FitPercent。

0 投票
1 回答
3981 浏览

matlab - 如何在 Matlab 中构建 ARMAX 模型

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

我正在尝试的代码是:

其中 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的例子不是很有帮助......

0 投票
0 回答
358 浏览

matlab - Matlab中具有线性等式约束的二次规划

我必须在一些线性约束下确定一个 ARX,这意味着我有一个具有线性等式约束问题的二次规划。


一种方法是在红色框中使用以下等式。在这种情况下,一个可能的缺点是矩阵求逆的计算(有时 Matlab 会给我警告:矩阵接近奇异或缩放不良)

在此处输入图像描述


另一种方法是在 Matlab 中使用命令:quadprog()


另一种方法是在 Matlab 中使用命令:lsqlin()


这三种方法中哪一种是最好的?

哪个在数值上最稳健?

0 投票
0 回答
1440 浏览

matlab - 具有线性等式约束和稳定性的 ARX 模型的识别

从输入和输出数据中,我必须用最小二乘法识别 ARX 模型

y(n) = -a1 y(n-1) -....- aN y(nN) + b1 x(n-1)+...+bM x(nM)

必须是稳定的(它的所有极点都在单位圆内)并且同时参数

a1,...,aN, b1,...,bM

必须满足一些线性等式约束。例如我需要一个等于 1 的静态增益,这意味着

-a1-a2...-aN+b1+b2...+bM =1

在矩阵形式中,我可以将约束写为:

Theta = [a1 a2 ... aN b1 b2 ... bM]';

Aeq = [-ones(1,N) 个(1,M)];

beq = 1;

Aeq*theta=beq;

使用下面的 Matlab 函数,我可以使用 Matlab 函数 'ARX' 设置参数arx_stable来识别稳定(但没有等式线性约束)ARX'Focus' ='stability'

使用以下函数arx_constr,我可以识别ARX具有线性等式约束 Aeq beq (但没有稳定性)

我怎样才能既稳定又尊重约束???谢谢,

西蒙娜

0 投票
1 回答
1129 浏览

matlab - 如何在 matlab/simulink 中获取未知系统的传递函数(近似值)?

我在 simulink 模型(非线性)中有一个未知系统,我不知道如何获得一个 TF,它将在输入数据的特定间隔中描述它。对不起,我问了这么抽象的问题,但我真的迷路了。

我尝试了 'tfest(data,number_of_poles,number_of_zeroes)' 我也尝试了 'ident' 然后将输入和输出导入 ident GUI,然后单击估计 TF。两者都返回给我传递函数,其行为与我的系统完全不同。

我不确定我应该向系统生成什么输入,输入应该是噪音吗?我会很感激这里的任何建议或帮助。

0 投票
1 回答
240 浏览

matlab - Matlab 系统 ID 工具箱中 iddata 函数的多重实验

我正在尝试在 matlab 中使用iddataINFO)进行一些N_E实验来评估。我已经计算并分别将输出和输入作为大小为 1x的N_E单元阵列。元胞数组的每个条目都是一个长度向量(SISO 系统)。为了正确起见,也是一个大小为 1x 的单元格数组,每个条目中都有句点。yuyuN=316periodN_E

使用命令:

不会产生预期的平均数据集。相反,它被视为361x 361MIMO 系统 (!)。

我已经尝试过转置,但没有结果。

有人知道为什么会发生这种情况,我怎样才能产生所需的多实验数据集?

PS我阅读的文档是针对Matlab R2014b的,我正在运行R2013b。有人知道我的版本是否不支持此功能吗?或者我怎样才能知道?

0 投票
0 回答
327 浏览

matlab - 理解 Matlab 中的比较命令

我对以下 Matlab 观察感到非常困惑。

在我的问题中,我试图从离散的采样输入输出数据中估计一个 ARX/ARMAX 模型。我正在按照 Matlab 的指南在命令行中识别线性​​模型(使用系统识别工具箱)

  • 我的数据集是 980 个输入-输出对(实验),采样时间为Ts = 10秒(2 个输入,1 个输出)。我将数据my_data分成 490 个实验的两个子集:experimentalvalidation.
  • 运行delayest(my_data)表明任何输入都没有延迟。因此nk1=0nk2=0
  • selstruc和识别订单arxstruc让我可以选择订单na和。nb1nb2
  • 我将opt=armaxOptions('InitialCondition','z')系统的初始条件设置为零(我不使用 Matlab 将其视为估计变量)。

考虑到以上所有因素,我运行

它在命令行中给出了以下模型(pastebin 上的链接)。

从上面的链接中,如果向下滚动,我们可以看到对experimental数据的拟合非常好。


我的问题来了

如果我现在想使用子集验证数据,请使用以下命令validation进行比较:compare

这就是有趣的地方,现在显示的数字很-109.626 %合适。

  • 有谁知道这个命令的确切行为,为什么在生成模型时的拟合arx(在上面的 pastebin 链接中)和使用该compare命令的拟合之间存在这种差异?

  • 我觉得这很奇怪,因为即使使用不同的数据集experimentalvalidation,它们都来自同一个输入系列(输入 1 的脉冲持续时间和幅度不同;输入 2 是外生输入)。

0 投票
1 回答
1172 浏览

matlab - Matlab非线性灰盒系统识别

我正在尝试进行非线性灰盒模型识别,并且正在使用以下代码。我对输入向量、输出向量和时间戳中的输入进行了测量。

我尝试使用具有已知系统参数的模拟输入/输出。但是,我从中得到的参数与它必须的参数有很大不同。即使我设置了初始参数估计它也不会估计关闭参数。

我的时间戳是不均匀的,这意味着每两次采样之间的间隔是不一样的。

如果有人能提供帮助,我将不胜感激。

0 投票
0 回答
92 浏览

system-identification - 创建具有可调参数的 MATLAB 系统以进行系统识别

我试图让 MATLAB 创建一个具有初始值的状态空间模型,稍后我必须使用系统识别工具箱对其进行微调。

问题是我正在使用“白盒”模型执行此操作,这意味着我的模型中的 A 矩阵不仅仅是数值矩阵,而是包含其他几个参数。

由于构成矩阵的每个参数都具有物理意义,因此我想单独估计它,而不仅仅是 A 矩阵的值。

这有可能吗?已经查看了 genss、idss 和其他几个工具,但还没有能够使它们中的任何一个工作。

我将使用的系统版本如下(C 和 D 矩阵不相关,因为这实际上只是测试):

我意识到我可能会遇到几个解决方案的问题,但后来我认为系统识别只会选择一个。

有任何想法吗?

提前致谢!

哦,初始值如下:

0 投票
0 回答
235 浏览

matlab - matlab中流行病建模的系统识别

我正在尝试使用系统识别工具箱来估计参数。我使用了文档中提供的三个生态系统的示例,并对其进行了构建自己的模型。

这是我的模型:


以及系统 ID 代码:


当我部分运行代码时,出现以下错误:

???在 165 处使用 ==> idnlgrey.isvalid 时出错 指定的 ODE 文件“志贺氏菌”中的错误或不匹配。错误消息是:'尝试访问 x(1); 索引超出范围,因为 numel(x)=0。

我试图摆脱比较部分并继续前进,但我收到了这个错误

???未定义的函数或变量“nlgreestOptions”。


我非常感谢我能得到的任何帮助。