2011-02-02 69 views
6

我有变量是double类型我想他们是float。有没有办法强制一个变量为float而不是双倍,此外,有没有办法以一些全局的方式来做所有功能和子功能,在主功能的开始几行?我有很多函数,它们使用很多临时变量并创建它们返回的变量。完成我所有的功能并改变它们将非常困难。在MATLAB中强制变量类型

我的理性此请求:

我为了模拟算法,我会再在硬件实现编写的MATLAB程序,我要确保使用32位作为我的信号的大小不会造成计算错误。

+2

嗯......“类型铸造”在Matlab中是可能的。请参阅http://www.mathworks.com/help/techdoc/ref/typecast.html。我不确定是否在全球范围内应用它,但是这种声音可能有助于http://www.mathworks.com/help/techdoc/matlab_oop/br2vkky.html。另外http://www.mathworks.com/help/techdoc/matlab_oop/brglmxp.html – 2011-02-02 11:13:34

回答

6

按照@cbz的建议使用B=single(A),或将数组定义为SINGLE,例如通过调用B=zeros(3,3,'single')在Matlab中创建“浮点数”。

无法将Matlab全局转换为“浮动”环境。尽管大多数底层函数也实现了single(除少数例外,例如在帮助DOUBLE中提到的那些函数),但许多高级内置函数仅适用于double

换句话说,您必须手动定义您的变量为single,您必须定期检查变量是否已悄悄转换为double,最后,如果您的代码不能正常工作它需要一个功能,但尚未实现single

4

与'float'等价的MATLAB是'single。你可以使用转换

B = single(A). 

这就是说,你认为这相当于32位可能需要重新审视。这并不简单。