Matlab数据类型规范

景天

我在MATLAB中的数据类型有问题。这是将二进制转换为十进制的简单代码。对于我的进一步任务,这些应该是64位整数。我该怎么做?

此代码将这些值转换为double。而且,类型转换没有帮助;例如,对于第一个值,总和是4.0265e+09但铸造后通过Y = typecast(sum, 'int64');它产生4750734656922451968这是不正确的值。

example.png

在此处输入图片说明

I = imread('example.png');
level = graythresh(I);
img = im2bw(I,level);

sz=size(img);
for i=1:sz(1)
    sum=0;
    p=1;
    for j=sz(2):-1:1
        sum=sum+img(i,j)*p;
        p=p*2;
    end
    disp(sum);
end
伊卡瓦纳

您应该使用cast而不是typecast

>> s = 4.0265e+09;
>> cast(s, 'int64')
ans =
    4026500000

typecast转换数据而不更改基础byte值,而cast转换数据并尝试保持相同的值。typecast如您所见,它可以更改数据的值,因为它不会更改基础byte值。typecast只需更改typeMATLAB用于解释基础byte值的值即可。

或者,您可以简单地使用 int64

>> int64(s)
ans =
    4026500000

在尝试保持相同值的同时转换数据。


除了: sum是内置的MATLAB函数。不建议您调用变量,sum因为这样会覆盖内置的MATLAB函数。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章