回 帖 发 新 帖 刷新版面

主题:如何用if语句代替循环

下面的语句是想说:
当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个回复)

沙发

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)

板凳

谢谢你哈,尽管我觉得还是有点麻烦,呵呵

3 楼

根据楼主的意思,当t<0时,k应该是等于0对吧?

4 楼

不知我下面的程序能否给你点启发,有的话你再改进改进。
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 楼


学习学习,这方法挺妙

我来回复

您尚未登录,请登录后再回复。点此登录或注册