Matlab 如何在不创建变量的情况下确定内存中变量的大小?

Matlab 如何在不创建变量的情况下确定内存中变量的大小?,matlab,memory,size,Matlab,Memory,Size,可能吗?假设我想确定一个变量在已知维度的情况下将占用多少字节,以便在进行计算之前采取适当的步骤。经典方式: A = zeros(500, 500, 500); whos A; 您可能建议只在whos命令之后删除变量,但是如果MATLAB几乎达到最大内存容量,这可能不起作用。有一种优雅的方法可以做到这一点吗?对于标准矩阵,您只需要知道矩阵中的元素数和数据类型中的字节数。例如,默认情况下,矩阵的类型为double,即8字节,因此矩阵的总大小为: matrixSize = [500 500 500]

可能吗?假设我想确定一个变量在已知维度的情况下将占用多少字节,以便在进行计算之前采取适当的步骤。经典方式:

A = zeros(500, 500, 500);
whos A;
您可能建议只在
whos
命令之后删除变量,但是如果MATLAB几乎达到最大内存容量,这可能不起作用。有一种优雅的方法可以做到这一点吗?

对于标准矩阵,您只需要知道矩阵中的元素数和数据类型中的字节数。例如,默认情况下,矩阵的类型为
double
,即8字节,因此矩阵的总大小为:

matrixSize = [500 500 500];
byteSize = prod(matrixSize)*8;
您可以使用以下公式从给定数据类型的标量变量中计算出该类型的字节大小:


,容器类喜欢并使计算总字节使用量变得更复杂,因为它们需要一些内存开销。

此外:单元格数组占用的内存是单元格内容的内存加上每个单元格112字节的开销,结构占用的内存是字段内容的内存加上每个字段224字节的开销。谢谢你们!这是一个很好的方法。
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