【问题标题】:Matlab - vector divide by vector, use loopMatlab - 向量除以向量,使用循环
【发布时间】:2013-01-28 02:00:37
【问题描述】:

我必须有两个大小均匀的非常大的向量(列)A 和 B。我想将向量 A 除以向量 B。这将给我一个用零填充的大矩阵 AxB,除了最后一列。此列包含我感兴趣的值。当我在 Matlab 脚本中简单地划分向量时,内存不足。可能是因为矩阵 AxB 变得非常大。可能我可以通过重复以下操作来防止这种情况发生:

  1. 计算矩阵AxB的第一行

  2. 过滤最后一个值,放入另一个向量C中。

  3. 删除矩阵AxB的已用行

  4. 对向量 A 中的所有行重做步骤 1-4

我怎样才能做一个循环呢?

【问题讨论】:

  • 什么是 B^-1?您是否将 A 乘以 B 的元素逆?
  • 你能用你用来将 A 除以 B 的代码更新你的问题吗

标签: matlab loops memory vector matrix


【解决方案1】:

“矩阵乘积 AxB”和“除向量”是不同的操作。 如果我们理解正确,您确实要计算的是“C = AxB 的最后一列”,这样:

lastcolsel=zeros(size(B,2),1)
C=(A*B)*lastcolsel

如果该代码超出了您的内存限制,请回忆一下矩阵积是关联的 (MxN)xP = Mx(NxP)。简化您的示例,我们得到:

lastcolsel=zeros(size(B,2),1)
simplifier=B*lastcolsel
C=A*simplifier

【讨论】:

    【解决方案2】:

    您的问题并没有说明您要做什么,尽管听起来您想做一个元素明智的划分。

    试试:

    C = A./B
    

    【讨论】:

      猜你喜欢
      • 2015-07-06
      • 2013-02-18
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多