草庐IT

精度评定

全部标签

c++ - 节拍器精度算法数学

简而言之:我有一个每秒调用44,100次的方法。我想知道在我需要在第13781.25次方法调用时发出声音的情况下该怎么做-那是每分钟192次)。我可以选择舍入该数字并在第13781次方法调用时发出声音滴答声,这意味着我在0.25处发出声音滴答声太早了。这相当于早了0.00000566893424秒。在100个ticks之后,我确信延迟肯定会增加。是否有任何聪明的解决方法可以跟踪延迟,当延迟超过某个点时,也许±一些数字可以让节拍再次回到正轨?到目前为止,这是我的代码......intcounter;//usedtotrackdowntheamountoftimesthemethodhas

c++ - 如何在当前时间的打印输出中获得更高的精度(几分之一秒)?

我已经尝试了几种方法来从system_clock打印出时间,但除了整秒之外我什么也得不到:system_clock::time_pointnow=system_clock::now();std::time_tnow_c=system_clock::to_time_t(now);std::coutnow()函数实际上保存的是高精度数据,还是我只是找不到提取该信息进行打印的函数?注意:我不打算计算时间间隔。我想要几分之一秒的当前时间,并通过cout将其打印出来。我只是找不到办法做到这一点。我知道std::chrono::high_resolution_clock但也看不到打印出它的now(

提高多旋翼无人机的悬停控制精度

要提高多旋翼无人机的悬停控制精度,可以从以下几个方面进行优化:优化传感器配置:选用高精度的传感器,如激光雷达、红外传感器等,可以提供更准确的姿态和位置信息。同时,对传感器进行定期标定和校准,确保其准确性。改进控制算法:采用更为先进的控制算法,如鲁棒控制、自适应控制等,可以提高无人机的抗干扰能力和响应速度,从而提升悬停精度。提高通信稳定性:优化无人机与地面控制站之间的通信协议,提高数据传输的稳定性和实时性,可以降低因通信延迟导致的控制误差。强化学习与智能控制:通过机器学习技术,让无人机不断在实践中学习如何优化自身的悬停性能,实现智能化控制。动力学建模与优化:对多旋翼无人机的动力学模型进行更深入的

c++ - 以亚像素精度检测激光线的中心

我正在使用C++和OpenCV开发一个简单的“激光线”扫描仪。到目前为止我可以检测到激光线的中心,精度为1个像素,因此我有一个可能的“子像素”函数/算法的起点。(激光线大约15-20像素宽)现在我有兴趣将其改进为亚像素精度。我知道OpenCV有一些亚像素检测功能,但据我所知这些仅用于检测角落。如果有人有任何建议,我很想听听。一些信息;系统:QTFramework、C++、OpenCV库相机;单色(没有颜色),配备红色滤镜图像分辨率;2560x1920注意:激光线只会分析1张图像。 最佳答案 有两种基本方法我用过,效果不错:简单:在一

c++ - 在 boost :multiprecision 中定义多精度 pi

我在boost::multiprecision中需要任意(但固定)精度的pi(3.1415...)。boost::math::constants中的常量最多只能定义固定位数,如thisanswer中指出的那样,所以我需要自己计算。因为我经常使用这个数字并且有很多数字,所以我想在运行时只计算一次。拥有它的简单而快速的方法是什么?我想用typedefnumber>mpfloat;//PRECISIONiscompiletime.constintPI=atan(mpfloat(1))*4;但我不确定这是不是它的常见习语。 最佳答案 在c+

c++ - 由于在 32 位的 G++ 4.4.7 20120313 中使用 C++ std::vector 中的内联函数导致精度发生变化

我正在centos5.932位(在64位机器上运行)上编译,目标是32位。g++版本为4.4.7,这不是centos5.9上默认提供的版本,但可以使用yum下载并作为发行版的一部分提供。我有一个非常简单的循环如下std::vectorresult(n);std::vectorvalues(n);//hereIcomputevalues().TheyarecorrectandIextensivelynoted//thatthere'snothingwrongthere.Theproblemishereresult[0]=0.0;for(inti=0;i在此代码的更复杂版本中(它显示了完全

c++ - 当我使用带有整数的 C++ 数学函数时,我应该担心精度吗?

例如,由于float的精度,下面的代码会产生不希望的结果。doublea=1/3.0;intb=a*3;//bwillbe0here我想知道如果我使用数学函数是否会出现类似的问题。例如inta=sqrt(4);//DoIhaveguaranteethatIwillalwaysget2here?intb=log2(8);//DoIhaveguaranteethatIwillalwaysget3here?如果不是,如何解决这个问题?编辑:其实我在为一个算法任务编程的时候遇到过这个问题。在那里我想得到thelargestintegerwhichispowerof2andislessthano

c++ - 使用 fstream 设置精度以输出文件 - double 格式

对于如何使用已打开的fstream将格式化的double输出到文本文件,我找不到答案。目前我的代码是这样做的:intwriteToFile(fstream&f,product_record&p){if(!f){cout其中p是名为product_record的结构,price、tax、sANDh和total都是doubles我试过f但这不起作用。我如何将此double格式设置为小数点后两位的精度。像这样"#.00".我如何使用专门的fstream来实现这一目标?此外,仅供引用,总体任务是简单地读取一个txt文件,将数据存储在一个结构中,将结构添加到一个vector中,然后从结构中读取以

c++ - long double sqrt() 的精度

我注意到sqrt()的longdouble版本的准确性存在问题。以下代码演示了该问题。#include#include#includeintmain(intargc,char**argv){intcount=0;longdoubles=sqrt(3L);std::cout.precision(21);std::cout编译运行>g++-osqrtsqrt.cpp&&./sqrt给予s=1.73205080756887719318,s^2=2.99999999999999965241.732050807568877193292.999999999999999652841.73205080

c++ - 如何判断 double float 是否可以安全地存储为单精度 float ?

这个问题在这里已经有了答案:关闭9年前。PossibleDuplicate:Realnumbers-howtodeterminewhetherfloatordoubleisrequired?我正在尝试检查从double到float的转换是否会导致精度损失。显然,我可以进行转换并将float转换回double并将其与原始值进行比较。我很好奇是否有更直接的方法。