Matlab 中buffer函数,Simulink中的循环缓冲区实现为MATLAB函数

MATLAB功能块的工作原理是为您输入的MATLAB代码生成编译代码 . 为了生成代码,块需要知道您使用的所有输入和变量的大小,类型和复杂性 . 它根据输入的大小推断变量和输出的大小 . 使用时创建Buffer

Buffer = [Signal DelayedBuffer(1:59-1)];

很容易看出Buffer的大小是59个元素(假设Signal是标量) . MATLAB功能块可以推断出这个大小,并且还可以识别分配缓冲区的y也具有相同的大小 . 在第二种情况下,

Buffer = [Signal DelayedBuffer(1:BufferSize-1)];

BufferSize来自输入,MATLAB功能块在编译时不知道该值 . 因此,必须假设此值可以更改,从而导致可变大小的数据 . 即在编译时无法确定缓冲区的大小 . 分配缓冲区的'y'也被推断为可变大小的数据 . 错误消息表明您可能已将块参数中的输出大小指定为固定大小 . 博客的“端口和数据管理器”对话框中有一个复选框,表示输出端口是可变大小 . 您可以选中该框以查看其有效 . 但在你的情况下,对于循环缓冲区,最好使用持久变量,它给你固定大小的数据 .

您的BufferSize不需要在一次模拟中更改尝试将其用作MATLAB功能块的参数而不是输入 . 您也可以通过“端口和数据管理器”对话框执行此操作 .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值