首页 > 解决方案 > 如何让 Matlab 做惰性求值?

问题描述

我正在尝试以数字方式执行以下操作。

b = 2;
f1 = @(x) (b<1).*x./(2-b);
R = integral(f1,0,1);

这段代码给了我R=NaN。我知道 Matlab 可能会评估x./(2-b)并发现分数底部有一个 0,它会立即生成一个NaN. 然后,所有后续操作都被 this 毁掉了NaN

我想要的是:Matlab 从左到右进行操作,即首先检查b<1. 如果b<1违反,则停止评估括号中的下一件事(避免得到NaN)。

我不确定如何实现这个目标,或者 Matlab 是否有能力做到这一点。

我的实际计算非常复杂,涉及大量此类逻辑比较。任何意见和建议都非常感谢!

标签: matlablazy-evaluation

解决方案


推荐阅读