有没有办法强制 MATLAB 使用single精度作为默认精度?
我有一个 MATLAB 代码,我需要将其输出与 C 代码输出进行比较,而 C 代码是专门使用 编写的floats,doubles不允许。
简短的回答:你不能。
\n\n更长的答案:在大多数情况下,您可以通过将初始变量设置为 single 来解决此问题。一旦完成,该类型将(几乎总是)通过您的代码向下传播。(参见这个和这个MathWorks 上的
\n\n因此,举例来说,如果您执行以下操作:
\n\n>> x = single(magic(4));\n>> y = double(6);\n>> x * y\n\nans =\n\n 4\xc3\x974 single matrix\n\n 96 12 18 78\n 30 66 60 48\n 54 42 36 72\n 24 84 90 6\nRun Code Online (Sandbox Code Playgroud)\n\nMATLAB 将答案保持在较低的精度。我偶尔会遇到内置函数和来自 FileExchange 的函数,它们会将输出重新转换为双精度型,因此您需要偶尔添加一些assert初始调试期间保持诚实(或者最好将断言设置为您编写的用于检查关键输入的任何子函数的第一行),但这应该可以让您完成 99% 的工作。