发布网友 发布时间:2022-04-27 08:09
共2个回答
热心网友 时间:2022-06-28 22:18
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
热心网友 时间:2022-06-28 22:19
x = 5:1: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)
x是向量(多个点)就行了追问但是我用了这个命令,画不出曲线呀。我的结果中y值已经求出了所有的值。应当是与x一一对应的。
为什么只能画出最后一个点呢?