MATLAB制作3D表面图的电影时出错

时间:2017-04-24 17:00:35

标签: matlab matlab-figure

对于一个项目,我用matlab数值求解偏微分方程。这是我第一次使用Matlab。为了以图形方式显示结果,我打算制作一部随时间推移的情节电影。对于二维图表一切顺利:使用getframe制作图并保存电影。但是,当我将案例扩展为3维图时,使用surf代替plot。 Matlab给出了以下错误:

' cdata' FRAME的字段不能为空

表面图本身实际上是作为输出而制作的。但是,保存电影时会发生此错误。因此我怀疑问题与getframe有关,但到目前为止我还没有找到解决这个问题的方法。有谁知道我做错了什么?

以下是绘图代码的一部分

for i=1:length(T)
U = E*U+(1/d)*B*(E-I)*(d*b+sfunc(U));
Sol = ones(Ny,Nx);
for i=1:(Ny-1)
    Sol(i,1:(Nx-1)) = U(((Nx-1)*(i-1)+1):((Nx-1)*i));
end
surf(X,Y,Sol);
axis([0,1,0,1,0,3]);
caxis([1,2]);
view([15 45]);
M(i+1)=getframe;
end

fps = (1/10)*length(M);
v = VideoWriter('testfilm2dim.avi');
v.FrameRate = fps;
open(v)
writeVideo(v, M);
close(v)

同样,这些图是正确的,因此包含其余代码可能没有附加价值。

0 个答案:

没有答案