自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 [无人驾驶]无外参矩阵下的多激光雷达对齐

0、背景有段时间,采集了个数据,里面包含多个激光雷达的数据,具体为顶装的40线激光雷达,侧装的32线激光雷达。但是激光雷达间并没有对齐,为了使用上数据,想了一些办法将数据对齐,即转换到同一个坐标系下。1、思路一开始使用ICP算法进行对齐,但是效果很差,弃之。使用手动标点,即在不同的雷达点云中,找到表征同一个位置的点的坐标,选取几十个点,最后计算外参矩阵。缺点是手动找点工作量大,且找的对应点不准确,误差大。尝试后效果也不行,但是比ICP好一些,亦弃之。NDT算法对齐。我发现这个算法真的牛

2021-01-03 22:50:25 456 1

原创 [Qt][Matlab]混编设置/Qt读取并显示三维张量mat/高光谱处理系统

1、Qt下载2、Matlab下载3、Qt环境配置4、mat的读取5、mat的显示

2020-12-26 22:47:34 1218 2

原创 [无人驾驶]三维坐标系转换/无人车外参标定

1、三维坐标系转换在无人车的外参标定中,各传感器获取的数据在自己的坐标系中,一般要转化到车辆坐标系中,车辆坐标系一般选择惯导坐标系。本文以顶装的激光雷达坐标系与车辆坐标系为例,具体讲述三维坐标转换,坐标示例如下图。图中OV−XVYVZVO_{V}-X_{V}Y_{V}Z_{V}OV​−XV​YV​ZV​为车辆坐标系,OL−XLYLZLO_{L}-X_{L}Y_{L}Z_{L}OL​−XL​YL​ZL​为雷达坐标系,每个轴规定的旋转正方向如图。(1)原理对于每个激光雷达坐标系中的点P′(xL,yL,z

2020-11-29 17:49:45 1199

原创 南理工硕士论文latex模板

1.前言该模板是依据程杰同学所编写的博士论文模板修改而来,改动只有少量的地方,比如将“博士”改为“硕士”,参考链接1。软件环境为win10+TexLive2020+TexStudio。2.安装TexLive2020首先下载TexLive2020,清华大学开源软件镜像站,点开链接如下图,下载texlive2020.iso。2. 安装。下载完成后,解压texlive2020.iso,如下图,双击install-tl-windows.bat进行安装。安装前可自行修改安装路径。安装完成,出

2020-11-05 14:33:08 4948 15

原创 [C/C++]零碎知识点

1. 键盘输入(1)get方法:char name[50];cin.get(name,50);cin.get();(2)getline方法:string s;getline(cin,s);(3)cin:string s;cin>>s;2. 子字符串函数string s="abcdef", s1;s1=s.substr(1,2); //substr,而不是subStr3. 字符数组char [] 与字符串string 相互转换://char [] -&g

2020-08-01 00:30:37 212

转载 [Git]入门及常用操作

1、安装Git根据自己系统,自行安装,可百度教程。找一个合适的文件夹,右击打开Git Bash,即可输入以下命令。2、创建版本库(1)创建版本库,pwd显示当前文件夹路径。$ mkdir learngit$ cd learngit$ pwd/Users/michael/learngit(2)初始化版本库$ git initInitialized empty Git repository in /Users/michael/learngit/.git/(3)添加文件并提交在版本库

2021-06-08 20:50:23 179

原创 [MySQL]MySQL的安装、配置及可视化软件Navicat

介绍MySQL的安装、配置,以及可视化软件Navicat的安装。一、MySQL官网下载安装包。(1)找到DOWNLOAD选项。(2)选免费的社区版本。(3)下载server。安装。(1)将下载的MySQL安装包解压到你想要放的位置,绝对路径中避免出现中文。(2)以管理员身份打开命令行。(3)进入MySQL的bin目录。(4)安装MySQL的服务:mysqld --install(5)初始化MySQL:mysqld --initialize --console初

2021-05-19 19:06:30 421

原创 [Java基础]IDEA使用maven配置logback日志

问题: IDEA使用maven配置logback日志新手小白教程,适用于啥也不懂的。关于logback是什么工具,见参考链接[1],反正是来写日志的。思路:IDEA创建新的项目Logback。配置Maven。(1)添加Maven。(2)修改pom.xml文件,添加logback依赖。依赖文件如下:<dependencies> <dependency> <groupId>org.slf4j<

2021-05-16 23:04:10 7020

原创 [LeetCode][C++]移除链表元素

203. 移除链表元素给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。示例 1:输入:head = [1,2,6,3,4,5,6], val = 6输出:[1,2,3,4,5]示例 2:输入:head = [], val = 1输出:[]示例 3:输入:head = [7,7,7,7], val = 7输出:[]提示:列表中的节点在范围 [0, 104] 内1 <= Node.val

2021-03-11 15:48:35 172

原创 [华为面试题]删除字符串中相邻的相同字符

给定一个字符串,从左往右扫描,如存在两个或两个以上的相同字符靠在一起,则消除这些字符。对每次消除后剩下的字符,继续应用上述规则,直到不能再消除为止。示例:输入:abccbd 返回:ad 消除:cc、bb输入:snggnngp 返回:sgp 消除:gg 、nnn#include<iostream>#include<string>#include<stack>using namespace std;int main(){ string s = "sn

2020-10-15 00:30:20 1998

原创 [C++]实现memcpy

转载于Vector_PX:C++ memcpy 实现void memcpy(void *pDst ,void *pSrc ,size_t length){ char *dst=static_cast<char*>(pDst); //转换成char* char *src=static_cast<char*>(pSrc); if ((src==nullptr)||(dst==nullptr)) //判断是否为野指针 { /* code */ return

2020-09-25 14:17:30 972

原创 [C++]字节9-20笔试题

1、字符串最短循环子串输入一个字符串,判断其是否完全循环,若是循环的,则输出最短的循环子串,否则输出自身。例1:输入:abababab输出:ab备注:abababab以ab为最小串循环,故输出ab。abcabcab,这种不是完全循环,故输出自身abcabcab。2、简单计算器张三需要找个工具人来帮忙计算数学题,这样的工具人太难找了,希望你编写一个简单的计算器,因为张三还是小学生,所以只需要非常少的功能。加法,1+2=3减法,1-2=-1乘法,1*2=2幂(就是求几次方),1

2020-09-22 14:57:44 386

原创 [C++]十进制转换为任意进制

//最大支持36进制#include<iostream>#include<string>using namespace std;char digit[] = { '0','1','2','3', '4','5', '6','7', '8','9', 'A','B','C','D', 'E','F', 'G','H', 'I','J', 'K','L','M','N', 'O','P', 'Q','R', 'S','T',

2020-09-22 14:15:55 715

原创 [C++]工厂模式

1、简单工厂模式enum CTYPE {COREA, COREB}; class SingleCore { public: virtual void Show() = 0;}; //单核A class SingleCoreA: public SingleCore { public: void Show() { cout<<"SingleCore A"<<endl; } }; //单核B class Singl

2020-09-17 16:36:13 75

原创 [C++]产生固定范围的随机数

给定生成1到5的随机数rand5(),如何得到生成1到7的随机数rand7()?思路:由大的生成小的容易,比如由Rand7()生成Rand5(),所以我们先构造一个大于7的随机数生成函数。记住下面这个式子:RandN= N( RandN()-1 ) + RandN() ;// 生成1到N^2之间的随机数可以看作是在数轴上撒豆子。N是跨度/步长,是RandN()生成的数的范围长度,RandN()-1的目的是生成0到N-1的数,是跳数。后面+RandN()的目的是填满中间的空隙比如Rand25=

2020-09-17 16:24:49 549

原创 [C++]三个线程交替打印ABC

#include<iostream>#include<thread>#include<mutex>#include<condition_variable>using namespace std;mutex mymutex;condition_variable cv;int flag=0;void printa(){ unique_lock<mutex> lk(mymutex); int count=0;

2020-09-17 16:10:13 568

原创 [C++]实现mutex/互斥锁

思路:实现mutex最重要的就是实现它的lock()方法和unlock()方法。我们保存一个全局变量flag,flag=1表明该锁已经锁住,flag=0表明锁没有锁住。实现lock()时,使用一个while循环不断检测flag是否等于1,如果等于1就一直循环。然后将flag设置为1;unlock()方法就将flag置为0;关键点:假设thread A是第一个运行到此的线程,那么它得到的mutex->flag就肯定是0,于是它继续跳出循环往下运行,希望通过下面的mutex->flag =

2020-09-17 16:02:08 1340 1

原创 [C++]实现一个哈希表

using namespace std; class Hash { int N; // 哈希表的表长 // 指向对应存储下标的指针。 list<int> *table; public: Hash(int V); int hashFunction(int x) { return (x % N); } void insertKey(int x); void deleteKey

2020-09-17 14:14:47 397

原创 [LeetCode][C++]验证二叉搜索树

1、98. 验证二叉搜索树给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例 1:输入:2/ 1 3输出: true示例 2:输入:5/ 1 4/ 3 6输出: false解释:输入为: [5,1,4,null,null,3,6]。根节点的值为 5 ,但是其右子节点值为 4 。代码:方法一:递归b

2020-09-16 21:12:53 169

原创 [LeetCode][C++]跳跃游戏

1、55. 跳跃游戏给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。示例 1:输入: [2,3,1,1,4]输出: true解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3 步到达最后一个位置。示例 2:输入: [3,2,1,0,4]输出: false解释: 无论怎样,你总会到达索引为 3 的位置。但该位置的最大跳跃长度是 0 , 所以你永远不可能到达最后一个位置。

2020-09-15 23:59:04 168

原创 [LeetCode][C++]01矩阵/矩阵乘法

542. 01 矩阵给定一个由 0 和 1 组成的矩阵,找出每个元素到最近的 0 的距离。两个相邻元素间的距离为 1 。示例 1:输入:0 0 00 1 00 0 0输出:0 0 00 1 00 0 0示例 2:输入:0 0 00 1 01 1 1输出:0 0 00 1 01 2 1注意:给定矩阵的元素个数不超过 10000。给定矩阵中至少有一个元素是 0。矩阵中的元素只在四个方向上相邻: 上、下、左、右。代码:class Solution {priv

2020-09-14 23:44:12 832

原创 [拼多多面试]找出数组中重复的数/缺失的第一个正数

找出重复的数给定一个包含n个数的数组,其数字在1到n之间(包括1和n),可知至少存在1个重复的数,且每个重复的数只重复1次,找出重复的数。要求,时间复杂度O(n),空间复杂度O(1)。思路:将数组进行排序,即nums[i]=i,由于这里的数范围是1-n,所以对应存储为 nums[i]=i+1,例如nums[0]=1,nums[1]=2…最后对数组进行遍历,找出nums[i] != i+1的nums[i]。需要在排序完之后遍历,不能在排序的时候遍历,容易把一个数多次添加到结果集中。代码

2020-09-13 11:41:55 183

原创 [LeetCode][C++]二叉树左右视图

1、199. 二叉树的右视图给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。示例:输入: [1,2,3,null,5,null,4]输出: [1, 3, 4]解释:class Solution {public: vector<int> res; unordered_set<int> visited; void preOrder(TreeNode* root, int depth) {

2020-09-10 22:53:16 133

原创 [C++]多线程队列实现

1、多线程队列实现void initSrand() //微秒级随机种子{ LARGE_INTEGER start; QueryPerformanceCounter(&start); srand(unsigned(start.LowPart));}void initSrand1() //毫秒级随机种子{ struct timeb tb; ftime(&tb); srand(unsigned(tb.millitm));}int cap=10;deque&lt

2020-09-08 23:49:38 536

原创 [LeetCode][C++]全排列1/2

46. 全排列给定一个 没有重复 数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]代码:class Solution {public: int sz; vector<int> mark; vector<vector<int>> res; void backtrace(vector<

2020-09-06 23:14:57 154

原创 [LeetCode][C++]组合总和 1/2/3

39. 组合总和给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。解集不能包含重复的组合。示例 1:输入:candidates = [2,3,6,7], target = 7,所求解集为:[[7],[2,2,3]]示例 2:输入:candidates = [2,3,5], targe

2020-09-06 23:07:36 183

原创 [LeetCode][C++]622. 设计循环队列

622. 设计循环队列设计你的循环队列实现。 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。循环队列的一个好处是我们可以利用这个队列之前用过的空间。在一个普通队列里,一旦一个队列满了,我们就不能插入下一个元素,即使在队列前面仍有空间。但是使用循环队列,我们能使用这些空间去存储新的值。你的实现应该支持如下操作:MyCircularQueue(k): 构造器,设置队列长度为 k 。Front: 从队首获取元素。如果

2020-09-06 18:29:53 94

原创 [C++]实现智能指针

template <class T> class SmartPointer {private: unsigned * ref_count; //应用计数值 T * ref; //普通指针public: //普通构造函数, 设定T * ptr的值,并将引用计数设为1 SmartPointer(T * ptr) { ref = ptr; ref_count = new unsigned; *ref_count = 1; } //

2020-09-06 18:23:00 130

原创 [LeetCode][C++]面试题 17.07. 婴儿名字/并查集

面试题 17.07. 婴儿名字每年,政府都会公布一万个最常见的婴儿名字和它们出现的频率,也就是同名婴儿的数量。有些名字有多种拼法,例如,John 和 Jon 本质上是相同的名字,但被当成了两个名字公布出来。给定两个列表,一个是名字及对应的频率,另一个是本质相同的名字对。设计一个算法打印出每个真实名字的实际频率。注意,如果 John 和 Jon 是相同的,并且 Jon 和 Johnny 相同,则 John 与 Johnny 也相同,即它们有传递和对称性。在结果列表中,选择字典序最小的名字作为真实名字。示

2020-09-06 18:05:37 107

原创 [LeetCode][C++]排序链表

148. 排序链表在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。示例 1:输入: 4->2->1->3输出: 1->2->3->4示例 2:输入: -1->5->3->4->0输出: -1->0->3->4->5代码:class Solution {public: ListNode* sortList(ListNode* head) { ListNod

2020-09-06 17:56:22 112

原创 [C++] TopK问题

1、快排思想void quickK(vector<int> &arr, int k, int left, int right){ if (left >= right) //重要,控制递归结束 return; int key = arr[left]; int i = left, j = right; while (i < j) { while (i < j && arr[j] >= key) j--; if (i

2020-09-06 17:02:51 154

原创 [LeetCode][C++]字符串转换整数/字符串解码

字符串转换整数 (atoi)请你来实现一个 atoi 函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下:如果第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字字符组合起来,形成一个有符号整数。假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成一个整数。该字符串在有效的整数部分之后也可能会存在多余的字符,那么这些字符可以被忽略,它们对函数不应该造成影响。注意:假如该字符串中的第一

2020-09-05 14:42:42 282

原创 [LeetCode][C++]完全平方数

367. 有效的完全平方数给定一个正整数 num,编写一个函数,如果 num 是一个完全平方数,则返回 True,否则返回 False。说明:不要使用任何内置的库函数,如 sqrt。示例 1:输入:16输出:True示例 2:输入:14输出:False思路:牛顿迭代法:最快的是用一个公式:1+3+5+7+ … + (2n-1) = n^2代码:class Solution {public: bool isPerfectSquare(int num) {

2020-09-05 14:10:21 1287

原创 [LeetCode][C++] 54. 螺旋矩阵

54. 螺旋矩阵给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。示例 1:输入:[[ 1, 2, 3 ],[ 4, 5, 6 ],[ 7, 8, 9 ]]输出: [1,2,3,6,9,8,7,4,5]示例 2:输入:[[1, 2, 3, 4],[5, 6, 7, 8],[9,10,11,12]]输出: [1,2,3,4,8,12,11,10,9,5,6,7]思路:代码:class Solution {pub

2020-09-04 21:54:07 90

原创 [C/C++]strcpy,++i,i++的实现

1、strcpy#include < cassert>void assert( int expression );assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运行。char * strcpy(char *dst,const char *src) //[1] 源字符串参数用const修饰,防止修改源字符串。{ assert(dst != NULL &&am

2020-09-04 18:50:49 112

原创 [LeetCode][C++]Pow(x, n)

50. Pow(x, n)实现 pow(x, n) ,即计算 x 的 n 次幂函数。示例 1:输入: 2.00000, 10输出: 1024.00000示例 2:输入: 2.10000, 3输出: 9.26100示例 3:输入: 2.00000, -2输出: 0.25000解释: 2-2 = 1/22 = 1/4 = 0.25说明:-100.0 < x < 100.0n 是 32 位有符号整数,其数值范围是 [−231, 231 − 1] 。代码:class S

2020-09-04 11:52:11 118

原创 [C/C++]华为8-19笔试题

1、逆时针遍历+报数M*N的矩阵,从(0,0)开始,先从顺时针从最外围走到原点,再从里面一层继续顺时针兜圈,直至走完//// ->->->->->->// | |// ^ v// | |// <-<-<-<-<-<-v//每个元素从1开始编号,若编号的个位数为7,十位数为奇数,则被挑选出来

2020-09-01 15:45:30 269

原创 [C/C++]七大排序算法

1、希尔排序2、归并排序3、堆排序4、快速排序5、直接插入排序6、冒泡排序7、选择排序

2020-09-01 14:54:52 2725

原创 [C/C++]虚函数

1、虚函数

2020-09-01 14:41:46 75

原创 [C/C++]生产者消费者模型/单例模式/多线程死锁

1、生产者消费者模型2、单例模式

2020-09-01 14:30:51 253

空空如也

空空如也

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

TA关注的人

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