【发布时间】:2016-10-26 13:07:14
【问题描述】:
我希望在 MATLAB 中实现以下等式,因为我有一个非常大的矩阵,
我怎么能做到这一点?这实际上与 261 无关,为了简单起见,我们可以假设 d = 0.94,并且无需担心平方项或均值项,因为我将能够弄清楚是否可以得到循环概念下来。因此,例如,我将尝试计算附加了特定权重的行中所有过去值的平均值。
为了澄清,我们基本上可以将i 视为对矩阵的行进行索引,因此它由我在下面作为示例提供的整个列组成。忽略无穷大,我们可以将其与周期 t 相加,但想法是对最近行权重最大的行的所有先前值赋予一定权重。
我正在考虑使用这样的东西:
R = [1; 2; 3; 4; 5; 6; 7; 8; 9; 10];
d = 0.94;
r = zeros(10,1);
for t = 2:10
r(t,1) = R(t,1);
for i = 1:10
W(i,1) = (1-d)*(d.^i)*r(t,1);
end
end
甚至索引t = 1:10。
这些都不起作用。从本质上讲,我希望能够计算出一个对最近的值有更大权重的平均值。例如,在t=4 行,我将得到的值是:
(1-0.94)(0.94^3)*(1) + (1-0.94)(0.94^2)(2) +(1-0.94)(0.94)(3).
【问题讨论】:
-
我会在 Matlab 中命名您的变量以反映它们在方程式中的含义...例如,
Matrix是什么?你的方程中没有矩阵。此外,r从外观上看应该是一个已知向量,而您将其设置为 10x10 的零矩阵。忽略它应该是一个向量的事实,这意味着无论您的输入值是什么,您的方程都会给您零。 -
你的方程有一个无穷大的总和......这会给你一个
r的-infinity索引......这肯定是不对的。 -
我很遗憾没有澄清。所以我拥有的矩阵只是一列数据,这可以表示为 t 等于特定行,它是根据从 1 到行 t 的行的历史值计算的。其中第 t 行之前的最新值的权重为 1 的幂。另一方面,第 1 行的权重为 d 的 t 次幂。希望这更清楚。至于无穷大的和,它可以解释为在我的示例中定义为矩阵 R 的矩阵中某行 t 之前的所有先前行的总和。
-
好吧...我不认为你需要很少的
r。您可以将其替换为大R。您所说的“历史”值是什么意思,“其中最近的值 [...] 的权重是 1 的幂”。R是原始值,还是您已经应用了一些权重? -
在这种情况下,它将是原始值。因此,我尝试将根据 d 的权重应用于 i _(d^i) 的幂,这将 d^1最近的值。因此,对于提供的示例,如果 t = 4(第 4 行),那么它将基于先前的值,将最高权重应用于该行之前的行,即由值 3 给出的第 3 行。