如何在 StateFlow 中处理向量输入
How to process vector input in StateFlow
我是 StateFlow 的新手,一直在看 StateFlow 教程,但还没有看到处理向量的教程。
我的 simulink 模型生成我想用状态机处理的音频数据向量。例如,如果音频数据超过某个值,则进入state1,如果低于另一个值,则进入state2。
如果我使用 unbuffer 块将数据发送到 StateFlow 块,系统 运行 非常慢。
那么,我怎样才能让 StateFlow 运行 通过向量输入,处理向量中的每个元素?
编辑:我附上了图表的照片。在这里,我试图访问输入的第 i 个元素,但我不知道如何声明变量 i 以及如何递增它以处理向量。
澄清一下,当你说你的音频数据是矢量时,这个答案假定你的意思是它们是帧。向量可以并且一直能够直接输入到图表中。另一方面,帧没有。
不过,此功能在最近的版本中发生了变化。例如,R2014b 中的 Stateflow 不允许 允许输入帧,但在 R2015b 中 允许 允许输入帧。 (我无法访问 R2015a,无法准确查看功能更改的时间。)
在以前的版本中,解决方法是在 Stateflow 块之前放置一个 Reshape 块。这会将帧转换为可由 Stateflow 处理的(单列)向量,并因此在图表内的代码中循环。
一旦进入图表,就可以像在任何代码段中一样操作数据。例如,如果您已将输入变量定义为 data
,并且您有一个计数器变量 i
,那么 data(i)
将为您提供 data
的第 i 个元素。
我是 StateFlow 的新手,一直在看 StateFlow 教程,但还没有看到处理向量的教程。
我的 simulink 模型生成我想用状态机处理的音频数据向量。例如,如果音频数据超过某个值,则进入state1,如果低于另一个值,则进入state2。
如果我使用 unbuffer 块将数据发送到 StateFlow 块,系统 运行 非常慢。
那么,我怎样才能让 StateFlow 运行 通过向量输入,处理向量中的每个元素?
编辑:我附上了图表的照片。在这里,我试图访问输入的第 i 个元素,但我不知道如何声明变量 i 以及如何递增它以处理向量。
澄清一下,当你说你的音频数据是矢量时,这个答案假定你的意思是它们是帧。向量可以并且一直能够直接输入到图表中。另一方面,帧没有。
不过,此功能在最近的版本中发生了变化。例如,R2014b 中的 Stateflow 不允许 允许输入帧,但在 R2015b 中 允许 允许输入帧。 (我无法访问 R2015a,无法准确查看功能更改的时间。)
在以前的版本中,解决方法是在 Stateflow 块之前放置一个 Reshape 块。这会将帧转换为可由 Stateflow 处理的(单列)向量,并因此在图表内的代码中循环。
一旦进入图表,就可以像在任何代码段中一样操作数据。例如,如果您已将输入变量定义为 data
,并且您有一个计数器变量 i
,那么 data(i)
将为您提供 data
的第 i 个元素。