问题标签 [state-space]
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.
r - R dse 包和卡尔曼滤波器
我从 R 中的 dse 包开始,我的目标是从状态空间模型估计矩阵 G 和 Q:
z(t) =Fz(t-1) + Gu(t) + Kw(t-1)
y(t) = Hz(t) + w(t)
u_t 是我的输入向量,我称之为 tx_cho,它每季度定义一次,y_t 是我的输出向量,我称之为 tx_act,它也是每季度定义一次。我正在使用包 dse 和命令 dse::SS。
dim(tx_act) = 144,1 和 tx_cho
代码运行正确,但摘要(ss)似乎没有估计矩阵 g 的第一个值(设置为 -40)和矩阵 q 的两个值设置为 2。
如果这是相当具体的,我很抱歉,但我永远被这段代码所困扰,非常欢迎任何帮助。
T。
matlab - MATLAB LSIM 初始条件
令 x(0) = 0 和 u(t) = 2,对于 t >= 0。使用 lsim 命令获得 0 <= t <= 20 时的 y(t) 图。
我的sys
功能已准备就绪,但我无法在上述问题中设置初始值。我怎样才能做到这一点?
这是我的代码:
matlab - 将 LGR 和卡尔曼滤波器组合到单个控件中
我正在尝试做的事情
- 我正在尝试通过组合线性二次调节器(LQR)和卡尔曼滤波器来创建一个 LQG 控制器来控制给定系统。
我被困在哪里
我分别找到了两者,但不确定如何在 MATLAB 中组合它们。这是系统和 LQR 解决方案:
我能够分别创建卡尔曼滤波器和 LQR,但我不知道如何组合 LQR 以将卡尔曼滤波器状态估计作为其输入。
当我使用卡尔曼函数时,这size(KEST)
给了我:
我希望我U
使用新的 SS 系统给出的估计KEST
。KEST
提供输出的估计值(y
,维度 1),以及所有 10 个状态的估计值(X
,维度 10)。我可以使用 LQR 和 Kalman 函数编写/绘制出我希望创建的闭环控制路径,但我被困在这一点上,因为我不知道如何通过 MATLAB 实现它。我也不确定语法。
我搜索了 MATLAB 示例,但没有找到任何可以告诉我如何组合我找到的内容的示例。我知道这KEST
是一个状态空间模型,但我不知道如何使用它或选择单个输出。
我希望得到帮助
如果我使用
bode(KEST)
,它会为我提供所有 11 个输出的 BODE 图。我不确定如何只选择KEST
.我想拥有
U = -K*X_est
,但目前我只知道 的价值K
。我不知道如何X_est
从我的KEST
状态空间系统中获取一个。
algorithm - 状态空间搜索:A* 和广度优先搜索
所以我为游戏推箱子实现了 2 个不同的求解器。
求解器很简单,给定一个起始状态(位置),如果初始状态是目标状态,则返回结果。否则生成子状态并将它们存储到与算法相对应的任何数据结构中。(BFS 的队列和 A* 的优先级队列)然后它从数据结构中弹出第一个子状态以检查它是否是目标状态,否则生成子状态并存储到结构中,重复此过程直到找到目标状态。
目前,A* 算法确实比 BFS 更好,因此在找到结果之前生成的节点更少。但是,我的问题是 A* 算法需要更长的时间来计算。例如,在其中一个级别中,BFS 算法生成了 26000 个节点,而 A* 只生成了 3488 个节点,但 A* 比 BFS 花费了一秒钟的时间来完成。
通过使用时间分析器,我得出结论,用于存储节点的优先级队列数据结构是造成这种减速的原因。因为每次将节点插入队列时,优先级队列都必须运行启发式函数算法来确定新状态是否应该是最接近目标状态的状态(因此它将该节点放在队列中的第一个位置)。
现在我的问题是,你们认为这是我的实现有问题还是这是正常的,因为计算启发式函数会产生开销。
matlab - 如何从状态空间方程获得输出响应?
对于矩阵A
依赖于变量t
(时间)的状态空间方程,如何获得阶跃或输出响应?
这是代码,它不起作用:
以下是错误信息:
使用 horzcat 时出错 被连接的矩阵的维度不一致。
响应错误(第 11 行) A = [sin(t) 0;0 cos(t)];
r - 使用包 DLM 和 FKF 的状态空间
我试图实现的状态空间模型如下:
在 DLM 中,我使用以下修改(因为 DLM 不允许在测量和转换方程中截取)
现在我正在尝试使用 fkf 包实现相同的功能:
两种方法都对吗?
如果是,那么为什么我使用不同的包得到不同的似然值,应该首选哪一个?
depth-first-search - DFS“可以返回任何路径”
这是来自加州伯克利大学的AI 练习考试。
考虑上面显示的状态空间图。A 是起始状态,G 是目标状态。每条边的成本都显示在图表上。每条边都可以双向遍历。请注意,启发式 h1 是一致的,但启发式 h2 是不一致的。
对于以下每个图搜索策略(不要回答树搜索),标记它可以返回的列出的路径中的哪一个(如果有)。请注意,对于某些搜索策略,返回的特定路径可能取决于平局行为。
搜索算法是深度优先、广度优先、统一成本、A* 与 h1 和 A* 与 h2。“列出的路径”是 ABDG、ACDG 和 ABCDFG
这是我从图中构建的搜索树(具有各种启发式方法和操作成本): 该解决方案表明 DFS 将返回 ABDG、ACDG 和 ABCDFG,因为“DFS 可以返回任何路径”
我可以理解,如果决胜局是字母表中较早的字母,DFS 将返回 ABCDE G。如果决胜局是字母表中较晚的字母,DFS 将返回 ACD G。但我不明白在什么情况下情况 DFS 将返回 ABDG 或 ABCDF G。
我还认为 DFS 扩展了最深的节点并以这种方式返回解决方案。它可以返回任何路径解决方案是真的吗?如果是这样,怎么做?
python - 'SARIMAXResults' 对象没有属性 '_params_ma
我正在尝试使用 class 创建一个 Seasonal ARIMA 模型statsmodels.statespace.sarimax.SARIMA
,并且该模型似乎创建得很好。
现在,我想将 AR 系数和 MA 系数分别传递给变量,但出现错误:SARIMAXResults
object has no attribute _params_ma
。
我应该怎么做才能纠正错误?
python-3.x - 使用 statsmodels MLEModel 类中的状态截距来处理已知的外生输入
statsmodels 状态空间公式中的状态截距 c_t似乎是将外生控制变量插入状态空间框架的一种方式。但是,我无法让它工作。我能想到的最简单的例子是一个平均模型,它与基线的偏移量已知,并结合了随机噪声。在 statsmodels 状态空间表示法中,它将是:
a_t = 0 * a_{t - 1} + sin(pi * t / 24) + 0 * eta_t,
y_t = 30 + 1 * a_t + e_t,
其中 t = 0, ..., 999 和 e_t ~ N(0, 4)。您可以在下面看到我如何尝试实现这一点:
如果估计考虑了偏移量,那么我预计会得到大约 4 的方差估计值。但是,如果忽略它们,正弦曲线的变化会更好。正如您在运行它时所看到的,它确实更高。
这里有什么想法吗?