主要内容

为什么要从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作为一个可变大小的信号。

  1. MATLAB函数块编辑器中,单击编辑数据打开端口和数据管理器。

  2. 为输出y,选择变量的大小复选框。

  3. 点击应用

运行模型并查看输出y时间范围

cmd = 0时,不会将数据写入缓冲区。因此,输出是0。写入输入数据u到缓冲区,设置cmd = 1.在你写一些数据之后,如果你改变cmd回到0时间范围输出更改为如下。

另请参阅

对象

相关的话题