关于matlab分段函数问题

2025-02-19 06:45:38
推荐回答(2个)
回答1:

%此题不是很难,用for和if即可搞定!
x=0:0.01:176; %此题我选[0,176]
y1=zeros(size(x));
y2=zeros(size(x));
y3=zeros(size(x));
y4=zeros(size(x));
N=length(x);
for k=1:N
if x(k)<=10&x(k)>0;
y1(k)=0.4*(1-cos(9*x(k)));
elseif x(k)>10&x(k)<=83
y2(k)=10.8-13.41021*((83-x(k))/73)^2+5.524581*((83-x(k))/73)^13-2.923670*((83-x(k))/73)^22+0.409303*((83-x(k))/73)^36;
elseif x(k)>83&x(k)<=162
y3(k)=10.8-15.59689*((x(k)-83)/79)^2+14.06900*((x(k)-83)/79)^10-10.46753*((x(k)-83)/79)^14+1.595414*((x(k)-83)/79)^21;
elseif x(k)>162&x(k)<=176
y4(k)=0.4*(1-cos(6.428572*(x(k)-176)));
end
end
y=y1+y2+y3+y4;
plot(x,y) ;
此题我编译过,可行!希望能解决你的问题!注意在matlab中只有括号,没有中括号和大括号的!

回答2:

x=0:0.01:10;
y1=zeros(size(x));
y2=zeros(size(x));
y3=zeros(size(x));
y4=zeros(size(x));
N=length(x);
for k=1:N
if x(k)<=10&x(k)>=0;
y1(k)=0.4(1-cos9x(k));
elseif x(k)>10&x(k)<=83 ;
y2(k)= y1(k)=10.8-13.41021*[(83-x(k)/73]^2+5.524581*[(83-x(k)/73]^13-2.923670*[(83-x(k)/73]^22+0.409303*[(83-x(k)/73]^36;
elseif x(k)>83&x(k)<=162;
y3(k)=10.8-15.59689*[(x(k)-83)/79]^2+14.06900*[(x(k)-83)/79]^10-10.46753*[(x(k)-83)/79]^14+1.595414*[(x(k)-83)/79]^21;
elseif x(k)>162&x(k)<=176;
y4(k)=0.4{1-cos[6.428572(x(k)-176)]};
end
end
y=y1+y2+y3+y4;
plot(x,y) ;