lam1 = 0.0:0.1:4.0
lam = 1.60*lam1-0.30*lam1^2 for 0<lam1<=1
lam = lam1+0.30 for 1<=lam1<=4
Run Code Online (Sandbox Code Playgroud)
我有一堆那些.编写那种东西的"matlab方式"是什么,缺少索引的简单循环和测试lam1的值?
我认为在MATLAB中最干净(即最容易阅读和解释)的方法如下:
lam = 0:0.1:4; %# Initial values
lessThanOne = lam < 1; %# Logical index of values less than 1
lam(lessThanOne) = lam(lessThanOne).*...
(1.6-0.3.*lam(lessThanOne)); %# For values < 1
lam(~lessThanOne) = lam(~lessThanOne)+0.3; %# For values >= 1
Run Code Online (Sandbox Code Playgroud)
上面的代码创建了一个向量,lam
并使用逻辑索引 修改其条目lessThanOne
.即使给出的初始值lam
是降序(甚至是未排序的),该解决方案还具有工作的额外好处.