MATLAB - 整数与小数赋值奇怪的错误

标签 matlab variable-assignment

newT = [b(i) d(i) a(i) z(i)];
newT, b(i), a(i)

打印

新T=

     123         364         123         902

答=

 1.234e+02

答=

 1.234e+02

这里有什么问题吗?为什么 newT 中的第一个和第三个条目四舍五入为整数值?为什么它们没有正确分配?

最佳答案

与大多数其他编程语言不同,Matlab 中的整数类型优先于浮点类型。当您通过串联或算术组合它们时,浮点值会隐式缩小为整数,而不是将整数扩大为浮点。

>> int32(3) + 0.4
ans =
           3
>> [int32(3)  0.4]
ans =
           3           0

这是出于历史原因,因为(IIRC)Matlab 最初根本不支持整数,因此 Matlab 中的所有数字常量都会产生 double 值,并且创建了提升规则,以便可以将整数类型与浮点常量。

要解决此问题,请在连接之前将这些 int 类型显式转换为 double 。

newT = [b(i) double(d(i)) a(i) double(z(i))];

关于MATLAB - 整数与小数赋值奇怪的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9574025/

相关文章:

matlab - 图像中的邻域半径

python - 数组运算等价Python和Matlab

java - matlab java类路径问题

matlab - 在 MATLAB 中什么时候通过引用赋值?

ruby - 为什么带赋值的三元运算符不返回预期的输出?

python - 对数据 : ValueError and a dimension mismatch? 使用 Scipy 的 signal.welch 命令

matlab - 根据matlab中的一列对整个矩阵进行排序

python - 使用负索引调整大小列出切片分配

使用 elif 的 Python 赋值和函数测试

javascript - 在同一语句中声明依赖的 javascript 变量是否安全?