【问题标题】:Matlab conditional sum of signals in matrixMatlab矩阵中信号的条件和
【发布时间】:2011-09-13 16:53:53
【问题描述】:

我有一个带有正/负信号和零(无信号)的向量:

X=[0,0,1,1,1,1,0,0,-1,-1,0,0,0,1,1,1,0,0,-1,0];

我想创建一个新向量,它是X 的累积和,条件是累积和永远不会超过 3/-3,因此输出变为:

Y=[0,0,1,2,3,3,3,3,2,1,1,1,1,2,3,3,3,3,2,2];

我可以通过循环或arrayfun 来解决这个问题,但我的矩阵尺寸很大且是多维的,而且这些解决方案都不能很好地扩展。

我的问题可以通过矢量化解决方案解决吗?谢谢。

【问题讨论】:

  • 从根本上说,没有向量化的解决方案,因为每个结果元素都依赖于前一个。
  • @Oli 是的,我想你是对的。只是想检查一下,有时当我被卡住时,我会在这里感到非常惊讶。谢谢。
  • 您对问题的描述可以很容易地向量化,但从您的示例看来,您想要一些稍微不同的东西。 temp = cumsum(y);Y=max(min(3,temp),-3)。如果这行不通,而您确实需要更快的速度,那么这是一个非常适合 mex 文件实现的问题。
  • @MatlabSorter Ehhhm,您的建议实际上并没有产生我想要的向量作为最终结果,因为cumsum 独立于最小/最大条件工作。如果您有任何其他潜在的解决方案,请提供它们作为可能的答案。编译代码可能是要走的路,但我仍处于试错/分析模式,现在不想走那条路。谢谢
  • @OliCharlesworth:你应该把你的评论放在答案中,把这个问题标记为已解决

标签: matlab matrix


【解决方案1】:

Oli Charlesworth 在评论中给出了答案。我正在复制他的评论作为答案,以便在未回答的问题中不再显示此问题。

从根本上说,没有矢量化解决方案,因为每个结果元素都依赖于前一个元素。 – Oli Charlesworth 2011 年 9 月 13 日 17:01

【讨论】:

  • 嘿,根据之前的输入,只有 7 个可能的选项,所以理论上如果在超过 7 台机器/CPUS 上运行,可以扩展。 ]:) 每个实例计算所有可能的解决方案,然后返回请求的解决方案。一旦所有实例计算出所有解决方案,每个人都可以立即知道哪个解决方案是正确的。一般来说,它可以像非限制版本一样被矢量化。
猜你喜欢
  • 1970-01-01
  • 2012-10-19
  • 1970-01-01
  • 1970-01-01
  • 2020-06-14
  • 2013-03-14
  • 1970-01-01
  • 2020-05-23
  • 1970-01-01
相关资源
最近更新 更多