matlab - 如何矢量化将延迟应用于信号的循环?
问题描述
以下代码是 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 中的信号tau
,B
并且至关重要的是,在 A 的第 (I-1)n 个值上,该值在循环的上一次迭代中被修改。tau
并且B
具有与 相同数量的元素A
。
有没有办法利用矢量化并完全避免循环?我想我可以利用这样一个事实,即一阶系统对单位步长或单位斜坡的响应可以用相对简单的术语表示,使用tau
和B
:我会通过尝试将卷积应用于输入向量B
和一阶系统的脉冲响应?
非常感谢您的帮助!
解决方案
推荐阅读
- java - 今天遇到一个完全陌生的字符,看起来像一个字母但不是一个字母
- javascript - Kineses 视频流 GETMEDIA API 问题
- python - python中的回溯//效率+内存布局
- swiftui - NavigationLink 子项中的“表单”选择器的 NavigationView 问题
- javascript - Laravel 8动态下拉菜单无法使用javascript
- php - 如何在 Laravel 中使用自定义列名和表名定义多对多关系
- td-engine - 为什么使用 python 连接器时,interp 函数在 TDengine 数据库中返回不同的值?
- java - 带有 GeckoDriver 的 WebDriver - 等待 45 秒等待 Firefox 启动超时
- highcharts - 从 highchart 图例符号中删除删除线
- google-sheets - 当从第一个实例中过滤其他数据时,Google 表格查询功能不会返回从第二行计算的备用行结果