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

cleara=input('inputa')b=input('inputb')c=input('inputc')x=0.5:0.01:5.5;i=1:length(x);... 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
展开
 我来答
幽兰书生823
2012-12-02 · TA获得超过1048个赞
知道小有建树答主
回答量:301
采纳率:100%
帮助的人:258万
展开全部

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);

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
superroy521
2012-11-27 · TA获得超过440个赞
知道小有建树答主
回答量:336
采纳率:100%
帮助的人:168万
展开全部
不用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)'
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式