我正在训练机器学习算法,并希望制作一个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都会出现这种情况。
有什么建议吗?
-Brian
答案 0 :(得分:3)
终于有时间回到这里了。问题是由于轴。当使用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' );
设置axis off
修复了它。