自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 我对命名空间的理解

命名空间(namespace)表示一个标识符(identifier)的可见范围。在C++中具体表现为一系列变量、函数及类的集合,优点在于:减少命名冲突;(主要原因)模块化。将逻辑相关的标识符组织起来,系统更加整洁、清楚;为什么命名空间能够减少命名冲突?不同开发者有不同的开发习惯、命名规则,当协同开发时就难免会遇到命名冲突的问题,为了解决这个问题,C++使用命名空间这一概念封装了所有对象名称。如小明和小红namespace xiaoming{ int a = 2; double pi = 3

2020-11-25 00:03:14 27

原创 编译时链接VS运行时链接及常见的`cannot open shared object file: No such file or directory`问题

问题描述经常出现的,找不到共享文件问题:cannot open shared object file: No such file or directory,其主要原因是没有找到共享库。不仅在程序编译时需要连接库,在运行时同样需要连接库。理解程序运行时库搜索的问题,是解决此类问题的关键。使用命令ldd查看运行时连接库情况,若没有缺失,对应行显示not found。结果可能如下:运行时库以何种顺序搜索-wl -rpath -R选项。编译时指定的运行时动态库搜索路径,注意区分编译动态库搜索路径-LLD

2020-11-23 10:23:44 7

原创 (六)CMake与FFTW

一、FFTW是什么?FFTW(The Fastest Fourier Transform in the West )是一个用于计算离散傅里叶变换的软件库,由麻省理工学院的Mattteo Frigo和Steven G.Johnson开发的。FFTW的名字意思是西方最快的傅里叶变换。它可以在O(nlogn)时间内计算任意大小和维数的实数和复数值数组的变换。[1]二、如何配置?我的配置方法是:在Ubuntu系统下,使用CMake工具,在VSCODE中完成程序编写和测试。2.1 下载和解压官网-下载-解压

2020-11-23 00:02:49 17

原创 GCC的学习(四)头文件搜寻顺序及环境变量

尖括号和双引号#include <iostream>#include "myhearder.h"我认为其实两种方式区别不大,但是尖括号有他的优点好:区分用户和三方或标准系统的头文件对搜索顺序进行了优化搜寻顺序graph LRA[#include指定] --> B[当前目录]B --> C[I指定目录]C-->[GCC环境变量]C --> D[系统内置]...

2020-11-21 14:05:12 8

翻译 Numpy(二)Numpy的输入和输出:loadtxt()函数

在Matlab读入一个类似这样的文本:43,9,643,9,60,0,0-15.536,-21.239,0-15.536,-21.239,30-15.536,-21.239,3-15.536,-21.239,2-15.572,-20.741,2-15.694,-20.256,2-16.664,-19.5,2-16.909,-19.531,2-25.901,-21.8,2-37.8,-21.8,2-37.8,-13.724,2-37.267,-13.442,2-37,-13,2

2020-11-20 23:19:57 23

原创 空字符和空白字符

空格、制表符、换行符(创建新行)、回车符、换页符、垂直制表符称为“空白字符”,因为它们与打印页上的单词和行之间的空格一样都是起到方便阅读的作用。 标记由空白字符和其他标记分隔(划分边界),如运算符和标点。 在分析代码时,C 编译器将忽略空白字符,除非您将它们用作分隔符或者字符常量或字符串文本的组成部分。 使用空白字符可以让程序更易于阅读。 请注意,编译器也将注释视为空白。C语言的空字符是在字符串结尾系统自动加上的\0,以让系统识别出一个字符内串的结尾。如:字符串“china”。在系统内是以“china\0

2020-11-20 09:45:21 27

原创 换行符CR、LF和CRLF

换行符的名字CR:Carriage Return,对应ASCII中转义字符\r,表示回车LF:Linefeed,对应ASCII中转义字符\n,表示换行CRLF:Carriage Return & Linefeed,\r\n,表示回车并换行用Notepad++查看Windows下的换行符使用\r\n,如下:Unix下的换行符用\n,如下:Mac下的换行符用\r,如下:正则匹配的注意事项一般文档都说,点号可以匹配"任意字符",点号确实可以匹配"任意字符",常见的数字、字母、各种符

2020-11-16 13:53:04 31

原创 (五)CMake与OpenCV

直接看CMakeLists.txt是怎么写的吧![1]# cmake needs this linecmake_minimum_required(VERSION 2.8)# Define project nameproject(opencvTest)# Find OpenCV, you may need to set OpenCV_DIR variable# to the absolute path to the directory containing OpenCVConfig.cmake

2020-11-16 11:43:48 15

原创 (四)cmake编译选项

一、cmake、make的本质是编译选项的组织集合本质上来说,make和cmake都是协助你进行编译的工具,用户完全可以通过g++ gcc按照编译器要求来进行直接编译,只不过make和cmake根据各自认为合适的组织规则方便我们进行编译管理罢了。如增加一个线程库:g++ *.cpp -o -lpthread test这是g++编译器要求的样子。所有包含头文件、库文件、打包和链接库等操作都通过-选项来完成。make为了减少和整合编译逻辑,将一些例如打包ar操作封装在一个变量AR中;一些编译器专用的选

2020-11-16 11:16:23 11

原创 03矩阵的乘法和逆

一、矩阵乘法的四种理解角度1.1 矩阵定义1.2 列向量1.3 行向量1.4 逐行×\times×逐列1.5 分块矩阵二、方阵的逆2.1 定义Invertable Insigular等价定义2.2 Gause-Jordan求逆矩阵2×22\times22×2相当于进行两个线性变换变换过程中EA=IEA=IEA=I,故,E=A−1E=A^{-1}E=A−1E[AI]=[IA−1]E[A\quad I]=[I \quad A^{-1}]E[AI]=[IA−1]...

2020-11-11 08:44:45 27

原创 迭代器方法初始化嵌套list

Matlab:A=[]for i=1:10 z=rand(1,2) A=[A;z]; % 行叠加 % A=[A,i]; % 列叠加endPython方法1(同Matlab):Python方法2 (append方法)Python方法3 (迭代器)

2020-11-09 18:46:55 9

原创 曲线的参数方程简介

一、曲线的参数方程1.1 参数方程的概念一般地,在平面直角坐标系中,如果曲线上任意一点的坐标x,yx,yx,y都是某个变数ttt的函数{x=f(t)y=g(t)(1)\left\{\begin{aligned}&x=f(t)\\&y=g(t)\end{aligned}\right.\tag{1}{​x=f(t)y=g(t)​(1)并且对于每个ttt的允许值,由方程组(1)所确定的点M(x,y)M(x,y)M(x,y)都在这条曲线上,那么方程组(1)就称为这条曲线的参数方程

2020-11-09 14:02:59 15

原创 坐标系类型及其简介

一、坐标系1.1 平面直角坐标系通过直接坐标系,平面上的点和坐标系(有序实数对)、曲线与方程建立了联系,从而实现了数与形结合。如上图,每一个点对应坐标系上的一个有序实数对;方程y=x2x∈[−2,2]y=x^2 \quad x\in[-2,2]y=x2x∈[−2,2]对应上述图像。1.2 平面直角坐标系中的伸缩变换定义:设点P(x,y)是平面直角坐标系中的任意一点,在变换ϕ:{x′=λ⋅xλ>0y′=μ⋅yμ>0\phi:\left\{\begin{aligned}&amp

2020-11-09 14:02:04 23

原创 02矩阵消元(Elimination with matrices)

花了几天复习了一下高等数学和高中数学中的解析几何的内容,虽然时间花费的比较多,但是想到后边可以更好地理解线性代数,时间花了就花了吧。一、传统方法解一个三元一次方程求解下列一元三次方程:{2x+3y+z=6x−y+2z=−1x+2y−z=5\begin{cases}&2x+3y+z=6 \\ &x-y+2z=-1\\&x+2y-z=5\end{cases}⎩⎪⎨⎪⎧​​2x+3y+z=6x−y+2z=−1x+2y−z=5​式333+式111:3x+5y=113x+5

2020-11-09 13:59:49 15

原创 01方程的几何解释

一、n个未知数,n个方程以2个未知数,2个方程为例:KaTeX parse error: Expected group after '\right' at end of input: …\right\tag{1}它的矩阵形式为:[1324][xy]=[03](2)\begin{bmatrix}1& 3 \\2& 4 \\\end{bmatrix}\begin{bmatrix}x\\y\\\end{bmatrix}=\begin{bmatrix}0\\3\\\end{b

2020-11-09 13:59:11 34

原创 向量代数

一、向量的概念及其运算1.1 向量的概念在空间中,我们把具有大小和方向的量叫做空间向量(space vector),向量的大小叫做向量的长度或模(Modulus)。规定长度为0的向量叫做零向量(zero vector),记为0\boldsymbol{0}0,零向量的起点和终点重合,方向是任意的;模为1的向量叫做单位向量(Unit vector),与向量a\boldsymbol{a}a长度相等而方向相反的向量,称为a\boldsymbol{a}a的相反向量,记为−a-\boldsymbol{a}−a。1

2020-11-09 13:55:16 6

原创 空间向量及其运算

平面内任意向量p\boldsymbol{p}p都可以用两个不共线的向量a\boldsymbol{a}a b\boldsymbol{b}b来表示,这是平面向量的基本定理。类似的我们定义,如果三个向量不共面,那么对空间中的任一向量p\boldsymbol{p}p,存在有序实数组{x,y,z}\{x,y,z\}{x,y,z}使得p=xa+yb+zc\boldsymbol{p}=x\boldsymbol{a}+y\boldsymbol{b}+z\boldsymbol{c}p=xa+yb+zc,我们把向量{a,b,.

2020-11-09 13:55:01 9

原创 定比分点公式

和两点间的中点公式一样,定比分点公式(Section Formula)是一种给出中点坐标的公式。定比分点应该理解为:“固定比例分割点的坐标公式”,中点公式是他的一种特殊情况。我们可以用它寻找三角形的内心、质心和外心。他是在一个线段中按照固定比例将线段分为两部分。在二维坐标系下:截点公式的翻译其实更加好理解,就是一个点将线段截成两段。该公式可以告知任何一个固定比例的点在坐标系的位置。...

2020-11-09 11:12:42 62

原创 值初始化和默认初始化

一个对象要么执行默认初始化,要么执行值初始化。如果对象有初值,那么执行值初始化;若没有初值则执行默认初始化。根据默认初始化的类型和位置,有两种情况:内置类型。局部作用域,不初始化;全局、静态变量初始化为0。自定义类、[1] C++定义了一套包括算术类型(Arithmetic type)和空类型(void)在内的基本数据类型,也叫做基本内置类型。算术类型它包括:bool char wchar_t char16_t char32_t short int long long long float dou

2020-11-03 14:41:07 29

原创 登陆Shell系统将会做些什么?

查看当前环境变量env or export除了环境变量外,还有bash接口和自定变量,注意子进程仅会继承父进程的环境变量,自定义并不继承。要继承需要手动输入export 变量名称被export后的变量被称之为“环境变量”1.5 命令别名alias lm='ls -l|more'alias rm ='rm -i'查看当前别名:alias1.6 login shell一个需要输入完成完整的登陆命令的一个shell。login shell需要读取:/etc/profile 系统

2020-11-02 15:45:15 16

原创 const定义及初始化约束

虽然知道这两个的区别,但是总是混淆他的中文名称。指针和 const 谁在前先读谁 ;*象征着地址,const象征着内容;谁在前面谁就不允许改变。一个是指向方向不变,一个是指向对象不变。英文中是:pointer to const const pointer ...

2020-11-01 08:51:58 108 1

原创 Numpy(二)np.matrix概述

矩阵操作除了使用np.array外,还可以使用np.matrix(np.mat)。np.matrix使用习惯更接近于matlab。np.matrix数据成员数据成员名称含义A矩阵本身(ndarray形式)A1对应行式矩阵(ndarray形式)I逆矩阵T转置矩阵dtype数据类型itemsize每个元素所占字节数nbytes矩阵总字节数ndim维数(其实就是列数)size矩阵总元素数量real矩阵对应的实部矩阵

2020-10-29 15:13:23 58

原创 Matplotlib(一)与Matlab在绘图上的对比

一、Matplotlib Figure概述画板上垫上画纸才能使用,而且画纸还能叠在一起。这里的。figure等效于画板,而axes/subplot则是画纸。从书包中拿出画板固定两张张画纸的过程,就相当与以下程序:fig=plt.figure() # 创建figure(拿出画板)ax1=fig.add_subplot(211) #划分2*1区域,在第一个区域固定一张画纸axesax2=fig.add_subplot(212) #第二张固定另一张画纸plt.show() # 展示你的成果之所以把

2020-10-29 12:04:36 96

原创 Numpy(一)np.array与matlab matrix对比

一、Numpy是什么Numpy代表"Numerical Python’,那么Numpy是什么呢?Numpy是一个python的数字库NumPy包含多维数组和矩阵数据结构数组结构支持与三角、统计、和线性代数相关的大部分函数。Numeric和Nuarray的扩展Numpy包含随机数发生器Numpy使用C语言实现和封装Pandas对象是建立在Numpy基础上的,实现了对Numpy的扩展Scipy(Scientifc Python)和MatplotLib(Plotting Library)和它是

2020-10-28 15:01:40 64

原创 using关键字小结

目前为止,using至少可以在以下几种场景应用:释放命名空间的变量、函数、类和模板使用命名空间指定的变量、函数、类和模板类型别名对于前两个应用,主要原因是取名字很麻烦。不同开发者有不同的开发习惯、命名规则,当协同开发时就难免会遇到命名冲突的问题,为了解决这个问题,C++使用命名空间这一概念封装了所有对象名称。如小李和小红namespace Li{ //variables, functions, classes,templates;}namespace Hong{ //v

2020-10-24 11:32:22 36

原创 pair是键值对

一、pair是键值对标准库中的关联容器map含有多个键值对,该键值对就是使用pair实现的,其头文件#include <utilty>。二、pair简单介绍2.1 构造函数:pair<T1,T2> p1;//默认构造pair<T1,T2> p2(v1,v2);//两参数构造,注意这个不是explicit的,tuple这一项是explicit的pair<T1,T2> p3(p2);//拷贝构造pair<T1,T2> p4={v1,v2}

2020-10-19 15:52:33 14

原创 (三)双S型速度规划 C++实现

简要说明支持起末速度、加速度的不为零的情况支持位移增加的情况自动修调系统参数完成S型规划基本的方法、原理说明在我的第一篇文章中,有兴趣可以看看:《(一)双S型速度规划 原理 》链接关于最终的效果可以参考另一篇:《(二)双S型速度规划 曲线形状的讨论》链接最后,本人技术水平有限,如有(肯定有)问题随时私信我。链接https://github.com/FISHFISHFISHLOVECAT/OfflineScurveTrajectory...

2020-10-19 11:42:39 46

原创 tuple是快速随意的结构体

一、tuple等价于结构体如果我们希望存储学号int、姓名string和城市string数据集合,vector无能为力,我们可以定义一个结构体:struct info{ int ID, string name, string city};Zhangsaninfo={1,"zhangsan","nanjing"};Lisiinfo={2,"Lisi","Guangzhou"};也可以定义一个tuple对象。tuple<int, string, string> Zhangsa

2020-10-16 17:10:28 33

原创 运算符求值顺序可能不确定

优先级仅规定了表达式的组合方式,而没有对运算对象的求值顺序进行规定。假如我们有两个函数分别是f1和f2。void f1(int &i){ i++;}void f2(int &i){ i++;}使用者这么使用:int main(){ int i=1; }...

2020-09-26 10:23:00 22

转载 ECS Linux解决SSH会话连接超时问题

用SSH客户端(我使用的Xshell)连接linux服务器时,经常会出现与服务器会话连接中断现象,造成这个问题的原因便是SSH服务有自己独特的会话连接机制。解决方案:设置服务器向SSH客户端连接会话发送频率和时间  #vi /etc/ssh/sshd_config,添加如下两行  ClientAliveInterval 60  ClientAliveCountMax 86400        --这里是24小时注:ClientAliveInterval选项定义了每隔多少秒给SSH客户端发送一次信

2020-09-24 22:55:48 14

原创 左右值属性和引用

一、左值和右值属性C++中,表达式必然是左值和右值中的一掌,右值只读,左值除了有右值的能力外还具有写的能力。常见的const修饰的对象就为右值,字面值常量也为右值。一些运算符对操作的对象左右值有要求:赋值语句。左侧必须为左值,右侧随便。返回为左值。取地址运算符。取地址作用对象既可以是左值也可以是右值,但是最后为右值。解引用。作用对象可以是指针、迭代器和STL类,返回左值;内置和迭代器自增和自减。作用对象是左值,返回结果仍然是左值。decltype返回的结果作用对象的左右值属性有关,如:in

2020-09-21 08:53:16 18

原创 类值和类指针的资源管理

#include <iostream>#include <string>#include <memory>using namespace std;class ValueLikeClass{public: //原来构造函数也可以有默认实参,默认实参除了字面值常量 //原来在函数体做的初始化操作都可以放到初始化参数列表中做 //拷贝构造居然可以也在参数化列表里完成虽然看上去不怎么好看 ValueLikeClass(const string& s =

2020-09-18 14:16:34 14

原创 类拷贝规则——三/五法则

三/五法则是什么?早些时候,C++对拷贝行为的管理需要通过三个函数完成,其分别是:拷贝构造函数拷贝赋值函数析构函数class A{public: A() { } A& operator=(const A&) {} //rule1 A(const A&) {} //rule2 ~A() {}; //rule3private:};这就叫做“三法则”,随着语言的发展,增加了两个函数,用于更精细的拷贝构造:移动

2020-09-17 11:01:33 43

原创 (二)双S型速度规划 曲线形状的讨论

完整的AMD段包含以下三个阶段,分别是:加速段 AP (Acceleration Phase)匀速段 MP(Maximum Phase)减速段 DP (Deceleration Phase)不同的系统参数(vmax amax jmax)和用户参数(q0 q1 v0 v1)影响AMD段的完整性,可以分为以下几种情况:AMD段都存在,完美S型,系统参数与期望的完全一致;AD段存在,次完美S型,系统期望最大加速度小于实际运行速度;AD段存在,期望加速度与实际运行加速度均小于期望加速度;仅A段

2020-09-11 11:53:14 121

原创 Linux QT无法输入中文

解决方法:将Ubuntu16.04 系统的在platforminputcontexts文件夹支持文件libfcitxplatforminputcontextplugin.so拷贝到相应QT插件中的同一文件夹platforminputcontexts中。sudo cp /usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so ~/Qt5.12.9/Tools/QtCre

2020-09-03 10:13:06 18

原创 (一)双S型速度规划 原理

一、双S型速度规划解决了梯形加速度不连续的问题梯形加减速会产生不连续的加速度,从机械系统的角度来说,产生不必要的冲击力。这些现象不仅会损坏机械结构(如电机)还会产生不必要的振动。双S型速度规划的速度曲线采用线性区间组合的方法解决加速度不连续的问题,线性段起末采用抛物线过渡。二、双S型速度规划是什么?双S型(double S)速度规划、铃型规划(Bell)或者又称七段S型速度规划,速度曲线如下图所示:整个运动可分为A M D.三个过程,分别是:加速阶段(Acceleration Phase, A

2020-09-02 16:41:03 217

原创 ps -aux和ps -ef区别

ps命令是Process Status。-aux和-ef基本没有区别,都是"显示全部进程",常常和grep(Globally Regular Expression Print,一种文本搜索工具)一起结合使用:ps -ef|grep 进程名(可以是正则表达式)ps -aux|grep 进程名(等效上面指令)获取到进程ID号后,使用kill结束掉它。注:在使用 kill -9 前,应该先使用 kill -15,给目标进程一个清理善后工作的机会。如果没有,可能会留下一些不完整的文件或状态,从而影响服务的

2020-08-29 10:26:51 31

原创 tar -zxvf含义

tar -zxvf +filenamez: zipx:extractv:verboselyf:filename查看这里

2020-08-28 10:39:11 40

原创 (一)轨迹规划:贝塞尔曲线的python实现

实现代码在最后。一、参数方程直角坐标系下参数方程极坐标系下参数方程直角坐标系下的参数方程:x=f(t)y=g(t)x=f(t) \quad y=g(t)x=f(t)y=g(t)极坐标系的参数则是ρ=f(t)θ=g(t)。ρ=f(t) \quad θ=g(t)。ρ=f(t)θ=g(t)。二、二项式定理贝塞尔其实就是比例点在空间上走过的轨迹。在介绍贝塞尔曲线之前,先复习一下高中数学——二项式定理:(a+b)n=cn0anb+cn1an−1b2+⋯+cnian−ibi+⋯+cnn.

2020-08-18 18:06:12 987

原创 循序渐进理解SSH(Secure Shell)

我是从《鸟哥私房菜》这本书开始接触Linux系统的,其中第六章开头的时候有句话一直不能理解:“Linux最优秀的地方之一,就是在于它的多用户、多任务环境”,你再多用户,一次不还是只是一个键盘和鼠标吗?那么多用户又有什么用呢?最近看了一下SSH相关的内容,让我有了新的体会。一、SSH是远程ShellShell是一个作为用户与Linux系统间的接口程序,它允许用户向操作系统输入需要执行的命令。Linux系统用户根据角色可分为三种:root用户:拥有对系统最高管理权限普通用户:只能对自己目录下的文件.

2020-08-07 23:37:54 64

空空如也

空空如也

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

TA关注的人 TA的粉丝

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