查看单个帖子
旧 2019-12-10, 20:48   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 我对矩阵的预分配在MATLAB中给出了内存不足错误

我使用零来初始化矩阵,如下所示:

height = 352 width = 288 nFrames = 120 imgYuv=zeros([height,width,3,nFrames]); 但是,当我将nFrames的值设置为大于120时,MATLAB会给我一条错误消息,提示内存不足。

原始功能是

[imgYuv, S, A]= changeYuv(fileName, width, height, idxFrame, nFrames) 我的命令是

[imgYuv,S,A]=changeYuv('tilt.yuv',352,288,1:120,120); 谁能告诉我这是怎么回事?

PS:此功能的目的之一是加载包含2000帧以上的yuv视频。是否有可能实施?



回答:

避免错误的三种方法
  1. 在任何给定时间处理有限数量的帧。
  2. 使用整数数组。大多数电影都是8位格式,而Matlab通常使用doubles格式。 uint8每个元素占用1个字节,而double占用8个字节。因此,如果您以B = zeros(height,width,3,nFrames,'uint8 )`创建数组,则仅使用内存的1/8。这可能适用于120帧,但是对于2000帧,您将再次遇到麻烦。注意,并不是所有的Matlab函数都适用于整数数组。您可能需要重新实现那些需要加倍处理的功能。
  3. 购买更多RAM。

更多&回答...
poster 当前离线   回复时引用此帖