高度节约内存递归

2视图(30天)
M R
M R 2021年1月24日
评论道: Stephen23 2021年1月26日
让我们假设我们观察数据在未来6个月每月(k = 6)。让我们也假定下面的递归结构(在下面的例子)。
我想知道,这个结构可以通过编程如何最有效地考虑以下几方面(效率将是绝对必要的):
  • 6个月内为简单起见,通常没有固定这个值。因此,这个值需要重新定义;
  • 每月计算存储,因为我需要它进行进一步的计算。
兆瓦:
β=符号(“测试版”[1,2])”;
φ=符号(“φ”(2 - 2));
k1我们计算的矩阵形式如下:
K1β=β*。”
在k2我们有一个相似的表达,但现在它也取决于φ*之前的时期。
K2β=β*。' +φ* K1
时期k3 k2是一样的,只是K1和k2的变化。所以从现在起是递归和重复。所以过去的观察(转k6)与K5相同的公式。

答案(1)

Sindar
Sindar 2021年1月24日
他们需要象征性的吗?这可能增加了体面的成本
同样的,如果你有很多零, 稀疏的 矩阵将更有效地存储
每月都是β和φ测量吗?
如果k仍然很小,它可能是更高效的存储phi_i beta_i,然后手动打开递归和直接计算吻你想要的,就像这样:
转K6 = beta6 * beta6 %。' + phi6 *速率
转K6 = beta6 * beta6 %。' +phi6 * (beta5*beta5.' + phi5 * K4)
转K6 = beta6 * beta6 %。' +phi6 * (beta5*beta5.' + ...
% phi5 * beta4 * beta4。' +phi4 * (beta3*beta3.' + phi3 * K2))
转K6 = beta6 * beta6。' +phi6 * (beta5*beta5.' +
phi5 * beta4 * beta4。' +phi4 * (beta3*beta3.' + phi3 * (beta1 * beta1.' + phi1 * K1)));
这将节省内存,但是还有好机会将运行得更快比递归当你需要一个吻
5个评论
M R
M R 2021年1月25日
编辑:M R 2021年1月25日
是的,每个分开的K在这种情况下是3 * 3。
符号表达式是必要的因为我想区分这些表达式。此外,我需要这些表达式的优化。

登录置评。

类别

找到更多的在开始使用MATLAB帮助中心文件交换

s manbetx 845


释放

R2020b

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!