请教高手matlab程序有什么问题

forx=0:1/10000:1.037;ifx<=0.321;y1=0;y2=18680*x.^2;elseif0.321<x&&x<=0.5;y1=7748.3787... for x=0:1/10000:1.037;
if x<=0.321;
y1=0;
y2=18680*x.^2;
else if 0.321<x && x<=0.5;
y1=7748.3787878804037959911770145058*x-685.1130034828012147069381932417-39054.092938262777960624195721650*x.^4+58843.381520178245750847142977912*x.^3-32353.868458882699128814436387114*x.^2;
y2=1924.8-23145.125983108015250690089800020*x.^4-1842.9520616256456692238628023802+19804.155307322093441798636950595*x.^3+13913.382016939457782648063242968*x.^2;
else
y1=15.15;;
y2=4589.1+17195.*x-6524.3750000000000000000000000000-8292.5000000000000000000000000000*x.^2;
end
plotyy(x,y1,x,y2)
hold on
end
展开
 我来答
yjw413
2013-09-26 · TA获得超过285个赞
知道小有建树答主
回答量:135
采纳率:100%
帮助的人:125万
展开全部

你在计算过程中遇到什么样的问题了呢?!

我试了一下,主要由以下问题:

1)lzmatlab语法有点小问题,如果使用if-else-end结构则缺少一个end标识;如果使用if-elseif-else-end,则需要将else if中间空格去掉,写成elseif,现在一般高版本的matlab都会提示错误;

2)y1=15.15;;多写了一个分号;

其实这段程序完全不需要这么写,这里不评论编程水平问题。这段程序经过上面两点修改后运行没有问题,为了减少运算量,我使用x=0:1/100:1.037;同时没有使用plotyy,而使用plot(x,y1,'r.',x,y2,'b-'),本质上对结果没有影响。结果如下:

追问

我需要用的是plotyy,如果用plot我的也能运行出来,关键要的是双纵坐标,运行出来是下面的图,可是明显的是错的,而且运行时间需要很久,不知道是什么原因?

追答

我认为之所以出现错误应该是使用for循环每次计算y1和y2的值后分别作图,而图的参数是自动设置的,导致坐标发生多次重叠。作图显得毫无规律。


我简单将你的程序改成下面这种,直接计算全部y1,y2,然后绘图~就没有问题了!下面程序可以优化使用向量化的方式计算更简洁~


clear

x=0:1/1000:1.037;

m=size(x,2);

y1=1:1:m;

y2=1:1:m;

for n=1:1:m

    if x(n)<=0.321

        y1(n)=0;

        y2(n)=18680*x(n).^2;

    elseif 0.321<x(n) && x(n)<=0.5;

        y1(n)=7748.3787878804037959911770145058*x(n)-685.1130034828012147069381932417-...

            39054.092938262777960624195721650*x(n).^4+58843.381520178245750847142977912*x(n).^3-32353.868458882699128814436387114*x(n).^2;

        y2(n)=1924.8-23145.125983108015250690089800020*x(n).^4-1842.9520616256456692238628023802+19804.155307322093441798636950595*x(n).^3+...

            13913.382016939457782648063242968*x(n).^2;

    else

        y1(n)=15.15;

        y2(n)=4589.1+17195*x(n)-6524.3750000000000000000000000000-8292.5000000000000000000000000000*x(n).^2;

    end

end

plotyy(x,y1,x,y2)

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式