Simulink - 查找累积超过阈值的向量元素的索引

Simulink - Finding index of vector element where accumulation crosses a threshold

我希望改进 Simulink 模型的延迟估计部分。输入是系统的估计脉冲响应。我想要脉冲响应的第一个样本的索引,其中它的绝对值和前面的元素的总和超过整个向量总数的一定比例。

这是我目前的解决方案:

矩阵和沿维度 2 运行。预查找块设置为裁剪。这是找到达到总数 1% 的元素(可能是一次性的,我还没有想通)。

这看起来太复杂了,如果不做一些解释就不清楚它试图做什么。我尝试提出基于离散 integrator/accumulator 块的解决方案,但无法提出更好的解决方案。它确实比这个解决方案需要做的更多,尽管性能现在并不是真正的问题。

有没有一种更简单的方法来获取向量的 运行 总和,我可以用它代替 Toeplitz->Triangular->Sum 部分?有没有更好的整体执行整个查找的方法?

如果您有 DSP 系统工具箱,那么有一个 "Cumulative Sum" 块应该可以替换您的 toeplitz、三角矩阵和矩阵求和。

http://www.mathworks.com/help/dsp/ref/cumulativesum.html

如果您没有 DSP 系统工具箱,我建议在 MATLAB 函数块中对其进行编码,它应该是一行。

y = cumsum(x);

当你在那里的时候,你可能还想在 MATLAB Function 块中编写整个逻辑,在这种情况下,这样更容易编写和理解。