matlab中f=double(f)

matlab中f=double(f)... matlab中f=double(f) 展开
 我来答
匿名用户
推荐于2018-04-12
展开全部
matlab默认的数据类型是double(64位) 。
double是双精度浮点数,保留16位有效数字 。
双精度到底是几位,与你的系统有关的,如果你的系统是32位的,那么一般双精度是64位,单精度就是32位,这个规律不是万能的,总之与你的系统有关。
自己试验的结果:opencv和matlab中double类型的数,都只有16位的准确位数。
遇到问题:
matlab往xml写入double型数组时,用
dataElement.appendChild(docNode.createTextNode(sprintf('%f',mat_input(i,j))));
出现的问题是,<data>0.000000 0.009261 0.176968 0.007195 0.000000 0.008346等。这样,原本是double类型的数组就被截成了小数点后六位的精确度。显然数据损失了。 解决方法:
dataElement.appendChild(docNode.createTextNode(sprintf('%1.15f',mat_input(i,j)))); 这样就解决了精度的问题了。
<data>0.000000000000449 0.009260753386601 0.176968253826983 0.007194591900531 0.000000000066297 遗留问题:
之一:0.000000000000449 在matlab中是4.491631742909341e-13
之二:'%1.15f'是保证了“小数点前1位,小数点后15位”的格式存储。问题是,如果不知道数据的16位小数点前后分配情况,怎么保证格式?
遇到问题: matlab中,
dtElement.appendChild(docNode.createTextNode(sprintf('%s','d'))); 一定要注意存储数据的格式 d:double f:float
这样才能保证在opencv读取xml时的精度保证。
望采,谢谢
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式