登录论坛

查看完整版本 : [求助]有关元胞数组所占内存的计算问题


小脉
2008-08-25, 13:18
我不知道在计算元胞数组的元素所占内存时该怎么计算,例如下面的示例:
>> A={zeros(2,2,2),'Hello';17.35,1:10}
A =
[2x2x2 double] 'Hello'
[ 17.3500] [1x10 double]
>> B=A(1,2)
B =
'Hello'
>> class(B)
ans =
cell
>> whos
Name Size Bytes Class
A 2x2 402 cell array
B 1x1 70 cell array
ans 1x4 8 char array
Grand total is 38 elements using 480 bytes

问题是:这个A的内存字节数402是怎么算出来的呢?知道的朋友帮忙详细解释一下吧,谢谢了!

小脉
2008-08-26, 09:13
有大侠知道吗?帮帮忙吧,我真郁闷这个问题了~~要是这个问题解决不了,后面还有好多是计算这个的,看到它解决不掉心里就有个疙瘩解不开!

yesman
2008-08-26, 10:07
64+...不好意思,我算了半天也没算清......

pslpsl
2008-08-26, 11:52
问这个干嘛 ?? 好像没什么用呀

下面是 A={zeros(2,2,2),'Hello';17.35,1:10}所占内存的计算

每个元胞单元消耗60字节的内存,共4*60=240B
每个double数据占8字节,故zeros(2,2,2)消耗2*2*2*8=64B
每个字符数据占2字节,'Hello'占5*2=10B
17.35(double)占8B
1:10(double*10)占80B

so,240+64+10+8+80=402

understand?

yesman
2008-08-26, 12:41
谢谢LS,呵呵

小脉
2008-08-26, 12:56
我understand了。谢谢4楼的pslpsl !!
我刚学习matlab,找了本基础的书在看,里面有很多whos,我都是边看书边验证的,就是到元胞数组这个地方觉得不知道怎么算内存占用了,“每个元胞单元消耗60字节的内存”在书里我还没查到呢~~不过按照这样算,前面的问题都能解决了!^_^心情舒畅很多啦!
感谢感谢!!