Sizeof double float int etc

조회 수: 21(최근 30일)
R. Can 2021년 6월 30일
답변: Steven Lord 2021년 6월 30일
Hello there,
I need to know how to find an equivallent function in Matlab to the sizeof function in c++.
For example, in c++ if I write sizeof(double) I would get the amount of memory needed to store a double.
I need something very similar with a matrix now. I will be storing bigger and bigger matrix and I need to find their size in the memory.
all best,
:)
댓글 수: 1표시숨기기 없음
Yongjian Feng 2021년 6월 30일
Did you try
whos

댓글을 달려면 로그인하십시오.

채택된 답변

Jan 2021년 6월 30일
편집: Jan 2021년 6월 30일
Version 1:
w = whos('z');
nbytes = w.bytes;
Version 2:
function S = sizeof(X)
switch class(X)
case {'uint64', 'int64', 'double'}
m = 8;
case {'uint32', 'int32', 'single'}
m = 4;
case {'uint16', 'int16', 'char'}
m = 2;
case {'uint8', 'int8', 'logical'}
m = 1;
otherwise
error('Jan:sizeof:Type', 'Type not handles: %s', class(X));
end
S = m * numel(X);
end

댓글을 달려면 로그인하십시오.

추가 답변(2개)

Fangjun Jiang 2021년 6월 30일
Look at the .bytes returned by whos()
a=false(5);
aInfo=whos('a')
b=zeros(5);
bInfo=whos('b')
댓글 수: 0표시숨기기 이전 댓글 수: -1

댓글을 달려면 로그인하십시오.

Steven Lord 2021년 6월 30일
I need something very similar with a matrix now. I will be storing bigger and bigger matrix and I need to find their size in the memory.
Why? If you're trying to create an array to be filled in, just call a function like ones or zeros and tell it the size of the array you want to create (in terms of number of elements) and optionally the type. There's no need for you to know (or care) how much memory each element takes up in order to build the array.
A = ones(2, 3, 'int16')
A = 2×3
1 1 1 1 1 1
B = zeros(5) % 5-by-5 double array
B = 5×5
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

댓글을 달려면 로그인하십시오.

R2019a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by