MATLAB simulink中进行迭代运算

在simulink下做仿真的过程中需要进行迭代运算,于是做了一个小实验试验simulink中迭代运算的方法及规则。

需要用到UnitDelay模块+matlab function模块

实验lay out如下
实验lay out

UnitDelay模块:起Z变换中的1/z的作用,也就是记录上一次的数据。这里如果不加入该模块,simulink会报"代数环(algebraic loop)"错误。

Matlab Function模块:一个普通的函数模块,这里就实现一个简单的a++功能。
在这里插入图片描述

在输出端接一个示波器,运行并观察输出。可以看到输出每次加1。
在这里插入图片描述
值得一提的是,这里我对"last_a"的值没有设置任何初值,这也是在我做这个实验之前比较困惑我的一点,因为声明last_a初值为0这段代码不管放在哪里都会导致每次经过它时last_a都被设置成0,导致逻辑错误。

但是似乎Simulink自动将该初值设置为0,这也许和UnitDelay模块有关,因为如果不加UnitDelay,报错中会提到"it consists of blocks that cannot be assigned algebraic variables"无法给模块设定代数变量。

当然这只是我的推测,欢迎讨论。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值