【问题标题】:for loop for scalar product with a matrix用于矩阵标量积的 for 循环
【发布时间】:2015-04-29 20:52:57
【问题描述】:

我正在尝试用循环填充 10 x 1500 矩阵。 我必须用 150 个小 10 x 10 矩阵填充该矩阵。我试图用双循环来实现这一点,但没有成功。我的问题是每个 10*10 矩阵都是标量积的结果。 一开始似乎很容易,但后来我意识到我无法计算出 10 x 1500 矩阵和 150 个 10*10 小矩阵的大小。 这是我所做的:

es_var 是一个 1 x 150 矩阵,我将其转换为向量以简化标量积(至少在我看来)。 diax 是一个 10 x 10 矩阵。 我想将 es_var 向量的每个值与整个 diag 10*10 矩阵相乘。 我遇到了麻烦,因为我每次都无法输入 R 来填充 10 行。因此最后我得到了一个 10*1500 的矩阵,但它是相同的 10*10 时间矩阵,重复了 150 次。

这是我的代码

es_var1 = as.vector(es_var)

v = matrix(0, 10, 10*N)

for (i in 1:N){
      v[,] = es_var1[i] * diax
}

有人可以帮忙解决这个问题吗?我花了一整天的时间尝试它。而且我需要在不使用构建函数的情况下这样做,因为这是我必须实现的大型数学演示的一小部分。

【问题讨论】:

  • 什么是 N?是150吗?

标签: r loops for-loop matrix product


【解决方案1】:

如果我正确理解您的要求,您可以使用以下行来完成此操作:

v <- matrix(diax,10,1500)*rep(es_var1,each=100);

这将构造一个 10x1500 矩阵,其中 10x10 diax 矩阵作为初始值,循环充分以覆盖整个 10x1500 大小。然后,要应用 es_var1 乘法,您可以将其中的每个元素复制 100 次,这样它们就会在矢量化乘法期间自然地与每个连续的 10x10 小矩阵对齐。

【讨论】:

  • 绝对!这就是我一直在寻找的解决方案。非常感谢!我曾经尝试使用rep公式,但我以前从未使用过它,因此我一定是用错了。你能解释一下为什么你使用“each = 100”吗?为什么我不能用循环或双循环来实现呢?我真的不明白,这让我发疯。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-08-21
  • 2016-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-17
  • 1970-01-01
相关资源
最近更新 更多