vim使用
前言作为一个历史上最出色的编辑器,拥有自定义按键功能,并且可以大大提高工作效率
在linux中的安装在linux中只需要一行指令安装
1sudo apt install vim
linux 上的配置文件123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150" etc/vim/vimrc" the call to :runtime you can f ...
fish使用
fish安装可以使用指令安装 fish
1sudo apt install fish
将fish设置为默认终端只需要终端的一行指令
1chsh -s $(which fish)
fish 个性化配置fish的配置基本上是通过一条指令来的
fish --config 之后会打开一个网页,然后在其中可以自己选择好看的主题之类的
tmux使用
tmux安装在 linux 命令行终端只需要一行指令就可以
1sudo apt install tmux
tmux 使用指令 针对于同一个窗口不同的分割操作竖直分割窗口 crtl-b “水平分割窗口 crtl-b %关闭窗口 crtl-b &切换窗口 crtl-b 上下左右按键,或者 ;
tmux 窗口指令,针对于对不同的窗口操作& 关闭当前窗口l 前后窗口间互相切换. 修改当前窗口编号,相当于重新排序f 在所有窗口中查找关键词, 重命名当前窗口w 列出所有窗口% 水平分割窗口“ 竖直分割窗口n 选择下一个窗口p 选择上一个窗口0~9 选择 0~9 对应的窗口空格 更改竖直与水平的窗格x根据提示关闭 关闭当前窗格 或者直接 crtl-D 关闭z 当前窗口全屏显示
tmux的分割窗口实现实际上是多个终端,并且可以通过echo对终端的文件进行操作,然后会出现在对应终端上 /dev/pts/n
配置文件1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484 ...
gdb使用
前言gdb 功能
动态改变程序的执行环境。
自定义启动运行需要调试的程序。
在指定位置使用条件表达式设置断点。
在程序暂停时观察代码内变量值的变化。
开始前准备主要是生成调试信息,在编译的时候,添加 -g 选项来生成调试信息,以此来使用 gdb 的调试
gdb 外部指令
gdb 可执行文件名 启动 gdb 调试
gdb --help 查看指令帮助
man gdb 查看 gdb 手册
gdb -x xxx 在 gdb 启动时运行一些脚本
gdb --version 查看 gdb 版本
gdb 内部指令开始运行
r/run 开始运行,会一直运行,直到断点
start 开始运行,在 main 处会停下来
starti 开始运行,在第一条指令处停下来
r/run param 开始运行,会一直运行,直到断点,后面的 param 就是可执行文件后面需要跟的参数
运行中指令
c/continue 继续运行,一直运行,直到下一个断点
c/continue n 继续运行,一直运行,会忽略 n 个断点
s/step 单步,不进入函数内部
si/stepi 单步进入,进入函数内部,是在机器层面的,单步 ...
gcc使用
前言介绍GCC(英文全拼:GNU Compiler Collection)是 GNU 工具链的主要组成部分,是一套以 GPL 和 LGPL 许可证发布的程序语言编译器自由软件,由 Richard Stallman 于 1985 年开始开发。
GCC 原名为 GNU C语言编译器,因为它原本只能处理 C 语言,但如今的 GCC ,不仅可以编译 C、C++ 和 Objective-C,还可以通过不同的前端模块支持各种语言,包括 Java、Fortran、Ada、Pascal、Go 和 D 语言等等。
GCC支持多种硬件开发平台,还能进行跨平台交叉编译。此外,GCC是按模块化设计的,可以加入新语言和新CPU架构的支持。
GCC、gcc、g++三者之间的关系gcc(GUN C Compiler)是GCC中的c编译器,而g++(GUN C++ Compiler)是GCC中的c++编译器。
gcc和g++两者都可以编译c和cpp文件,但存在差异。gcc在编译cpp时语法按照c来编译但默认不能链接到c++的库(gcc默认链接c库,g++默认链接c++库)。g++编译.c和.cpp文件都统一按cpp的 ...
PF粒子滤波器
背景对于一般的非线性/非高斯系统,解析求解的途径是行不通的。在数值近似方法中,蒙特卡罗仿真是一种最为通用、有效的手段,粒子滤波就是建立在蒙特卡罗仿真基础之上的,它通过利用一组带权值的系统状态采样来近似状态的统计分布。由于蒙特卡罗仿真方法具有广泛的适用性,由此得到的粒子滤波算法也能适用于一般的非线性/非高斯系统。但是,这种滤波方法也面临几个重要问题,如有效采样(粒子)如何产生、粒子如何传递以及系统状态的序贯估计如何得到等。
简单的理解,粒子滤波就是使用了大量的随机样本,采用 蒙特卡洛(MonteCarlo,MC)仿真技术完成 贝叶斯递推滤波 (Recursive Bayesian Filter) 过程。
推导系统描述
对于一个离散的开环系统
x_k=Ax_{k-1}+Gw_{k-1}\\z_k=Cx_k+Hv_k其中 $x_k$ 为 k 时刻的系统状态向量, $z_k$ 为 k 时刻的测量输出向量,这里是一个开环系统,不考虑系统的输入 $u$。 $w_k,v_k$ 分别是系统过程噪声和观测噪声,并且均为零均值高斯白噪声。犹豫贝叶斯滤波的递推形式是基于非线性系统的后验概率密度,因此这里并 ...
数字滤波器
数字滤波器数字滤波器按照最佳逼近特性可以分为巴特沃斯Butterworth,切比雪夫Chebyshev,贝塞尔Bessel,椭圆Elliptic滤波器。按照频带又可以分为低通,高通,带通,带阻滤波器,其中高通,带通和带阻滤波器都可以由低通滤波器由频率变换得到。
低通滤波器当输入信号频率小于某一截止频率时,低通滤波器能够通过信号,使其保留低频分量,而将高于截止频率的部分信号阻止或者减弱
传递函数为
G(s)=\frac{G_0w_c^n}{(s+w_c)^n}这就是 n 阶低通滤波的传递函数,其中 $w_c$ 就是截至频率, $G_0$ 是通带增益或零频增益
高通滤波器当输入信号频率大于某一截止频率时,高通滤波器能够通过信号,使其保留高频分量,而将低于截止频率的部分信号阻止或者减弱
传递函数为
G(s)=\frac{G_0w_c^ns^n}{(s+w_c)^n}这就是 n 阶高通滤波的传递函数,其中 $w_c$ 就是截至频率, $G_0$ 是通带增益或零频增益
带通滤波器当输入信号在某个频率的范围內时,带通滤波器能够通过该信号,使其保留,对于高于或低于这个频率一定范围的频率的信号阻止 ...
QP二次规划
一些定义对于一个函数 $F:R^n→R^m$ 是一个将欧式 n 维空间的函数,该函数由 m 个实函数构成, $y_1(x_1,…,x_n),…,y_m(x_1,…,x_n)$
Jacobian 矩阵函数 F 的偏导数组成一个 m 行 n 列的矩阵,就是 Jacobian 矩阵
J_F(x_1,...,x_n)=\begin{bmatrix}\frac{\partial y_1}{\partial x_1}&...&\frac{\partial y_1}{\partial x_n}\\...&...&...\\\frac{\partial y_m}{\partial x_1}&...&\frac{\partial y_m}{\partial x_n}\end{bmatrix}也可以表示为 $\frac{\partial(y_1,…,y_m)}{\partial (x_1,…,x_n)}$。如果对于一个 $p\in R^n$ ,函数 F 在 p 点可微,则 F 在这一点的导数由 $J_F(p)$ 给出
Hessian 矩阵如果 F 的所有二阶导数都存在,则 F 的 Hessian 矩阵为 ...
贝叶斯滤波
在时移系统中通过对带有噪声的观测来估计隐状态的处理方法,滤波专门是指利用前面 k 个观测 $y_1,y_2,…,y_k$ 来估计第 k 个隐状态 $x_k$ 的方法,记作 $x_k|y_{1:k}$
如果利用前 d 个观测 (d<k) 来估计第 k 个状态,称为预报
如果利用前 d 个观测 (d>k) 来估计第 k 个状态。则称为平滑或内插
所以实际的滤波是 $d=k$ 的情形,本质上就是观测 $y_k$ 已知并且带有噪声,用它来估计未知隐状态 $x_k$
状态空间模型对于一个可观测的系统,可以得到
x_k=Ax_{k-1}+Bu_k+Gw_k\\y_k=Cx_k+v_k其中 $w_k,v_k$ 分别是过程噪声和观测噪声,并且上式为状态空间方程的状态方程,下式为测量方程
模型假设由于跟踪设备获得的量测信息和我们根据控制信息得到的预测信息都不是完全准确的(否则也就没有进行估计的必要了),但其一定在真值附近的一定范围内,因此我们可以假设这两个信息服从一定的概率分布来表征二者在真值附近的不确定性。考虑的是随机动态系统,自然要用概率来刻画,所以需要一个概率状态空间模型,设定如下 ...
PR比例谐振控制器
github仓库
比例谐振控制算法分析 - 百度文库 (baidu.com)
前言在传统的矢量控制系统中,广泛的采用了坐标变换技术,将三相静止坐标系下的电流电压等正弦量转化为同步旋转坐标系下的直流量,这个实现了简化系统,并且能够很好的使电机实现解耦控制。这么做的原因就是 PI 控制器无法对正弦量实现无静差控制,坐标变换简化了系统外环控制的设计,却造成内环结构复杂,设计困难。而且在电机运行中,电机的电感,电阻等电机参数会随着磁路的饱和,温度的升高而发生改变,从而使交叉耦合项不准确,进而使系统的控制精度下降。
PR 控制器可以实现对交流的无静差控制,将 PR 控制器用于网侧变换器的控制系统中,可以在两个相对静止的坐标系下对电流进行调节,可以简化控制过程中的坐标变换,消除电流 d,q 轴分量之间的耦合关系,并且可以忽略电网电压对系统的扰动作用。并且使用 PR 控制器更容易实现低次滤波补偿,这些都有利于简化系统的结构
傅里叶变换
F(\omega)=\int_{-\infty}^{\infty}f(t)e^{-j\omega t}dt\\f(t)=\frac{1}{2\pi}\int_{-\i ...