因为当你i=0时,进入不了if ,elseif 循环,所以s没有定义,直接运行会出错。另外,if等控制条件里t整个阵列作为判断?不应该是t(i)吗?
但是你的i只有10个,不太懂你要画怎么用的分段函数,建议你把分段函数发上来给我看看。我改了一些,让这个程序能够跑通,但是划出来的图是不对,因为if控制条件不对
clear all;
close all
t=(0:0.001:2);
s=zeros(1,length(t));
for i=1:1:length(t) %10 Stück Bauteile
x=0.1*(2*rand-1); %x=Abweichung in X-Richtung
if ( t(i)>0.036*i+0 ) && ( t(i)<=0.036*i+sqrt((1+x)./180000))
s(i)=0.5*180000*(t(i)-0.036*i)*(t(i)-0.036*i);
elseif t(i)>0.036*i+sqrt((1+x)./180000) & t(i)<=0.036*i+2*sqrt((1+x)./180000)
s(i)=1+x-0.5*180000*(0.036*i+2*sqrt((1+x)./180000)-t(i)).^2;
elseif t(i)>0.036*i+2*sqrt((1+x)./180000) & t(i)<=0.036+0.036*i
s(i)=1+x;
end
end
figure(1);clf;hold on
plot(t,s);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear all;
close all
t=0:0.001:0.072;
nt=fix(t(end)/0.036);
for ii=1:1:nt
x=-0.1+0.2*rand(1,1);
for i=0.036/0.001*(ii-1)+1:1:0.036/0.001*ii %10 Stück Bauteile
% x=0.1*(2*rand-1); %x=Abweichung in X-Richtung
if ( t(i)>=0.036*(ii-1) ) && ( t(i)<( 0.036*(ii-1)+sqrt((1+x)./180000)))
if ii > 1
s(i)=0.5*180000*(t(i)-0.036*(ii-1))*(t(i)-0.036*(ii-1))+tmp_s(ii-1);
else
s(i)=0.5*180000*(t(i)-0.036*(ii-1))*(t(i)-0.036*(ii-1));
end
elseif t(i)>( 0.036*(ii-1)+sqrt((1+x)./180000)) && ( t(i) < (0.036*(ii-1)+2*sqrt((1+x)./180000 ) ))
if ii > 1
s(i)=1+x-0.5*180000*(2*sqrt((1+x)./180000)-( t(i)-0.036*(ii-1))).^2+tmp_s(ii-1);
else
s(i)=1+x-0.5*180000*(2*sqrt((1+x)./180000)-( t(i)-0.036*(ii-1))).^2;
end
elseif t(i)>( 0.036*(ii-1)+2*sqrt((1+x)./180000)) && t(i)<= 0.036+0.036*(ii-1)
if ii > 1
s(i)=1+x+tmp_s(ii-1);
else
s(i)=1+x;
end
end
end
tmp_s(ii)=s(end);
end
figure(1);clf;hold on
plot(t(1:end-1),s);
% ylim([0 6000])