注册 登录
编程论坛 Matlab

急问:请大家帮我看看这个程序哪里错了

Tianbian1127 发布于 2008-12-15 21:27, 1117 次点击
目的是要求t=x-40,t=x-60后的函数值N后,并对两次求得的N求和,可是程序运行的结果是求了两次t=x-40时的N值后的和,没有计算t=x-60后的函数值N,那这个程序错在哪里了?该如何修改呢?高人指点一下吧,感激不尽
x=1:0.1:100;
m=2;
N=length(x);
y(1)=40;y(2)=60;
sum=0;
x=1:0.1:100;
for k=1:m
  t=x-y(k);
   for i=1:N
       if t(i)>=0 & t(i)<1;
            N1(i)=1/2*(t(i)).^2;
        elseif t(i)>=1 & t(i)<2
            N2(i)=3/4-(t(i)-3/2).^2;
        elseif t(i)>=2 & t(i)<=3
            N3(i)=1/2*(3-t(i)).^2;
        else            
            N4(i)=0;
       end
    end
  N=N1+N2+N3+N4;
  sum=sum+N;
end
4 回复
#2
tbad2008-12-16 15:26
没太看懂你的意图.N1,N2,N3,N4最好先初始化,如N1=zeros(N,1);倒数第三步有问题,那样相加的话,就会改变N的值,而N是用来判断循环用的.
#3
Tianbian11272008-12-16 16:25
谢谢你啊,N1,N2,N3,N4前面初始化了,没写上来,我是想用N来表示整个分段函数的值
1