强制MATLAB使用`single` precision作为默认值?

时间:2016-12-02 12:53:10

标签: matlab

有没有办法强制MATLAB使用single精度作为默认精度?

我有一个MATLAB代码,我需要将其输出与C代码输出进行比较,而C代码只使用floats编写,不允许doubles

2 个答案:

答案 0 :(得分:3)

您可以使用A

将任何对象A=single(A);转换为单精度

The Mathworks forums表明了这一点 在你的情况下:system-specific('precision','8');应该这样做。在控制台中尝试此操作或在脚本顶部添加。

答案 1 :(得分:3)

简短的回答:你不能。

更长的答案:在大多数情况下,您可以通过将初始变量设置为单个来解决此问题。一旦完成,该类型将(几乎总是)传播到您的代码中。 (参见MathWorks上的thisthis主题)。

因此,例如,如果您执行以下操作:

>> 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%的方式。