问题如何知道MATLAB中变量的大小解决了如何判断内存中变量的大小.但有没有办法根据数字类告诉大小?我正在寻找的是一个内置函数,它实现了一个简单的映射表:
double - > 8single - > 4int32 - > 4byte - > 1...等等.有没有计算这个的功能,还是我需要自己实现一个小表?
请注意,whos是不是我要找的.虽然whos显示了现有对象的内存使用情况,但我想估计我还没有的数据的内存使用情况.
在numpy,我可以使用以下itemsize属性实现此目的dtype:
In [6]: dt = dtype([("A", float32, (5,))])
In [7]: M = empty(5, dtype=dt)
In [8]: M.dtype.itemsize
Out[8]: 20
Run Code Online (Sandbox Code Playgroud)
不确定为什么你不想使用whos,因为这正是你实现这样一个功能的方式:
function numBytes = sizeOf(dataClass)
% create temporary variable of data type specified
eval(['var = ' dataClass '(0);']);
% Use the functional form of whos, and get the number of bytes
W = whos('var');
numBytes = W.bytes;
end
Run Code Online (Sandbox Code Playgroud)
使用如下:
>> a = 4;
>> sizeOf(class(a))
ans =
8
Run Code Online (Sandbox Code Playgroud)
或者,根据您在评论中描述数据的方式,
>> your_data_cell = {
uint32(5) int8(4)
single(5) char(4)
};
>> cellfun(@(x) sizeOf(class(x)), your_data_cell)
ans =
4 1
4 2
Run Code Online (Sandbox Code Playgroud)
我认为sizeOf()优于直接映射到内部数据类型,因为它可以在用户定义的数据类型上工作,可以通过将'0'传递给构造函数来构造.
| 归档时间: |
|
| 查看次数: |
1471 次 |
| 最近记录: |