代数环消除问题

一、代数环的问题
在数字计算中,输入信号决定输出信号,同时输出信号也决定输入信号,由于数字计算的时序性,导致没有输出信号无法计算输入信号,没有输入信号又反过来无法计算输出信号,形成一个死锁(deadlock)或死循环,这就是代数环。
二、代数环产生的条件
简单地说,代数环其实就是一个输入信号包含输出信号,同时输出信号也包含输入信号的特殊反馈回路。在simulink中,这是由于直通模块(无延时的模块)的原因造成的,simulink中大部分的模块都是直通模块,因此很容易形成代数环。在整个回路中,只包含直通模块就会形成代数环,反馈回路有延时模块就会消除代数环。
三、代数环的解决措施
1、用工具栏中的“simulink”中的“diagnostics”对代数环进行消除
将simulink中diagnostics的对代数环的处理信息进行选择,将对代数环的处理信息选择为“none”,即忽略代数环的信息。
2、在反馈回路中添加延时模块进行消除
由于代数环的产生是由于整个模型中所有模块均为直通模块,因此只需在反馈回路中添加延时模块即可消除代数环。延时模块有delay模块、memory模块。(Memory模块介绍:http://ww2.mathworks.cn/help/simulink/slref/memory.html)
3、用变换法消除代数环
对于简单的代数环问题,可以通过人为地采用数字变换法来求解消除代数环,但这只针对简单的代数环有限,对于复杂的代数环基本不可能实现。
4、在反馈回路中添加入高频传递环节
在反馈回路中添加入高频传递函数,打断反馈回路中的直通模块,消除输入信号与输出信号的关联关系。

错误提示:

  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
matlabsimulink代数问题的讲解及解决方法1-解决代数方法.doc 本帖最后由 小小2008鸟 于 2012-11-30 11:26 编辑 什么是代数?发生在两个或多个模块在输入端口具有信号直接传递而形成反馈的情况时,直接传递的模块在不知输入端口的值的情况下无法计算出输出端的值,也就是现在时刻的输出是依赖现在时刻的输入值来计算的。当这种情况出现时simulink会在每一次迭代言算完成时,去决定它是否会有解。代数回路会减缓方真执行的速度并可能会没有解。     当方程两边都出现同一个变量时,即产生了代数。如:3y 4=y 当Simulink中存在非模型延迟时,通常会产生代数。比如,传感器将输出信号反馈到输入端。解决代数      连续模型,在构成代数的反馈节加入memory模块;      离散模型就加入单位延迟1/Z,不过加入memory后仿真会慢些,但用了加速后,这个牺牲还是值得的。另还有拆解法等,具体见下面第9行论文内容。Simulink提供了一些专门手段来拆解代数,例如代数约束模块,积分模块的状态输出端等。这些手段可以解决一些特定的代数问题。下面举一个利用积分模块的状态输出端的例子。    从积分模块的输人端口到输出端口是非直通的,但从积分模块的初始值输人端口到输出端口,以及从复位输人端口到输出端口却都是直通的。因此,如果从积分模块的输出端口引出的信号再经过一些直通模块后又反馈到积分模块的初始值输人端口或者复位输人端口,则构成一个代数。    为了解决这个问题Simulink专门为积分模块设计了一个状态端口,其输出与输出端口完全相同,仅在内部计算的时序上有细微区别,而无论是从积分模块的初始值输人端口还是从复位输人端口到状态端口都是非直通的。因此,当出现上述的代数问题时,可 以从积分模块的状态端口引出信号。这样,代数就被拆解了

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值