dsp。AsyncBuffer
对象中的尺寸不匹配错误MATLAB函数块吗?如果您正在从一个MATLAB函数(金宝app模型)的输出,则该块抛出一个维度不匹配的错误读
方法未指定为可变大小的信号。
这是bufferWrapper
函数中包含算法的MATLAB函数块。当输入cmd
端口是1
,dsp。AsyncBuffer
对象写入数据输入,u
,转到缓冲区。当输入cmd
端口是0
,对象从缓冲区读取数据。
函数[y, isData] = bufferWrapper (u, cmd)持续的asyncBuff如果isempty(asyncBuff) asyncBuff = dsp.AsyncBuffer;设置(asyncBuff u);结束如果cmd%写写(asyncBuff u);y = 0 (3,1);isData = false;其他的%读y =阅读(asyncBuff 3);isData = true;结束
您必须通过调用其中任何一个来初始化缓冲区写
或设置
在第一次呼叫之前读
.
在写操作期间,第一个输出,y
,是0 (1)
第二个输出,isData
,是0。在读取操作期间,y
数据是否在缓冲区和isData
是1。
运行模型,出现以下错误。
的输出读(asyncBuff, 3)
第14行是大小可变的。输出的大小是可变的,因为信号输出的大小由读
函数依赖于的输入参数读
.若要解决此错误,请指定y
作为一个可变大小的信号。
在MATLAB函数块编辑器中,单击编辑数据打开端口和数据管理器。
为输出y
,选择变量的大小复选框。
点击应用.
运行模型并查看输出y
在时间范围.
与cmd = 0
时,不会将数据写入缓冲区。因此,输出是0。写入输入数据u
到缓冲区,设置cmd = 1
.在你写一些数据之后,如果你改变cmd
回到0时间范围输出更改为如下。