【问题标题】:Memory optimisation内存优化
【发布时间】:2013-04-23 08:42:03
【问题描述】:

我只是想知道是否可以通过使用某些选项来减少 Matlab 的内存使用量。 单击工作区中的变量会显示一个长数字,在大多数情况下可能不需要。例如,

[20, 25.0540913632159, 16.2750000000000, 3.08852992798468];

对我来说25.054091 可能还不错。是否有任何选项可以让 Matlab 减少内部计算的数量并且它有什么不同。

【问题讨论】:

  • 也许这个可以部分回答你的问题; mathworks.com/matlabcentral/answers/47142(别忘了问问自己这个“内存优化”是否真的值得)
  • 如今,大多数 PC 中都有如此多的 RAM,以至于您不必担心到处浪费一些位。如果您继续沿着这条路线继续前进,您很快就会发现,这确实是一种值得拥有的奢侈品,因为不得不照顾可能是一种真正的痛苦。

标签: matlab memory-optimization


【解决方案1】:

现代 PC 使用 浮点数 来计算非整数值。

它们有两种标准化变体:floatdouble,其中后者的大小是前者的两倍。

Matlab,默认情况下使用(复数)doubles 进行所有计算。

您可以通过指定类型来强制它使用float(或Matlab 称之为single):

a = single([20, 25.0540913632159, 16.2750000000000, 3.08852992798468]);

这应该使用一半的内存,并且您会丢失一些在您的应用程序中可能很重要也可能不重要的精度。在执行此操作之前确保优化是值得的,因为执行速度可能会更慢(由于内置函数仅在 double 上运行,因此需要额外的两次转换)。

【讨论】:

  • 由于Matlab将float称为single,因此转换应该是a = single([ numbers here ]);