matlab分段函数用switch编程(不要if语句的)

clear
a=input('input a')
b=input('input b')
c=input('input c')
x=0.5:0.01:5.5;
i=1:length(x);
t=fix(x(i)-0.5);
t=t(:)
switch(t)
case 0
y(i)=a*x(i)*x(i)+b*x(i)+c;
case 1
y(i)=a*sin(b)^c+x(i);
case 2
y(i)=a*sin(b)^c+x(i);
case 3
y(i)=log(abs(b+c/x(i)));
case 4
y(i)=log(abs(b+c/x(i)));
end

第1个回答  2012-12-02

clear

a=input('input a');

b=input('input b');

c=input('input c');

x=0.5:0.01:5.5; 

for i=1:length(x);%%用循环求对应的x(i)取整和对应的y(i)

t=fix(x(i)-0.5);

switch(t)       %%switch开关来选择y(i)表达式

    case 0 

        y(i)=a*x(i)*x(i)+b*x(i)+c;

    case 1

        y(i)=a*sin(b)^c+x(i);

    case 2

        y(i)=a*sin(b)^c+x(i);

    case 3

        y(i)=log(abs(b+c/x(i)));

    case 4 

        y(i)=log(abs(b+c/x(i)));

    case 5 

        y(i)=log(abs(b+c/x(i))); %由于t=5存在,这个开关要留着,我随便给的。

end

end

plot(x,y);

本回答被网友采纳
第2个回答  2012-11-27
不用if,也用不到switch请参阅下面代码:
clear
a=input('input a')
b=input('input b')
c=input('input c')
x=0.5:0.01:5.5;
i=1:length(x);
t=fix(x(i)-0.5);
t=t(:);
y=(a*x.*x+b*x+c).*(t==0)'+ ...
(a*sin(b)^c+x).*(t==1)'+ ...
(a*sin(b)^c+x).*(t==2)'+ ...
(log(abs(b+c./x))).*(t==3)'+ ...
(log(abs(b+c./x))).*(t==4)'本回答被网友采纳