MatlabR2015B中getframe的奇怪行为

MatlabR2015B中getframe的奇怪行为,matlab,opengl,Matlab,Opengl,我遇到了getframe函数的一个非常奇怪的行为。我基本上是在for循环中创建一个新帧 figure(10) image(xvekt*1e6,yvekt*1e6,I2/max(max(I2))*64) hold on plot(D_core/2*cos(linspace(0,2*pi,50))*1e6,D_core/2*sin(linspace(0,2*pi,50))*1e6,'Color',[1 1 1]*0.6,'LineWidth',2) colormap(jet) hold off zo

我遇到了getframe函数的一个非常奇怪的行为。我基本上是在for循环中创建一个新帧

figure(10)
image(xvekt*1e6,yvekt*1e6,I2/max(max(I2))*64)
hold on
plot(D_core/2*cos(linspace(0,2*pi,50))*1e6,D_core/2*sin(linspace(0,2*pi,50))*1e6,'Color',[1 1 1]*0.6,'LineWidth',2)
colormap(jet)
hold off
zoom(5)
drawnow
pause(.1)
F(steg_nummer) = getframe;
代码的具体功能并不十分重要,但请注意getframe调用之前的暂停(0.1),以确保getframe真正捕获帧。steg_nummer是迭代变量

在for循环之后,我尝试通过

v = VideoWriter('C:\newfile.avi');
open(v);
for k=1:length(F)
 k
 writeVideo(v,F(k))
end
close(v)
但这失败了。如上所述,出于调试目的,我正在显示k,看起来cdata有时是一个0x0矩阵,这很奇怪

for循环

for k=1:length(F)
  disp(size(F(k).cdata))
end
返回

>   344   436     3

>   344   436     3

>   344   436     3

>   344   436     3

>   344   436     3

>   344   436     3

>   344   436     3

>   344   436     3

>   344   436     3

>   344   436     3

>   344   436     3

>   344   436     3

>   344   436     3

>   344   436     3

>   344   436     3

>   344   436     3

>   344   436     3

>   344   436     3

>   344   436     3

>   344   436     3

>   344   436     3

>   344   436     3

>   344   436     3

>   344   436     3

>   344   436     3

>   344   436     3

>   344   436     3

>   344   436     3

>   344   436     3

>   344   436     3

>   344   436     3

>   344   436     3

>   344   436     3

>   344   436     3

>   344   436     3

>   344   436     3

>   344   436     3

>   344   436     3

>   344   436     3

>   344   436     3

>   344   436     3

>   344   436     3

>   344   436     3

>   344   436     3

>   344   436     3

>   344   436     3

>   344   436     3

>   344   436     3

>   344   436     3

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

>     0     0

>     0     0

>     0     0

>     0     0

>   344   436     3

当然,writeVideo在第一个0x0 cdata矩阵中失败。在脚本开始时,我曾尝试通过OpenGL(“软件”)切换到软件OpenGL,但没有任何运气。这里发生了什么?

一种可能性是,在到
getframe
的循环中,由于系统或用户活动等原因,焦点可能会更改到其他一些窗口。如果是这种情况,可以通过指定图形或轴的句柄作为
getframe
的输入来避免问题:

hFig = figure(10); % return handle of the figure
...  % other code
F(steg_nummer) = getframe(hFig); % provide handle as input

请将您的帖子进行适当的格式化。将
下的所有内容都作为代码块,否则会用无用的数据阻塞网页。另外,你能做一个,我们可以复制的东西,而不需要你的帮助吗data@AnderBiguri但是,我没有可以使用的扰流板标记。通过
绘图
指令,轴的
xlim
ylim
zlim
数据在每次调用时都由matlab重新计算,并且可以根据实际数据范围进行更改。如果您想要一个fized大小的框架,您必须手动设置这些限制。看看我对一个非常相似的问题的回答:@Hoki这似乎是问题之一,是的!真正的问题是我没有画出所有的画面,但这也造成了一个问题。如果您将此评论作为官方答案添加,我将予以批准。谢谢,但这并不能解决问题。奇怪的是,我失去的总是同一个画面。