1

我是 StateFlow 的新手,一直在看 StateFlow 教程,但还没有看到处理向量的教程。

我的 simulink 模型生成我想用状态机处理的音频数据向量。例如,如果音频数据超过某个值,则进入state1,如果低于另一个值,则进入state2。

如果我使用 unbuffer 块将数据发送到 StateFlow 块,系统运行非常缓慢。

那么,如何让 StateFlow 通过向量输入运行,处理向量中的每个元素?

编辑:我附上了我的图表的图片。在这里,我试图访问输入的第 i 个元素,但我不知道如何声明变量 i 以及如何递增它来处理向量。

在此处输入图像描述

4

1 回答 1

2

澄清一下,当你说你有音频数据作为向量时,这个答案假设你的意思是它们是帧。向量可以并且一直可以直接输入到图表中。另一方面,框架没有。

但是,此功能在最近的版本中发生了变化。例如,R2014b 中的 Stateflow不允许输入帧,但在 R2015b中确实允许输入帧。(我无权访问 R2015a 以准确查看功能更改的时间。)

在之前的版本中,解决方法是在 Stateflow 模块之前放置一个Reshape模块。这会将帧转换为可由 Stateflow 处理的(单列)向量,从而在图表内的代码中循环。

一旦进入图表,数据就会像在任何代码中一样被操作。例如,如果您已将输入变量定义为,data并且您有一个计数器变量i,那么data(i)将为您提供 的第 i 个元素data

于 2016-05-30T23:53:54.153 回答