有没有办法强制MATLAB使用single
精度作为默认精度?
我有一个MATLAB代码,我需要将其输出与C代码输出进行比较,而C代码只使用floats
编写,不允许doubles
。
答案 0 :(得分:3)
您可以使用A
A=single(A);
转换为单精度
The Mathworks forums表明了这一点
在你的情况下:system-specific('precision','8');
应该这样做。在控制台中尝试此操作或在脚本顶部添加。
答案 1 :(得分:3)
简短的回答:你不能。
更长的答案:在大多数情况下,您可以通过将初始变量设置为单个来解决此问题。一旦完成,该类型将(几乎总是)传播到您的代码中。 (参见MathWorks上的this和this主题)。
因此,例如,如果您执行以下操作:
>> x = single(magic(4));
>> y = double(6);
>> x * y
ans =
4×4 single matrix
96 12 18 78
30 66 60 48
54 42 36 72
24 84 90 6
MATLAB以较低的精度保持答案。我偶尔会遇到内置和来自FileExchange的函数,它们将输出重新设置为double,因此您需要在偶然的assert
语句中使用,以便在初始调试期间保持诚实(或更好)然而把断言作为你编写的任何子函数的第一行来检查关键输入),但是这应该让你99%的方式。