2016-07-18 12 views
0

Während repmat verwenden, erhalten ich diesen Fehler:Berechnen maximale Anzahl von Wiederholungen einer Matrix für eine gegebene Speichergrenze

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. 

I eine Funktion wie würde, die zwei Eingänge akzeptiert: input_array und max_mem, wobei der erste ist, Das Array, das ich replizieren möchte, und max_mem ist eine Menge an Speicher in GB. Die Funktion sollte N_max zurückgeben, eine Ganzzahl, die die Anzahl der Zeilen von repmat(input_array, N_max, 1) maximiert, während sie sich auf das von max_mem angegebene Speicherlimit beschränkt.

Antwort

1

Wenn ich das richtig verstanden

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); 
Verwandte Themen