log2() only works with double types?

10 次查看(过去 30 天)
log2() seems to only work with 'double' types. It throws error when argument is int64.
num = 10000;
d = floor(num / 7);
a = log2(d);
disp(a);
10.4798
d = int64(num / 7);
b = log2(double(d));
disp(b);
10.4808
b = log2(d);
Check for incorrect argument data type or missing argument in call to function 'log2'.
disp(b);

采纳的回答

Simon Chan
Simon Chan 2021-10-24
Check MATLAB documentation and this fucntion log2 supports type single or double as the input argument type.
  3 个评论
Steven Lord
Steven Lord 2021-10-24
The output of the log2 function is the same type as the input. [This is a general pattern for many element-wise functions.] There are only a handful of int64 numbers whose base 2 log is representable as an int64 number. If it were defined for int64 we'd likely have a lot of people complaining about "bugs" in log2 when it was returning the correct answer just not the answer they expected.
log2Int64 = @(x) int64(log2(double(x)));
x = int64(10:20);
y = log2Int64(x)
y = 1×11
3 3 4 4 4 4 4 4 4 4 4
check = x - 2.^y % Is this what you would expect?
ans = 1×11
2 3 -4 -3 -2 -1 0 1 2 3 4
atharva aalok
atharva aalok 2021-10-24
That was great help Steven! Thanks a ton!

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Logical 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by