自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(1449)
  • 问答 (2)
  • 收藏
  • 关注

转载 密码学的核心:随机性

随机数的核心是数的随机性。随机性是信息安全领域,尤其是密码学领域一个很关键的研究问题。在密码学中,对一个序列的随机性是这样定义的:“看起来是随机的,即能通过我们所能找到的所有正确的随机性检验。

2024-05-22 17:34:07 1

转载 C++随机数 rand Vs mt19937

众所周知,程序无法模拟出真正的随机数,所以我们所说的随机数都是相对随机的伪随机数。rand 是一种常用的随机数,C++ 初学者一般接触的都是他,但是他有缺点,随机性不高,周期短,质量低。Mt19937 用法与 rand 一样但是他随机性高,周期长,质量高。先放上进行实验对比的两个代码:我们通过多次随机数(0 到 100 的范围内随机)。rand 随机数sum += tmp;mt19937 随机数sum += tmp;我们对两个代码进行了 107 次随机数。

2024-05-22 15:02:15 1

转载 漫谈随机:如何均匀生成随机数

每次生成随机数都需要消耗“熵池”中的熵,速度较慢,且当墒池中的墒耗尽时可能发生阻塞,所以不适合用于快速生成伪随机数序列,而适合用于作为伪随机数生成器的种子。比如,随机生成数字 0 的情况有 22 种可能;,具体实现与平台有关。在 Linux 上,比较简单的实现是可以从。(Mersenne Twister)算法的伪随机数生成器,可以。用于均匀地生成某个范围内的随机整数。但是很可惜,这样子做是不对的。,修正了古典随机数发生算法的很多缺陷。总的来说,无论是性能还是随机数的质量,用于生成某个范围内的随机浮点数。

2024-05-22 15:00:45 1

转载 STL库rebind原理详解

我最近发现国内中文网站上对于的一些魔法基本未做任何介绍,基本上都是不知所云的一概而过。因此接下来详细分析一些比较复杂的STL代码,本篇文章分析rebind,所有代码均摘自。

2024-05-21 17:46:17 3

转载 operator++(int) 与 operator ++ 两者区别详解

可以发现对iterator来说,iterator++或者iterator–都有一次构造函数,且实际调用的是++iterator和–iterator来处理,效率低下,上面测试程序的写法参考了标准库的程序,下面代码来自stl源码 stl_list.h 中iterator相关的运算符重载。所以我们使用迭代器来说,尽量使用++iterator和–iterator操作。

2024-05-21 14:08:29 1

转载 operator++()实现:前置++和后置++

【代码】operator++()实现:前置++和后置++

2024-05-21 14:07:19 1

转载 【C++】 运算符重载

概念:对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型。

2024-05-21 14:06:24 1

转载 operator++()和operator++(int)的区别

这个函数必须建立一个临时对象以做为它的返回值,(参见条款19),上述实现代码建立了一个显示的临时对象(oldValue),这个临时对象必须被构造并在最后被结构。由此得出一个令人惊讶的结论,如果仅为了提高代码效率,UPInt的调用者应该尽量使用前缀increment,少用后缀increment,除非确实需要使用后缀increment。然而有一个句法上的问题,重载函数间的区别决定于它们的参数类型上的差异,但是不论是increment或decrement的前缀还是后缀都只有一个参数。

2024-05-21 14:05:04

转载 关于GNU GPL

这里简单介绍关于自由软件的一个重要协议:GNU GPL。具体信息需要参照官方网站(

2024-05-20 12:52:48 2

转载 正交信号的理解

我们知道,通常的变频相当于将载频下移,早期的调幅接收机将下移到较低的中频,其目的是方便选择信号和放大,然后通过幅度检波(调幅信号的载波只有幅度受调制)得到所需的低频信号,现代通信信号有各种调制方式,为便于处理,需要将频带内的信号的谱结构原封不动的下移到零中频(统称为基带信号)。当然,傅利叶变换是适用于所有复数信号的。任何信号包括雷达信号实际上都是实信号,复信号是为了分析复解析信号而提出的,也为引入I,Q双通道的概念,因为在雷达系统中,信号的产生通常采用正交调制的方式产生,这可以获得一般调制的2倍带宽。

2024-05-18 13:07:23 10

转载 文件系统的概念模型

io使用率平时在用这个工具的时候,第一眼看的其实是这个百分号util这个值,这个指使用率的大小 ,100%也不能说明整个系统的使用率完全处于饱和的状态,因为现在的磁盘io的话,一般都是多通道了,一个通道100%,多通道100好几百才能够到达它的一个使用率的瓶颈,所以如果io有使用率,只能说明你的磁盘是一直在使用的过程当中,是频繁的在进行这种磁盘的操作。有了整个文件系统的概念模型之后,我们再来分析io的性能问题,如何去衡量整个系统的io性能,我们先从整体上看,再看具体的进程。

2024-05-17 18:03:40 2

转载 【C++】C++ 单例模式总结(5种单例实现方法)

单例模式是指在整个系统生命周期内,保证一个类只能产生一个实例,确保该类的唯一性。

2024-05-17 13:43:49 7

转载 C++11中静态局部变量初始化的线程安全性

大家都知道,在C++11标准中,要求局部静态变量初始化具有线程安全class Foopublic:private:Foo() {}在C++标准中,是这样描述的(在标准草案的6.7节中):看到了GCC如此复杂的实现,我的个人感想是还是不要自己造轮子来保证单例类的线程安全了,想要做到和GCC一样的高效还是比较难的,利用C++11标准的带来的便利就挺好。C++11中静态局部变量初始化的线程安全性-CSDN博客。

2024-05-17 13:42:35 4

转载 在类的定义中实例化自己???

答:因为在Test类加载到JVM上,声明属于当前包下,所以编译时,属性虽然有Test类的实例化对象,但是Test类可以找到,所以不会报错。

2024-05-17 10:52:00 6

转载 Hash 哈希表和算法思路详解

哈希表是一种可以满足快速查找数据结构,时间复杂度接近O(1)。哈希函数是无限集到有限集的映射。处理数据量大,查找效率要求高时推荐使用hash容器。hash不一定优于数组查找,尤其在n比较小的情况下,可能hash算法的代价更高问题:什么情况下考虑使用哈希容器?常用的哈希思路有哪些?评判哈希算法标准有哪些?哈希冲突是如何产生的?如何解决?如何构造一个hash算法?应注意哪些问题?

2024-05-13 17:26:07 4

转载 hash算法比较

常用的算法有BKDRHash,APHash,DJBHash,JSHash,RSHash,SDBMHash,PJWHash,ELFHash等。

2024-05-13 17:21:47 5

转载 常见的hash算法介绍

SHA-3(Secure Hash Algorithm 3):SHA-3 是最新的哈希算法标准,它提供了多个变体,包括 SHA-3-224、SHA-3-256、SHA-3-384 和 SHA-3-512。SHA-256(Secure Hash Algorithm 256-bit):SHA-256 是 SHA-2 系列中的一种哈希算法,生成的哈希值长度为 256 位(32 字节),具有更高的安全性。然而,SHA-1 也被证明存在安全性问题,因此在对数据的完整性和安全性要求较高的场景中,不再推荐使用。

2024-05-13 17:19:52 25

转载 什么是 POD 数据类型?

很久很久以前,C 语言统一了江湖。几乎所有的系统底层都是用 C 写的,当时定义的基本数据类型有 int、char、float 等整数类型、浮点类型、枚举、void、指针、数组、结构等等。然后只要碰到一串 01010110010 之类的数据,编译器都可以正确的把它解析出来。那么到了 C++ 诞生之后,出现了继承、派生这样新的概念,于是就诞生了一些新的数据结构。比如某个派生类,C 语言中哪有派生的概念啊,遇到这种数据编译器就不认识了。

2024-05-11 18:04:20 7

转载 I2C电平转换电路_双向电平转换电路工作原理

这个需要特别注意,因为一旦没注意选用了,可能就是有的板子功能OK,有的板子NG。,即SDA2/SCL2为低电平0V时,因为MOS管体二极管的存在,体二极管导通,MOS管的S极被拉低,Vgs接近3.3V,MOS管导通,进一步导致左边和右边电平一样,为0V。,即SDA1/SCL1为高电平3.3V,MOS管的Vgs=0,不导通,右边因为上拉电阻的存在,SDA2/SCL2电平保持为5V。,即SDA1/SCL1为低电平0V,Vgs=3.3V,MOS管导通,右边电压就跟左边电平一样了,SDA2/SCL2为低电平0V。

2024-05-06 23:42:04 73

转载 I2C走线技巧、及上拉电阻、电源电压、总线电容三者间的函数关系

Rpmax是负载电容的函数,总线电容越大,即负载越大,Rpmax越低。但在一些特定的情况下,比如折叠、滑盖机型中,I2C的两根信号线需要通过转轴或滑轨处的FPC,此时由于信号路径比较长,距离天线比较近,而且Open drain的输出级对地阻抗大,对干扰比较敏感,因此比较容易受到RF信号源的干扰。否则,上拉电阻上会有耗电。2,总线电容是线路连接和管脚的总电容,规定总线输入电流的最大值是10uA,同时规定了上升时间tr的最大值,由于高电平要求0.2VDD的噪声容限,这个输入电流限制了Rp 的最大值。

2024-05-06 18:19:33 144

转载 陀螺仪那点事

首先从问题说起,因为我最近在和陀螺仪厂商讨论陀螺仪对我们真正使用的影响。所以我先从陀螺仪的指标说起,基本知识会放在后面。首先介绍一下零偏的的概念。

2024-05-06 16:04:41 25

转载 MEMS惯性器件选型笔记

有很多困惑。有没有哪个大神赐教一下?对比的IMU:icm42688P, MPU6050,adis16465icm42688的全温度零偏误差。

2024-05-06 14:01:11 21

转载 MPU6050误差分析

大致的思路是将模块的姿态用四元素表示,作为系统的状态量,模块的姿态运动学方程作为滤波的状态转移方程,加速度信息作为滤波的观察量信息,然后利用卡尔曼滤波的计算方法迭代计算更新,详细的过程可以参考惯性导航方面的书籍。因为三轴是有耦合的,只有在三轴角度为小角度的时候可以这么算,角度大了以后,比如60度了,这么算的误差就很大。N(a,ω,T,t)表示加速度,角速度,温度和时间等总的因素造成的影响(G 的依赖性(加速度影响),对于mems陀螺仪来说,有可能受到重力的影响,可以通过建模并采用一定的方法去除这个影响)

2024-05-06 13:55:43 76

转载 全局路径规划之--Dijkstra算法

例如,(s,v)的距离可能大于(s,k)+(k,v)的距离。U包含除s外的其他顶点,且U中顶点的距离为”起点s到该顶点的距离”[例如,U中顶点v的距离为(s,v)的长度,然后s和v不相邻,则v的距离为∞]此时,S={D(0)}, U={A(∞),B(∞),C(3),E(4),F(∞),G(∞)}。此时,S={D(0),C(3),E(4)}, U={A(∞),B(23),F(6),G(12)}。此时,S={D(0),C(3)}, U={A(∞),B(23),E(4),F(9),G(∞)}。

2024-05-06 13:37:33 26

转载 \033[0;30m 之超级终端的字体背景和颜色显示等

033 声明了转义序列的开始,然后是 [ 开始定义颜色。然后是背景颜色,这里面是40,表示黑色背景。接着是前景颜色,这里面是32,表示绿色。我们用 \033[0m 关闭转义序列, \033[0m 是终端默认颜色。其中41的位置代表字的背景色, 30的位置是代表字的颜色,0 是字的一些特殊属性,0代表默认关闭,一些其他属性如闪烁、下划线等。下面的语句就输出高亮的黑色背景的绿色字。ESC的ASCII码是十进制的27,八进制的033(\033)。注意,字体背景和字的颜色一样时,会看不见字了。

2024-05-06 13:08:33 31

转载 一阶互补滤波

同样的,我们也可以根据自己的需要,确定一个时间常数,进而获得合适的滤波系数,为了获取更加准确的值需要对系数进行一定的调整。角速度数据,加速度积分得到角度,但是由于传感器误差,积分作用会造成累计误差,所以角速度数据在短期是可以使用的,长期来看误差会很大是不可使用的。即,高频信号与低频信号都与我们将求得的量相关,我们将其进行滤波运算,给两部分一个权重得到一个相对准确的值,或者得到一个很好的近似的过程。加速度数据,不是很准确,但是趋势是对的,通过受力分能够显示角度变化趋势,在长期变化来看是可以利用的。

2024-05-05 22:53:17 14

转载 关于MPU6050姿态解算的一阶互补滤波方法(从原理到代码实现)

可以利用官方的dmp来解算姿态,但是代码移植是个问题,我用的是恩智浦的RT1064,手头只有MSP430和STM32的dmp库,在采用卡尔曼滤波算法发现收敛太慢的情况下,我决定采用经典的一阶互补滤波算法和简单的自适应一阶互补滤波算法来试试看,也从数学原理到代码彻底的把一阶互补滤波原理捋一遍。假设我们需要测定一个物理量,这个物理量可以通过两个传感器测得,而且其中一个传感器的测量噪声主要集中在高频段,另一个传感器的噪声主要集中在低频段,那么我们可以构造出两个滤波器,其中一个是低通滤波器,另一个是高通滤波器。

2024-05-05 22:51:57 78

转载 MPU6050使用一阶互补和卡尔曼滤波算法平滑角度数据

最近项目上想用MPU6050来自动探测物体的转向角度,花了2天时间学习如何拿陀螺仪的姿态角度,发现蛮难的,写点笔记。下面是哔哩哔哩的一堆废话讲解,只想看代码本体的可以直接跳到最后。应用场景是51单片机环境,有一块MPU6060,需要知道硬件板子水平摆放时,板子摆放的姿态和旋转的角度。编译环境只能用C语言。首先单片机通过TTL串口接到MPU6050上拿到通信数据,水平旋转角度需要另外加地磁仪通过南北极磁性拿到。很遗憾设计硬件时没注意这茬,只用了一块MPU6050。

2024-05-05 22:50:10 120

转载 MPU6050滤波、姿态融合(一阶互补、卡尔曼

在进行零偏数据的计算时,需要将200个原始数据相加,但是一开始我的总和定义的还是一个int型的数据,这时200个数据的和可能已经超过了int型数据的取值范围,所以产生了溢出。另外,当我们程序中总变量的字节数超过128字节时,必须对程序中所有变量进行初始化,否则没有被初始化的变量默认值不在是0,而是不确定的随机数。不管怎么修改量程,输出的波形震动范围总是在+-20000波动,但是当我把加速度计的量程设置为+-16G的时候,理论上其LSB应该为2048左右,但是发现输出的波形也是震动范围很大。

2024-05-05 21:27:10 65

转载 如何处理电子陀螺仪MPU6050的零点漂移问题

首先是数据采集,我让小车保持不动,也就是yaw一直为0的状态下,测试传感器实际输出的yaw的漂移情况.我利用串口对mpu6050的yaw角进行了采集.100ms一次,采集了6000个数据样本,耗时是10分钟.然后利用matlibplot对数据进行了图形化.图形的x轴就是时间T,y轴就是传感器输出的角度值direct,也就是航片角yaw.经过10分钟的运行,可以发现,我所使用的传感器的零漂其实是比较严重的.在温度稳定在30°C左右的条件下,就已经达到2°左右.这是非常糟糕的.

2024-05-05 21:25:57 256 2

转载 滤波算法总结

newangle:角速度计得到的角度值。* angleout:上次角度输出值。* newgyro:陀螺仪的角速度值。* tau:反应惯性滤波的系数。* dt:两次采样时间间隔。* 互补滤波计算得到的角度值。

2024-05-05 21:25:08 33

转载 MPU6050+一阶互补滤波

加速度计要滤掉高频信号,陀螺仪要滤掉低频信号,互补滤波器就是根据传感器特性不同,通过不同的滤波器(高通或低通,互补的),然后再相加得到整个频带的信号,例如,加速度计测倾角,其动态响应较慢,在高频时信号不可用,所以可通过低通抑制高频;用的都是16位的ADC,所以显示的数字是从-32768——+32768,要看自己选择的量程进行换算,量程选择在配置里面找,比如选择-250——+250量程,那么-32768——+32768就对应-250——+250 进行换算就可以了。就是,短时间内用陀螺仪比较准确,以它为主;

2024-05-05 21:24:10 13

转载 linux系统如何将一个文件同时复制多份

root@linuxprobe test]# echo "cp1.txt cp2.txt cp3.txt cp4.txt" | xargs -n 1 cp a.txt ## 利用echo 、xargs 复制文件多份。[root@linuxprobe test]# cat a.txt | tee dup{1..10}.txt ## 利用tee命令将a.txt复制十份。[root@linuxprobe test]# md5sum *.txt ## 检测复制结果。1、创建测试数据 a.txt。

2024-04-30 15:24:17 41

转载 [ Shell入门教程 ] 字符串空格和文件空行删除

(1)删除行首空格echo " 123 45 " | sed -e 's/^[ \t]*//g' #输出123 45(2)删除行尾空格echo " 123 45 " | sed 's/[ \t]*$//g' #输出123 45(3)删除前、后空格,不删除中间空格echo " 123 45 " | sed -e 's/^[ \t]*//g' -e 's/[ \t]*$//g' #输出123 45(4) 删除字符串中所有空格。

2024-04-29 15:20:15 189

转载 Linux echo命令与示例

echo命令是Linux中最基本和最常用的命令之一。传递参数给echo将打印到标准输出。echo通常在shell脚本中用于打印消息或输出其他命令的结果。echo是一个内置shell命令。echo的行为与其他流行的shell一样,如Zsh和Ksh。但它们的行为与shell之间略有不同。还有一个独立的程序,但通常,shell内置版本将优先。我们将介绍Bash内置版本的echo。这是echo命令的语法。使用-n选项时,将禁止尾随换行符。如果指定-e\\打印反斜杠字符。\a警报BEL。\b打印退格字符。\c。

2024-04-29 15:19:19 36

转载 【测试】echo发送和接收TCP/UDP数据包|shell 发送TCP/UDP数据包

原文链接:https://blog.csdn.net/nicai_xiaoqinxi/article/details/85311458。原文链接:https://blog.csdn.net/u010039418/article/details/86251470。原文链接:https://blog.csdn.net/blog_zxb/article/details/106402723。bash shell 的内置功能之一是通过/dev/tcp和/dev/udp设备文件打开TCP / UDP套接字。

2024-04-29 14:38:56 59

转载 一文搞懂系列——可变参数函数实现原理及注意事项

调用不带原型声明或声明为变参的函数时,主调函数会在传递未显式声明的参数前对其执行缺省参数提升(default argument promotions),将提升后的参数值传递给被调函数。从固定参数中可知,可变参数个数为2,但实际传入实参有三个。例如,如果调用函数时没有提供足够的参数,va_arg可能会访问非法的内存地址。通过固定参数中可知,可变参数个数为1,但实际并没有传入实参。可变参数函数是C语言中常见的特性,允许函数接受数量不定的参数。,它可以帮助我们进行固定参数和可变参数的个数和类型校验。

2024-04-28 18:02:28 13

转载 函数调用过程中栈到底是怎么压入和弹出的?

在func_B返回时,func_B的栈帧被弹出系统栈,func_A栈帧中的返回地址被“露”在栈顶,此时处理器按照这个返回地址重新跳到func_A代码区中执行。在func_A返回时,func_A的栈帧被弹出系统栈,main函数栈帧中的返回地址被“露”在栈顶,此时处理器按照这个返回地址跳到main函数代码区中执行。在func_A调用func_B的时候,同样先在自己的栈帧中压入函数返回地址,然后为func_B创建新栈帧并压入系统栈。将当前栈帧切换到新栈帧。参数入栈:将参数从右向左依次压入系统栈中。

2024-04-28 18:00:32 13

转载 可变参数函数详解

可变参数函数又称参数个数可变函数(本文也简称变参函数),即函数参数数目可变。其中,参数可分为两部分:数目确定的固定参数和数目可变的可选参数。函数至少需要一个固定参数,其声明与普通函数参数相同;可选参数由于数目不定(0个或以上),声明时用"…"表示(“…”用作参数占位符)。固定参数和可选参数共同构成可变参数函数的参数列表。由于参数数目不定,使用可变参数函数通常能缩短编码,灵活性和易用性较高。

2024-04-27 23:23:42 15

转载 C 可变长参数va_arg的一些总结和陷阱

参数读取使用的时候。害得我找了好久关于指针地址的问题,结果最后发现是前一个。然而,编译器真正报错的地方不在此处,而是在下一个类型为。从上面的示范可以知道,函数定义的时候,可变长参数(…在调试这个参数列表的时候,可能在一行报错,但是其实。但是,那时候我没发现这个问题。参数的错误读取,最后导致了bug的出现。从前面的警告可以看出,这里使用了。一点点,才能减少bug的出现。所以,对于可变长参数的使用要。读取参数列表中的参数。的时候,会使用几个实参。参数的读取错误导致之后的。函数,目的就是做到像。

2024-04-27 23:19:43 38

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除