Matlab:使用avifile、addframe、getframe;生成的avi被扭曲

Matlab:使用avifile、addframe、getframe;生成的avi被扭曲,matlab,video,screen-capture,avi,Matlab,Video,Screen Capture,Avi,我正在训练一种机器学习算法,并想制作一个avi来可视化权重随时间的变化。我拼凑了一些类似的东西: aviobj = avifile( 'weights.avi' ); for jj = 1:whatever % do some training imagesc( ... ); % where '...' is stuff to reshape the weight matrix aviobj = addframe( aviobj, getframe ); end; aviobj =

我正在训练一种机器学习算法,并想制作一个avi来可视化权重随时间的变化。我拼凑了一些类似的东西:

aviobj = avifile( 'weights.avi' );
for jj = 1:whatever
  % do some training
  imagesc( ... ); % where '...' is stuff to reshape the weight matrix
  aviobj = addframe( aviobj, getframe );
end;
aviobj = close( aviobj );
implay( 'weights.avi' );
问题是,帧最终看起来是这样的:

数字不应该有那个方向。这发生在我在matlab中生成的任何avi中

有什么建议吗


-布莱恩终于有时间回到这件事上来了。问题出在轴上。当使用像
image
imagesc
这样的东西时,它会在图像的底部和左侧附加一条黑色边框线。当您使用
getframe
时,它只获取打印的图像数据,不包括黑线。但是,帧本身略大于图像数据

以下方法可以解决此问题:

aviobj = avifile( 'weights.avi' );
fig = figure;
for jj = 1:whatever
  % do some training
  imagesc( ... ); % where '...' is stuff to reshape the weight matrix
  axis off;
  aviobj = addframe( aviobj, getframe( fig ) );
end;
aviobj = close( aviobj );
implay( 'weights.avi' );

将轴设置为关闭状态将修复此问题。

如何生成帧?看起来每一行都被行索引循环移位了。我正在用
imagesc
生成帧。该参数只是一个(重塑的)权重矩阵。然而,你的评论给了我一个想法。我在这里发布的这张照片是为了给人一种无可争议的混乱感,而有些人可能认为体重可视化是正常的。权重也有类似的倾斜,但有一条从右上到左下的黑线。我打赌这会给输出帧增加一列额外的像素。