Matlab2015返回一个空图

19次(过去30天)
乔治·莫博尔
乔治·莫博尔 2016年4月20日
评论: 麦克·加里蒂 2016年4月25日
使用MATLAB的2015年版本的这些特定的代码,除非我博尔登和改变绘图的颜色绘制时,我不断收到emplty图表图形。然而,代码运行,并在较低的版本MATLAB,2011和2012的曲线图具体而不必博尔登和改变图形的颜色。这些代码。dt=1/1000;t=0:dt:6;g=9.81;H = 2;u=0;对于t = 0:峰dt:6;v=u+(g*dt); dh=0.5*(u+v)*dt; h1 = h-dh; h = h1; u=v; plot (t,h); hold on; end

0条评论

登入发表评论。

接受的答案

麦克·加里蒂
麦克·加里蒂 2016年4月20日
这段代码创建了6001个线对象,每个对象都有一个顶点。只有一个顶点的线对象是一个退化的情况,不能保证画出任何东西。不同版本的MATLAB中的不同渲染器对这种情况的处理方式不同,因此这从来不是一种非常可靠的绘制方法。
一种方法是告诉plot你画的是点而不是线。这就像将调用改为plot一样简单:
图(T,H,'.')
但是创建6001个对象,每个对象只画一个点并不是一个非常有效的方法,为此我在 这篇文章发表在MATLAB图形博客上 . 你只要打一个电话就好了。在你的情况下,它会像这样。
dt=1/1000;
t=0:dt:6;
g=9.81;
上一个h=2;
u=0;
t=0:dt:6;
h=零(尺寸(t));
对于i=1:纽梅尔(t)
v=u+(g*dt);
dh=0.5*(u+v)*dt;
h1=前h-dh;
h(i)=h1;
前h=h(i);
u=v;
结束
图(T,H,'.')
这种方法的另一个好处是,你可以借鉴连接点,而不是单独的点线。根据您目前的方法,你不能这样做,因为绘图命令无法“看到”超过一次一个单一数据值。通过将所有的数据值到情节在一起的,它可以连接它们。

2条评论

乔治·莫博尔
乔治·莫博尔 2016年4月25日
感谢您的答复。不过,我想修改此代码产生我打算转换为影片文件格式的.avi的动画。我跑代码这种方式,但没有得到所需的输出。dt=1/1000;g=9.81;u=0;t = 0时:DT:7;h=零(尺寸(t));对于i = 1:numel(T)V = U +(G * DT);dh=0.5*(u+v)*dt; h1 = H-dh;
如果h1<0;
h1=0;
v=-u*CR;
其他的
u=v;
结束
h(i)=h1;
H=H(i);
u=v;
结束
对于n=1:10;
图(T,H,“滚”)
平等的;
轴([0,10,0,10]);
M(n)=获取帧(gcf);
结束
电影2avi(M,'我的文件','压缩','无')
麦克·加里蒂
麦克·加里蒂 2016年4月25日
在这种情况下,您需要先创建一个空图,然后在循环中追加到它的扩展数据&YData。像这样的:
dt=1/1000;
g=9.81;
H = 2;
u=0;
hobj=绘图(nan,nan);
XLIM([0 6])
叶利姆([-180 20])
对于t=0:dt:6
v=u+(g*dt);
dh=0.5*(u+v)*dt;
h1=h-dh;
H = H1;
u=v;
霍布.XData(结束+1)=t;
伊达塔(结束+1)=h;
刷新屏幕限制器
结束
但是有一个图形对象叫做 动画线条 (在R2014b中引入)正是为这项工作而设计的:
dt=1/1000;
g=9.81;
H = 2;
u=0;
hobj=动画线;
XLIM([0 6])
叶利姆([-180 20])
对于t=0:dt:6
v=u+(g*dt);
dh=0.5*(u+v)*dt;
h1=h-dh;
H = H1;
u=v;
地址(hobj,t,h)
刷新屏幕限制器
结束
在这个问题上 文件的这一部分 .

登入发表评论。

更多答案(0)

登入来回答这个问题。

标签