【发布时间】:2013-10-25 16:03:14
【问题描述】:
在 MATLAB 中乘以整数值矩阵的最佳方法是什么?
得知以下行为不被接受,我感到很惊讶:
>> x = int64([1, 2])
>> x * x'
Error using *
MTIMES is not fully supported for integer classes. At least one input must be scalar.
To compute elementwise TIMES, use TIMES (.*) instead.
我总是可以转换成双倍然后再转换回来。这是最好的解决方案吗?我正在使用 R2013b。
【问题讨论】:
-
当我发现这一点时,我也很惊讶(也很生气)。很遗憾你不能在 Matlab 中正确地乘以整数
-
integer overflow 存在较小的整数类型的危险,这通常只是处理整数的一部分。但是,MATLAB 有时喜欢牵你的手。我怀疑他们想在让
mtimes处理uint8之前实施某种警告或溢出检测。 -
有趣点@chappjc。我猜IEEE浮点自然已经给出了这个保证。看起来 numpy,Python 的等价物,在这个问题上默默地犯了错误。
-
@MRocklin:在这种情况下,numpy 是否允许 MATLAB 不允许的内容? “默默地犯错”是什么意思?
标签: matlab matrix matrix-multiplication