注册 登录
编程论坛 Matlab

[求助]求教个简单问题,请各位帮我点一下

時人 发布于 2007-04-09 20:23, 534 次点击
我想在下面的这个程序里限制一下,当a(i)和b(i)中有小于0的时候,设定a(i)和b(i)等于0
clear
i=1:60;
t=1;
a(i)=4;
b(i)=4;
c=rand(1,60)*0.1;
while t<1000;
i=1:60;
i0=mod(i+60-2,60)+1;
i1=mod(i,60)+1;
m(i)=a(i).*b(i);
n(i)=a(i1)+a(i0)-2.*a(i);
k(i)=b(i1)+b(i0)-2.*b(i);
da(i)=0.03125.*(16-m(i))+0.25.*n(i);
db(i)=0.03125.*(m(i)-b(i)-(11.95+c(i)))+0.0625.*k(i);
a(i)=a(i)+da(i);
b(i)=b(i)+db(i);
t=t+1;
end
disp(a)
plot(i,a);xlabel('i');ylabel('a');

我加了if a(i)<0;a(i)=0; end和if b(i)<0;b(i)=0; end
但是这是对所有的函数限制的,所以不行
请问一下有什么方法解决

3 回复
#2
abingchem2007-04-09 22:42
你加的语句中不要有分号!
#3
時人2007-04-09 23:04
去掉分号就可以了吗??
当我把程序中的t设置成2000以上的时候
结果数据都显示出NaN
这是为什么??
怎么解决呢??

[此贴子已经被作者于2007-4-9 23:05:29编辑过]

#4
hitzhang2007-04-12 18:05
[QUOTE]我想在下面的这个程序里限制一下,当a(i)和b(i)中有小于0的时候,设定a(i)和b(i)等于0[/QUOTE]不能用if




>> a=randn(1,10) a = 0.1746 -0.1867 0.7258 -0.5883 2.1832 -0.1364 0.1139 1.0668 0.0593 -0.0956 >> b=max(a,0) b = 0.1746 0 0.7258 0 2.1832 0 0.1139 1.0668 0.0593 0 >>
1