作业帮 > 综合 > 作业

作了一个循环命令,如何用matlab画出曲线?

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/10 05:43:19
作了一个循环命令,如何用matlab画出曲线?
for x=5:20
y=P1.*x+P2+P3./x+P4./x^2+P5./x^3-2.*P6.*x.*(1-B2./x^3)^0.5
end
如何用matlab画出关于x、y的曲线,用plot(x、y)只画出了一个点
figure
hold on
for x=5:20
y=P1.*x+P2+P3./x+P4./x^2+P5./x^3-2.*P6.*x.*(1-B2./x^3)^0.5
plot(x,y)
end
hold off
上面程序既可以实现,matlab中的plot这个命令 是根据figure属性中的Nextplot来选择替换NextPlot = replace还是保留原来的点并增加新的点(NextPlot = add),默认情况下使用完一次plot后Nextplot都变成replace,如果想保留原来的点并增加新的点那么一开始就得将NextPlot始终设置成add,matlab考虑到会有这样的情况发生 所以设置了一个直接语句 hold on使得可以逐次使用plot.
在你画完点之后 记得 hold off 哦 这个看似可以不要的语句 有的时候 却十分必要 ,至于怎么使用图形句柄来控制figure的属性 那得需要你自己好好学习了.不太难
PS(多次调用plot以点绘线其实是不划算的 (在时间复杂度上) 尽可能用矩阵的形式来做你想做的事)
上述问题 其实是x是一个矩阵,那么通过矩阵的运算必定可以得到相应的矩阵y,然后直接用一次plot(x,y),即可以将整个曲线画出来.
当然如果你想做演示程序的话 那么 逐点描绘是必要的,并且你还得自己添加一个延迟函数 pause(t);%% t是数字 单位是s 表示延迟多少秒
再问: 非常感谢,不过我还想问一下,我画出的是点,能将这些点连成线吗?
再答: 能的 需要设置一个记录数据 因为不好表达 我就将上面程序改给你看看吧 自己回头好好揣摩揣摩 figure hold on x=5; y=P1.*x+P2+P3./x+P4./x^2+P5./x^3-2.*P6.*x.*(1-B2./x^3)^0.5 CurtPtx=x;CurtPty=y;%%当前点的坐标 for x=6:20 y=P1.*x+P2+P3./x+P4./x^2+P5./x^3-2.*P6.*x.*(1-B2./x^3)^0.5 NewPtx=x;NewPty=y;%%新点的坐标 plot([CurtPtx NewPtx],[CurtPty NewPty]); CurtPtx=NewPtx;CurtPty=NewPty;%%用新点的坐标代替当前点的坐标向前递推 end hold off