matlab - 如何在 Simulink 中翻转时间序列数据?
问题描述
我一直在尝试在 Simulink 中将 2 组时间序列数据相乘,At
并且Bt
我希望结果是这样的:
ans = sum(A(1:t)*B(t:-1:1))
例如,当 时t = 3
,结果应该是
ans =At1*Bt1 + (At2*Bt1 + At1*Bt2) + (At3*Bt1 + At2*Bt2 + At3*Bt1)
我从我的一个 Simulink 模型中获得了这 2 个数据集,我想继续使用相同的模型进行仿真。
为了实现这一点,我想我需要翻转这两个数据集之一。所以我尝试了 Matlab 函数flip()
,但是当参数是时间序列时它不起作用。
然后我尝试首先将这些数据作为数组输出到 Matlab 工作区并翻转它们,然后将它们输入回我的 Simulink 模型,但这并不奏效,因为在这些数组中没有任何列存储时间信息。
最后发现DSP Toolbox里面有个叫“Flip”的block,问题是我没有这个toolbox,估计不会买,不知道这个block好不好用。
解决方案
如果这是你需要的,那么编写一个函数来做到这一点:
function C = multiply_timeseries(A, B)
Alen = length(A.Data);
Blen = length(B.Data);
if ~(Alen == Blen)
error("A and B length should be the same")
end
C = timeseries(zeros(1,Alen,'like',A.Data), A.Time);
for t = 1:Alen
C.Data(t) = sum( A(1:t) * B(t:-1:1) );
end
end
修改以上内容以满足您的需要。
推荐阅读
- mysql - dense_rank() 和 max,哪个更好找到 Nth 最高薪水(如果没有结果则返回 null)
- kubernetes - 有没有办法查看谁在 Kubernetes 中运行了 pods/jobs?
- cypress - 如何仅在系统范围内读取 cypress 中的 testdata/Json 一次?
- node.js - 如何在 Visual Studio Code 中调试 k6 测试脚本?
- python - Django:显示可下载的自定义日志文件
- mysql - 制作Mysql数据库(外键)
- javascript - TypeError:无法在打字稿中分配给对象“[object Array]”的只读属性“0”
- python - 重塑图像分割大小
- fiware - 在哪里可以找到标准化的 NGSI-LD 实体类型及其属性
- django - 升级到 PostgreSQL 后 ImageField 的默认值不起作用(Django)