Simulink仿真中如何实时存储多维矩阵

工作中会用到Simulink仿真实时存储多维矩阵的需求,我在网上看了很多文章,都没有很好地解决这个问题,也可以看出来很多人遇到过这个问题。

注意:我们是想在实时仿真中存储数据,不是仿真结束后看数据,所以to workspace/to file这些方法是不行的。后续随着工作经验,可能会探索到其他的方法实时存储数据。目前想到两种方法,一种是利用delay、cnt做数据的延时存储和赋值;另一种也是这种思路,但是使用了persistent类型。

persistent
用于定义persistent变量。persistent变量对于声明它的函数来说是局部的,但是当退出该函数时,该变量仍然保存在内存中,数值并不变。persistent变量与全局变量有相似之处,它们都创建永久的存储空间,不同在于persistent只对定义它的函数可见。这样可以防止persistent变量被其它函数或在命令行中被改变。
当我们改变或着清空在内存中的一个函数时,在它内部定义的presistent变量也会被清空。
当我们定义persistent变量的时候,如果不定义它的值,则默认为空矩阵。
如果我们定义的在persistent变量在工作空间中已经存在的话,则会产生错误。如果把任何函数的输入或输出参数定义为presistent,同样也会产生错误。
其实,我认为它和C语言中的静态变量差不多,是一样的道理。有一点不同,那就是当我们把定义persistent变量的函数清除掉的时候,persistent变量也随之被清除。

方法1
simulink模型如下,其中data是输入,y是输出,p是计数。
Simulink仿真中如何实时存储多维矩阵_第1张图片

你可能感兴趣的:(Simulink仿真中如何实时存储多维矩阵)