Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Memory 我对矩阵的预分配在MATLAB中给出了内存不足错误_Memory_Matlab - Fatal编程技术网

Memory 我对矩阵的预分配在MATLAB中给出了内存不足错误

Memory 我对矩阵的预分配在MATLAB中给出了内存不足错误,memory,matlab,Memory,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]=change

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

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视频。有没有可能实施这一点

是的,您或者更确切地说,您的Matlab会话内存不足


拿出你的计算器,找到产品的高度x宽度x 3 x n帧x 8,这将告诉你在调用0时,你试图获得多少内存。这将是一个接近或超过计算机上Matlab可用RAM的数字。

是的,您的Matlab会话内存不足

拿出你的计算器,找到产品的高度x宽度x 3 x n帧x 8,这将告诉你在调用0时,你试图获得多少内存。这将是一个接近或超过计算机上Matlab可用RAM的数字。

函数B=0[d1 d2 d3…]创建一个具有尺寸d1*d2*d3*…的多维数组。。。 根据宽度和高度,如果第3维为3,第4维为120,则有效地生成了宽度*高度*360,可能会生成一个非常大的数组。每台机器上都有一定的内存限制,也许你达到了这些

函数B=zeros[d1 d2 d3…]创建一个维度为d1*d2*d3*…的多维数组。。。 根据宽度和高度,如果第3维为3,第4维为120,则有效地生成了宽度*高度*360,可能会生成一个非常大的数组。每台机器上都有一定的内存限制,也许你达到了这些

您的命令是:

[imgYuv,S,A]=changeYuv('tilt.yuv',352,288,1:120,120);
即:

352*288*120*120 = 1459814400
也就是1.4*10^9。如果一个对象有4个字节,则需要6GB。这是一个很大的内存…

您的命令是:

[imgYuv,S,A]=changeYuv('tilt.yuv',352,288,1:120,120);
即:

352*288*120*120 = 1459814400

也就是1.4*10^9。如果一个对象有4个字节,则需要6GB。这是一个很大的内存…

引用我在你撤回的帖子中看到的代码,计算相邻帧直方图之间的差异。避免大规模内存分配的一个选择可能是只在内存中保存两个帧,而不是一次读取所有帧

参考我在你撤回的帖子中看到的代码,计算相邻帧直方图之间的差异。避免大规模内存分配的一个选择可能是只在内存中保存两个帧,而不是一次读取所有帧

有三种方法可以避免错误

处理有限数量的 在任何给定的时间帧。 工作 使用整数数组。大多数电影都是 8位格式,而Matlab 通常与双打配合使用。 uint8每个元素占用1字节, 而double需要8个字节。因此 如果将数组创建为B= 零高,宽,3,n帧,'uint8`, 它只使用1/8的内存。 这可能适用于120帧, 但对于2000帧,您将运行 再次陷入困境。注意,不是 所有Matlab函数都适用于 整数数组;你可能不得不 重新实施那些需要 双重的 买更多的公羊。
有三种方法可以避免错误

处理有限数量的 在任何给定的时间帧。 工作 使用整数数组。大多数电影都是 8位格式,而Matlab 通常与双打配合使用。 uint8每个元素占用1字节, 而double需要8个字节。因此 如果将数组创建为B= 零高,宽,3,n帧,'uint8`, 它只使用1/8的内存。 这可能适用于120帧, 但对于2000帧,您将运行 再次陷入困境。注意,不是 所有Matlab函数都适用于 整数数组;你可能不得不 重新实施那些需要 双重的 买更多的公羊。
高度和宽度的值是多少?嗨,eumiro。我在刚才的问题中添加了这些值。宽度=352,高度=288。高度和宽度的值是多少?你好。我在刚才的问题中添加了这些值。宽度=352,高度=288。好的,我明白了。但是有没有其他方法来加载文件?这个文件由2000多帧组成…有可能吗?嗯,有意义。让我试试。谢谢你!好的,我明白了。但是有没有其他方法来加载文件?这个文件由2000多帧组成…有可能吗?嗯,有意义。让我试试。谢谢你!好的,我明白了。但是有没有其他方法来加载文件?该文件由2000多帧组成…有没有可能?是否需要将整个文件以一组方式加载?解决方案可以是流式传输文件,一次只加载文件的较小部分,并在加载和处理下一个数据块时丢弃数据,例如,显示数据块或其他不需要的数据块。是的,你说得对。我应该试着每次装一小部分。谢谢你,弗林希!好的,我明白了。但是有没有其他方法来加载文件?该文件由2000多帧组成…任何可能的
ty?是否有必要将完整的文件一堆一堆地加载?解决方案可以是流式传输文件,一次只加载文件的较小部分,并在加载和处理下一个数据块时丢弃数据,例如,显示数据块或其他不需要的数据块。是的,你说得对。我应该试着每次装一小部分。谢谢你,弗林希!好的,我明白了。但是有没有其他方法来加载文件?这个文件由2000多帧组成…有可能吗?好的,我明白了。但是有没有其他方法来加载文件?该文件由2000多帧组成…有可能吗?是的,泽卢斯。这正是我想要做的。谢谢你的建议。我会试试的,是的,泽卢斯。这正是我想要做的。谢谢你的建议。我试试看。