你好,我是使用Matlab 7.10.0 (R2010a)。我需要使用int64 mod函数数据类型。但它没有锅。你能帮我吗?

2视图(30天)
国防部(ans (1), 48) ? ? ?未定义的函数或方法“国防部”“int64”类型的输入参数
答(1)是数组的第一个元素ans int64类型。

答案(1)

Guillaume
Guillaume 2015年4月17日
编辑:Guillaume 2015年4月17日
matlab的较新版本 国防部 实现 int64 ,也许是时候升级。
如果做不到这一点,唯一的方法是java推迟手术 BigInteger :
一个= intmax (“int64”);%为例
%先导入bigInteger转换使用静态方法的返回对象的值int64先导入bigInteger:(长)
bi = javaMethod (返回对象的值的,“java.math.BigInteger”,)
先导入BigInteger。%模操作需要另一个
m = bi.mod (javaMethod (返回对象的值的,“java.math.BigInteger”48));
%不幸matlab将长值返回“longValue”方法成双
%以下可能导致丧失精度
结果= int64 (m.longValue)
%,保证没有精度损失,渡过字节数组表达的:
巴尔= m.toByteArray;
[~,~,字节顺序]=计算机;%注意toByteArray大端字节总是返回字节
如果字节顺序= =“L”%如果机器是小端字节序
巴尔= flipud (barr);%翻转的字节
结束
如果元素个数(barr) < 8% toByteArray只返回必要尽可能多的字节
巴尔(8 - 1)= 0;%因此扩大int64所需的8
结束
结果=定型(int8 (barr),“int64”)
按照上面的评论中,最简单的方法得到一个int64(长)价值先导入BigInteger是通过的 longValue 方法。不幸的是,matlab将长,它返回转换成双,造成的精度损失大整数。解决方法是让字节表示和铸型的字节数组int64。
编辑: 其实如果你在Windows上,一个更简单的方法是通过. net, Math.DivRem 方法:
System.Math.DivRem (intmax (“int64”),48)

标签

没有标签了。

下载188bet金宝搏

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!