[已解决] 求教一个matlab的内存分配原理

[复制链接]
wzx_seu 发表于 2022-6-23 11:12:04
1.我之前用其他语言的时候,因为对变量分配的内存空间是有限的,针对类似运算1/3*3都是无法完美恢复成1的,一般根据事先定义的位宽结果为0.9999....9。
2.matlab确可以神奇地恢复,求教matlab的内存分配机制。
3.如果matlab真的可以保留全部精度,那么建立算法模型的时候,就可以获得理论上的完美无精度损失模型,这感觉是不可思议的。
  1. >> 1/3
  2. ans =
  3.    0.333333333333333
  4. >> ans*3
  5. ans =
  6.      1
复制代码


最佳答案


maple1314168 发表于 2022-6-23 15:11:05
本帖最后由 maple1314168 于 2022-6-23 15:15 编辑
wzx_seu 发表于 2022-6-23 14:15
我以前也是这么想的,但是边界在哪里呢,或者说它是怎么判定修正方向的 ...

你问matlab公司吧?本身matlab可能也是针对一些函数使用修正。
你知道的意义何在?浮点数可能会出现错误。
但是你不能准确判断某一例子是否有误差,误差是多少。这是《数值计算》的内容。
若果需要准确,用符号工具箱。
若果需要精确,购买使用第三方高精度的工具箱(只是减少,并没有消除)。
PS:最后附上如果想知道两个浮点是否一模一样。
format hex
显示他们的16进制。

7 条回复


TouAkira 发表于 2022-6-23 11:31:37
你这描述,需要的不是去了解内存分配机制,而是调用符号计算工具箱。
MATLAB的符号计算只能说可以满足一部分应用,有时候还是用mathematica等计算更方便。另外maple也有符号计算,我没用过,你也可以去了解一下。

wzx_seu 发表于 2022-6-23 11:43:58
TouAkira 发表于 2022-6-23 11:31
你这描述,需要的不是去了解内存分配机制,而是调用符号计算工具箱。
MATLAB的符号计算只能说可以满足一部 ...

我其实并不是说需要建立完全无损失的模型,因为工程应用都是需要定点模型的。只是想深入理解下matlab的底层原理。这个困扰了我好久:)

maple1314168 发表于 2022-6-23 11:48:53
wzx_seu 发表于 2022-6-23 11:43
我其实并不是说需要建立完全无损失的模型,因为工程应用都是需要定点模型的。只是想深入理解下matlab的底 ...

1、matlab对于简单的计算,因为导致的误差可能非常少致使结果正确、稍微复杂就出现误差:

1/3*3-1
ans = 0

(4/3-1)*3-1
ans =-2.220446049250313e-16

2、简单的计算,可能matlab内部修正过。类似linspace函数。



wzx_seu 发表于 2022-6-23 14:15:29
maple1314168 发表于 2022-6-23 11:48
1、matlab对于简单的计算,因为导致的误差可能非常少致使结果正确、稍微复杂就出现误差:

1/3*3-1

我以前也是这么想的,但是边界在哪里呢,或者说它是怎么判定修正方向的

maple1314168 发表于 2022-6-23 15:11:05
本帖最后由 maple1314168 于 2022-6-23 15:15 编辑
wzx_seu 发表于 2022-6-23 14:15
我以前也是这么想的,但是边界在哪里呢,或者说它是怎么判定修正方向的 ...

你问matlab公司吧?本身matlab可能也是针对一些函数使用修正。
你知道的意义何在?浮点数可能会出现错误。
但是你不能准确判断某一例子是否有误差,误差是多少。这是《数值计算》的内容。
若果需要准确,用符号工具箱。
若果需要精确,购买使用第三方高精度的工具箱(只是减少,并没有消除)。
PS:最后附上如果想知道两个浮点是否一模一样。
format hex
显示他们的16进制。
回复此楼

wzx_seu 发表于 2022-6-23 16:06:31
maple1314168 发表于 2022-6-23 15:11
你问matlab公司吧?本身matlab可能也是针对一些函数使用修正。
你知道的意义何在?浮点数可能会出现错误。 ...

对于大多数用户来说,这点误差是微不足道的。不过对于一些基础定点算法模型设计的人来说,可能会产生一些困惑(有些数很准确,有些数存在截断误差),尤其是对于早期使用c或者常用verilog的人,工程交付的验证往往需要每个节点逐bit比对完全一致。

maple1314168 发表于 2022-6-23 16:19:20
本帖最后由 maple1314168 于 2022-6-23 17:33 编辑
wzx_seu 发表于 2022-6-23 16:06
对于大多数用户来说,这点误差是微不足道的。不过对于一些基础定点算法模型设计的人来说,可能会产生一些 ...
看看:Fixed-Point Designer工具箱
你了解的那么深入,我就不发言了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
相关文章
热门教程
站长推荐
快速回复 返回顶部 返回列表