Gre*_*ack 3 memory size matlab
那可能吗?假设我知道维度,我想确定变量将占用多少字节,以便在进行计算之前可以采用适当的过程.经典方式:
A = zeros(500, 500, 500);
whos A;
Run Code Online (Sandbox Code Playgroud)
您可能建议在whos命令后删除变量,但如果MATLAB几乎达到了最大内存容量,则可能无效.有一种优雅的方式来做到这一点?
对于标准数字类型的矩阵,您需要知道的是矩阵中元素的数量和数据类型中的字节数.对于您的示例,您的矩阵double默认为类型,即8字节,因此您的矩阵总大小将为:
matrixSize = [500 500 500];
byteSize = prod(matrixSize)*8;
Run Code Online (Sandbox Code Playgroud)
您可以使用whos以下方法从该类型的标量变量中找出给定数据类型的字节大小:
temp = uint8(0); % Sample uint8 variable
varData = whos('temp'); % Get variable data from whos
varBytes = varData.bytes; % Get number of bytes
varBytes =
1 % uint8 takes 1 byte
Run Code Online (Sandbox Code Playgroud)
正如Sam所提到的,像单元格数组和结构这样的容器类使计算总字节使用量变得有点复杂,因为它们需要一些内存开销.