主题:如何用if语句代替循环
wnyh
[专家分:50] 发布于 2009-03-07 13:55:00
下面的语句是想说:
当t<500时,kr=0
>500 时,kr=kr=230*(t-500);
其中t的取值范围是:
t=273:50:1973;
kl=4.184*10^7./(30.6+0.21*t);
if(t<500)
kr=0;
k=kl*kr;
else
kr=230*(t-500);
k=kl+kr;
end
plot(t,k)
我的这个程序有些不对,但不晓得怎么改,我不想用for循环来实现他。谢谢你的指点哈
回复列表 (共5个回复)
沙发
Guassfans [专家分:4090] 发布于 2009-03-07 19:28:00
t=273:50:1973;
kr=zeros(1,length(t));
k=zeros(1,length(t));
kl=4.184*10^7./(30.6+0.21*t);
index=find(t<500);
kr(index)=0;
k(index)=kl(index).*kr(index);
index=find(t>=500);
kr(index)=230.*(t(index)-500);
k(index)=kl(index)+kr(index);
plot(t,k)
板凳
wnyh [专家分:50] 发布于 2009-03-07 21:45:00
谢谢你哈,尽管我觉得还是有点麻烦,呵呵
3 楼
楚天一笑 [专家分:0] 发布于 2009-03-12 00:47:00
根据楼主的意思,当t<0时,k应该是等于0对吧?
4 楼
楚天一笑 [专家分:0] 发布于 2009-03-12 11:04:00
不知我下面的程序能否给你点启发,有的话你再改进改进。
t=273:50:1973;
m=(t>=500);
y=t(m);
a=length(t),b=length(y);
kl=4.184*10^7./(30.6+0.21*t);
kr=[zeros(1,a-b),230*(y-500)];
k=[zeros(1,a-b),kl((a-b+1):a)+kr((a-b+1):a)];
plot(t,k)
5 楼
wolkey [专家分:30] 发布于 2009-03-29 22:25:00
学习学习,这方法挺妙
我来回复