【发布时间】:2012-10-25 16:35:30
【问题描述】:
第一次在这里发帖!很乐意接受我能得到的任何建议||criticism。
我们有两个向量:v1 和 v2。假设length(v1) >> length(v2)。我沿着向量v1 移动一个大小为length(v2) 的窗口。在每个滞后指数处,从v1 的窗口部分中减去v2。然后我对结果向量的项求和,并为向量v1 的长度上的每个滞后索引返回这个总和。为简单起见,让我们忽略边缘情况。
我已经用for 循环完成了这个,但是我的向量的长度大约是 10^9 [和更大],即使计算很简单,它似乎也需要很长时间只需遍历整个事情。
有什么想法吗?我怀疑有一个函数可以做这样的事情,但我没有找到它。
【问题讨论】:
-
我对你到底在做什么有点困惑。你能提供一个简短的例子吗?如果您只是对所有元素求和,那么如何对齐向量并不重要;你只是在每一端留下不同数量的元素。
-
感谢您指出这一点。我可以确切地看到为什么我的解释不是一个好的解释。我已经编辑了这个问题以更好地反映我的实际意思(我希望它现在更有意义)。
-
你真的是在总结向量之间的差异,而不是差异的一些规范?
-
这实际上正是我接下来要尝试的事情。认为首先考虑一个更简单的操作会很好,但看起来同样的技巧可能行不通......在这种情况下我是否坚持使用
for循环? -
我不知道有任何内置函数可以在这种情况下工作。您可能会查看 mex-functions,它是 matlab 的 c 扩展。对于像这样的简单操作,它们相当容易编写,并且比 for 循环具有更好的性能。
标签: performance matlab signal-processing time-series vectorization