首页 > 解决方案 > 如何矢量化将延迟应用于信号的循环?

问题描述

以下代码是 MATLAB 函数的一部分,旨在计算一阶延迟系统的输出。它接受一个向量B(即“输入”或强制函数“)并用于构建输出向量A,这是一阶系统的响应:

for I=2:length(A)
    A(I) = A(I-1) + ( 1-exp(-tau(I)*dt) ) .* ( B(I)-A(I-1) );
end

A恰好是一个大向量,并且循环执行了数千次,因为它是优化例程的一部分。循环的目的是根据向量的值“延迟”存储在 A 中的信号tauB并且至关重要的是,在 A 的第 (I-1)n 个值上,该值在循环的上一次迭代中被修改。tau并且B具有与 相同数量的元素A

有没有办法利用矢量化并完全避免循环?我想我可以利用这样一个事实,即一阶系统对单位步长或单位斜坡的响应可以用相对简单的术语表示,使用tauB:我会通过尝试将卷积应用于输入向量B和一阶系统的脉冲响应?

非常感谢您的帮助!

标签: matlabvectorizationdelay

解决方案


推荐阅读