自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 收藏
  • 关注

原创 c++ const和define的区别

c++

2022-09-16 15:09:37 363 1

原创 面向过程和面向对象

面向对象和面向过程

2022-09-15 16:41:43 147

原创 连续系统离散化

连续时间系统离散化

2022-09-05 20:45:05 818

原创 数学期望E(x)

数学期望

2022-08-17 10:59:47 401

原创 极大似然估计

极大似然概率

2022-08-17 10:07:22 81

原创 C++运算符重载

c++运算符重载

2022-08-16 09:55:35 192

原创 c++智能指针

智能指针

2022-08-15 16:23:38 414

原创 方程组Ax = b的解

线性方程组的解

2022-08-15 10:19:51 1970

原创 C++ Lambada表达式

C++

2022-06-07 21:28:42 443

原创 C++ 多维数组

C++ 多维数组在c++中,经常用指针表示一个数组,多维数组则是数组的数组,对于二维数组来说,就像是一个数组里面包含了很多数组的指针,而这些指针又分别对应着一个数组,这样也会使得数组的内存变得不连续,遍历这个数组会花费相比较相同元素个数更多的时间所以应该避免使用多维数组。如下所示,创建了一个二维数组,为里面的一维数组的指针创建了空间,再通过遍历,为每个一维数组的指针赋上了一个10个int大小的指针,这个内存用于存放int。 int** a2d = new int*[10]; for(int i

2022-05-31 19:51:26 226

原创 perspective projection

什么是透视投影?这条铁路两条铁轨并不会像实际的轨道一样无限延伸,而是会在远处相交于某一个点,这个点叫做vanishing point ,离我们越近的物体看着要大一些,离我们较远的物体看着要小一些(比如轨道中间的横梁)就像达芬奇这幅画,我们可以注意到所有的直线都汇交于同一个点,all the lines disappear back to the single point.下图表示的是透视投影的几个要素,首先是spectator,spectator有一个确定的高度,因为其高度不一样,所看到的画面也会

2022-04-27 16:30:27 172

原创 C++ virtual destructors

C++的虚析构函数被用于多态之中,用基类指针指向子类对象的地址,当子类对象被删除时,我们希望调用子类的析构函数,而不是父类的析构函数,父类的虚析构函数由此而生。我们定义了两个类class base{ //基类public: base(){cout << "base constructor called" << endl;} ~base(){cout << "base destructor called" << endl;}};clas

2022-04-25 20:35:55 1153

原创 C++ template

template可以让编译器帮用户写代码,它将会被编译根据你具体的使用,it makes compiler write some code for you based some rules ,and sounds cool !当你使用模板编程时,编译器为此生成一个框架,当你传入某个具体的参数时,编译器将会根据你传入的参数在事先确定的框架里面写入代码。为什么需要模板当我们需要许多函数,其内部执行的操作是相似的,但是我们可能需要接受不同类型的参数,这样的函数就可以写模板模板函数只有当调用这个模板时,才会

2022-04-21 15:17:24 782

原创 C++ virtual function

public继承C++中为防止大量的代码重复,使用了继承机制,子类继承父类的函数和属性,子类对象可以调用父类的public函数和属性,子类是对父类的一种扩展,当一些类有一些共同的函数或者属性,我们便可以使用继承机制,将这些函数集成到父类中,减少代码的重复性using namespace std;class entity{public: int x = 0,y = 0; void move(int x_, int y_){ x += x_; y +=

2022-04-20 22:27:39 624

原创 C++ thread(一)

C++的多线程编程被用来让一个程序的代码两条路径同时运行,它可以让程序运行的更快,也可以让程序运行时执行不同的操作,比如当程序在执行cin操作时,会一直等待用户输入enter,此时程序就无法执行其他操作,如果使用多线程就可以解决这个问题#include <thread>#include <iostream>static bool finished = false;void doworking(){ while(!finished){ std::co

2022-04-15 17:25:25 426

原创 MIT线性代数学习笔记

一个向量和一个矩阵相乘,可以看作是其列向量的线性组合列空间指的是一个矩阵的列向量所扩张而形成的线性空间,其维数等于独立的列向量的个数,在本例中,维数维2,是一个平面一个矩阵的秩等于其列空间的维数,也等于行空间的维数,矩阵相乘也可以看作第二个矩阵的行向量的线性组合,所以矩阵行空间的维数和列空间的为数相等且都等于矩阵的秩秩为一的矩阵,一列乘以一行,得到的矩阵的所有列都是第一列的倍数,矩阵的所有的行都是第一行的倍数。对Ax = 0,其解组成的空间就是A的零空间,求解x就是相当于求解一个垂直于所有行向

2022-04-14 21:54:00 1128

原创 C++ assert

assert()函数被包含在头文件assert.h中,当函数括号内的表达式为真时,程序将继续执行,当函数表达式为假时,程序将停止执行。int main(int argc, char* argv[]){ int n = 10; assert(n == 2); return 0;}程序执行的效果如下图...

2022-04-13 20:19:47 850

原创 C++ nested class

C++ nested classC++ 的nested class是在类中声明另一个类,nested class的作用域是在class之中,当nested class访问权限设置为public时,可以从class通过作用域解析符号::访问nested class里面的public函数或变量,或者创建一个nested class的对象,就像一个在class名称空间下面的一个类class person{public: string name; person(string _name):na

2022-04-11 14:40:42 844

原创 C++ unordered_set和set

set和unordered_set都是C++的关联性容器,set的内部实现为红黑二叉树,unordered_set的内部实现为哈希表,二者存储的值都只能是唯一的,二者的区别是unordered_set的存储的变量没有顺序,set容器则会进行自动排序,unordered_set对插入,删除,查找操作的时间复杂度都为O(1),它运用Hash表将unordered_set中的元素存储在buckets中,buckets是hash函数内部通过插入的元素值分配的一个内存空间,便于快速查找,但是对于数据量较大的情况下ha

2022-04-10 22:05:48 3717

原创 相机的归一化图像平面

相机的归一化图像平面在相机的z = 1 前方,将相机平面几百几百的像素单位的坐标转换成了在相机前方的米制(如果有实际尺度)的坐标单位,有利于图像本质矩阵或者三角化的计算,防止求解方程的时候出现退化解,因为相机像素点的齐次坐标形式会有一个1,几百的像素坐标形式可能会使得方程的解退化将相机坐标系下面的一个点PPP三个坐标同时除以ZZZ即可得到相机坐标系下面的归一化坐标P=[x,y,z]T=[x/z,y/z,1]T P = [x,y,z]^T = [x/z,y/z,1]^TP=[x,y,z]T=[x/z,y

2022-04-10 11:15:08 1543

原创 VINS滑动窗口边缘化操作

VINS中滑动窗口的边缘化操作VINS是针对滑动窗口中的关键帧进行BA,为了保证滑动窗口中的关键帧数量限制在窗口的最大数量之内(VINS中取的是十个关键帧),当有新的关键帧进来的时候需要对之前的关键帧丢掉,但由于老的关键帧可能还会与窗口中的关键帧存在相机的观测约束,不能直接丢掉,所以丢掉的策略是对老的关键帧进行边缘化操作。边际概率如上图所示,上表表示的是一个二维随机变量的分布表,横轴表示的是学生花在学习上的时间,单位为分钟,纵轴表示的是学生在测试中所取得的成绩,数字表示的是学生的分数,而表中的每一个

2022-04-08 15:26:15 970

原创 C++枚举类型

C++枚举类型枚举类型的本质是一个integer系列的组合,应用场景:用一些整型来表示某些特定的状态,并且给这些整数赋予一些名字来增加代码的可读性。假设我有以下三个整型变量需要维护,最大的问题是这三个整型变量并不是一个group,也就是说我可以将value的值设置任意整数,那么后面的判断就变得没有意义了int a = 0;int b = 1;int c = 2;int value = b;if(value = b){ //do something}可以声明一个enum类型来将三个整数

2022-04-02 21:40:29 1578

原创 C++ static关键字

static变量和函数当一个变量在声明加入static关键字时,该变量就仅仅对当前翻译单元内可见,编译器并不会将其与其他翻译单元进行链接,就像是一个只对当前文件可用的“全局变量”。函数也是如此,如果不需要一个在所有的翻译单元都可见的函数或者是变量,就需要使用static关键字,如果我们在两个文件中定义了变量a将会出错 int a;#include <iostream>int a;multiple definition of `a';除非我们将其中一个文件的变量a声明为stat

2022-03-30 17:22:58 46

原创 C++函数指针

C++函数指针(一)函数指针被用于存储函数的地址用高级语言写成的代码被用来翻译成机器语言,即按照某种规程的二进制代码。当程序运行的时候,计算机会为程序分配内存将二进制指令复制到内存中的某一个区域,一个函数将会被翻译为一段具有连续地址的指令,指令的首地址就是函数的指针,也被称为函数的入口。函数指针的实现假如有这样一个两个数相加的函数,该怎么声明一个指向该函数的指针呢int Add(int a,int b){ return a+b;}结果如下,函数的返回值,参数必须与要指向的函数严格一致,其中

2022-03-23 20:23:15 1708

原创 双系统扩展Linux内存

联想小新双系统扩展Linux内存在电脑装完双系统后,Linux出现了内存不够用的现象,需要进行内存扩展,对操作步骤进行如下总结。1.在Windows运用内存管理压缩卷,建立未分区的内存空间,以供Linux使用2.Linux在挂载的情况下无法进行内存扩展,需要使用U盘或者光盘上的Linux扩展电脑上Linux的内存3.制作光盘镜像,具体操作步骤见ubuntu官网链接:link.4.设置电脑的BIOS以便U盘启动,本文一联想小新电脑为例,需要将secrurity boot设置为Disable,将US

2022-03-16 10:10:04 3198

原创 2021-06-03

ORB-SLAM2非主流旋转方向特征点筛选对于一个静态的场景,当前帧所有特征与上一帧的旋转方向应该是相同的,通过这个特性,可以对通过计算BRIEEF描述子之间距离得到的匹配的特征点进行筛选,筛出旋转方向非主流的误匹配。首先,计算匹配得到的两个特征点的旋转角度的差值,该差值的取值范围是[0,360°],将该取值范围划分为12个等份,每个等份代表着特征点的旋转方向的取值范围,将计算得到的两张图之间的特征点方向的差值放到对应的区间内得到关于特征点旋转方向的直方图。取出排名前三的直方图,如果次优小于了最优的十

2021-06-03 18:40:09 66

原创 2021-05-26

SLAM中的SVD分解1.SVD分解的作用SVD分解在SLAM中主要有以下两个方面的作用1.用于求解齐次线性方程的最小二乘解2.对基础矩阵或者本质进行分解,将其第三个奇异值强制置为0,使其秩为22 求解齐次线性方程的最小二乘解2.1求解单应性矩阵方程Ah=0;Ah = 0;Ah=0;该方程严格等于0可能无解,一般求解其最小二乘解,其对应的代价函数为f(h)=12(Ah)T(Ah)=12hTATAh f(h)=\frac{1}{2}(Ah)^T(Ah)=\frac{1}{2}h^TA^TAh

2021-05-26 17:08:02 150

空空如也

空空如也

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

TA关注的人

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