计算给定内存限制的矩阵的最大重复次数

时间:2016-07-18 23:55:53

标签: arrays matlab memory

使用repmat时,出现此错误:

Error using repmat
Requested 2192800x2400 (39.2GB) array exceeds maximum array size preference. Creation of arrays greater than this limit may take a
long time and cause MATLAB to become unresponsive. See array size limit or preference panel for more information.

我想要一个接受两个输入的函数:input_arraymax_mem,其中第一个是我要复制的数组,max_mem是GB中的一块内存。该函数应返回N_max,这是一个整数,可以最大化repmat(input_array, N_max, 1)的行数,同时将其限制在max_mem指定的内存限制范围内。

1 个答案:

答案 0 :(得分:1)

如果我理解正确

function N_max = foo (input_array, max_mem)

arrayInfo = whos('input_array');
arraySize = arrayInfo.bytes;

% max_mem in bytes, conversion if necessary
N_max     = floor(max_mem / arraySize);