![]() |
我对矩阵的预分配在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视频。是否有可能实施? [B]回答:[/B] 避免错误的三种方法 [LIST=1][*]在任何给定时间处理有限数量的帧。[*]使用整数数组。大多数电影都是8位格式,而Matlab通常使用doubles格式。 uint8每个元素占用1个字节,而double占用8个字节。因此,如果您以B = zeros(height,width,3,nFrames,'uint8 )`创建数组,则仅使用内存的1/8。这可能适用于120帧,但是对于2000帧,您将再次遇到麻烦。注意,并不是所有的Matlab函数都适用于整数数组。您可能需要重新实现那些需要加倍处理的功能。[*]购买更多RAM。[/LIST] [url=https://stackoverflow.com/questions/3976014]更多&回答...[/url] |
所有时间均为北京时间。现在的时间是 23:16。 |
Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.