- 博客(177)
- 资源 (13)
- 收藏
- 关注
原创 最长公共子序列和最长公共子串问题
最长公共子序列问题最长公共子串(longest common substring)问题:给定两个字符串,SSS(长度nnn)和TTT(长度mmm),求解它们的最长公共子序列。其中公共子序列是指:按从左到右顺序在SSS、TTT中均出现的字符序列,子序列中字符在SSS、TTT中无需连续。例:SSS = ABAZDC、TTT = BACBAD,SSS和TTT的最长公共子串为:ABAD。最长公共子序列问题可以描述:两段文字间的相似度以辨别抄袭;两组DNA片段间的相似度;……求解方法
2021-09-02 19:24:02 412
原创 蓄水池采样
import randomfrom typing import Iterator, Listdef reservior_sampling(pool: Iterator, k: int) -> List: samples: List = [] for idx, item in enumerate(pool): if idx < k: samples.append(item) else: rnd
2021-08-24 18:35:32 254
原创 python线程间共享变量原子性
What kinds of global value mutation are thread-safe?A global interpreter lock (GIL) is used internally to ensure that only one thread runs in the Python VM at a time. In general, Python offers to switch among threads only between bytecode instructions; ho
2021-07-03 14:35:19 563
转载 VSCode模板变量
TM_SELECTED_TEXT The currently selected text or the empty stringTM_CURRENT_LINE The contents of the current lineTM_CURRENT_WORD The contents of the word under cursor or the empty stringTM_LINE_INDEX The zero-index based line numberTM_LINE_NUMBER The on
2021-04-18 19:18:45 351
原创 VSCode配置文件预定义变量
Predefined variables${workspaceFolder} - the path of the folder opened in VS Code${workspaceFolderBasename} - the name of the folder opened in VS Code without any slashes (/)${file} - the current opened file${fileWorkspaceFolder} - the current opened f
2021-04-18 18:28:59 711
原创 conda虚拟环境激活时自动设置环境变量
conda acitvate env_name在env_name环境目录中,创建文件夹\etc\conda\activate.d。在该文件夹下,创建*.bat文件,将需设置的环境变量或脚本写入其中。激活虚拟环境时,该脚本自动运行。
2021-01-10 19:03:17 2615
原创 ubunut 18.04安装xrdp及pulseaudio-module-xrdp
1. 桌面环境sudo apt install xfce42. xrdp服务sudo apt install xrdp参考:xrdp3. 远程声音重定向确认pulseaudio版本为11.1pulseaudio --version编译、安装pulseaudiosudo apt install build-essential dpkg-dev libpulse-devsudo apt install pulseaudiosudo apt build-dep pulseaud
2020-12-16 12:56:20 4034
原创 Ubuntu 18.04开机自启动脚本
Ubuntu 18.04开机自启动脚本(systemd)创建启动脚本run.sh#!/bin/sh -erunuser -l user -c '# source setupvars.sh # 激活环境变量# to do...sh start_up.sh # 运行脚本'修改run.sh文件属性chmod +x run.sh说明:开机自启动脚本需要在root用户环境中运行,而脚本运行环境通常为user环境,因此使用runuser命令切换user用户。注意:必须确保run.sh可以在
2020-12-02 01:14:27 1043
原创 读取海康工业相机(gige)数据流
读取海康工业相机(gige)数据流调用海康工业相机(gige),读取数据流并转为opencv(numpy)矩阵格式参考官方开发案例GrabImage.py,对数据流相机转换def work_thread(cam=0, pData=0, nDataSize=0): stFrameInfo = MV_FRAME_OUT_INFO_EX() memset(byref(stFrameInfo), 0, sizeof(stFrameInfo)) while True: r
2020-11-28 00:21:19 3583 7
原创 CUDA C
CUDA C关键字__global__:定义函数为设备(device)函数,在显卡上运行并且只能由主机(host)调用;__device__:定义函数为设备函数,在显卡上运行并且只能由设备函数调用;__host__:定义函数为主机函数,在主机上运行并且只能由主机函数调用;...
2020-10-23 09:33:45 185
原创 视觉SLAM十四讲:第3讲 三维空间刚体运动
第3讲:三维空间刚体运动三维空间中刚体运动的描述方式:旋转矩阵、变换矩阵、四元数和欧拉角3.1 旋转矩阵3.1.1 点和向量,坐标系三维空间中,给定线性空间基(e1,e2,e3)(\mathbf{e}_{1}, \mathbf{e}_{2}, \mathbf{e}_{3})(e1,e2,e3),则向量a,b∈R3\mathbf{a}, \mathbf{b} \in \R^{3}a,b∈R3,a=[e1e2e3][a1a2a3]=a1e1+a2e2+a3e3(3-1)\mathbf{a} =
2020-07-03 10:07:04 2888
原创 ubuntu系统ros安装
机器人开发:ubuntu系统ros安装ubuntu:16.04ros:kinetic参考官网ubuntu系统安装ubuntu与ros版本匹配https://wiki.ros.org/Distributionsubuntu 16.04设置清华更新源ros(kinetic版本)安装ROS(Kinetic)仅支撑Ubuntu 15.10、Ubuntu 16.04、Debian 8设置sources.list(清华源)sudo sh -c '. /etc/lsb-release
2020-07-02 18:28:42 700
原创 视觉SLAM十四讲:第2讲 初识SLAM
第2讲:初识SLAM2.1 引言定位和建图是感知的“内外之分”:前者任务是明白自身的状态(即位置);后者任务是了解外在的环境(即地图)。传感器:携带于机器人本体上的,例如机器人的轮式编码器、相机、激光、惯性测量单元(inertial measurement unit,IMU)等;安装于环境之中,例如前导轨、二维码标志等等。携带于机器人本体上的传感器测到的通常都是一些间接的物理量而不是直接的位置数据,只能通过一些间接的手段,从这些数据推算自己的位置。它没有对环境提出任何要求,使得这种定
2020-07-01 11:49:53 6122
原创 视觉SLAM十四讲非模板Sophus库编译报错问题
高翔《视觉SLAM十四讲》第一版,第四章、非模板Sophus库编译出现报错:so2.cpp:32:26: error: lvalue required as left operand of assignmentso2.cpp:33:26: error: lvalue required as left operand of assignment实例unit_complex_的方法real()和imag()不能用=直接赋值,应修改为:SO2::SO2(){ // unit_complex_.r
2020-06-19 16:39:12 1295
原创 Linux环境下,使用VSCode编译C++工程
Linux环境下,使用VS Code编译C++工程1. 准备安装VS Code安装C++ extension for VS Code安装g++(gcc)编译器sudo apt-get install g++或者更新sudo apt-get update安装gdb调试器sudo apt-get install build-essential gdb2. 创建Hello WorldVS Code需要为工程配置3个文件:`tasks.json` :编译器配置
2020-06-16 16:31:05 2752
原创 目标检测中的mAP
mAP(mean average precision):即各类别AP的平均值AP:PR(precision-recall)曲线下面积精确率(precision):TPTP+FP\frac{TP}{TP + FP}TP+FPTP召回率(recall):TPTP+FN\frac{TP}{TP + FN}TP+FNTPTP(true positive):IoU>0.5IoU \gt 0.5IoU>0.5的检测框数量(同一Ground Truth只计算一次)FP(false positiv
2020-06-01 21:12:04 385
原创 隐马尔可夫模型:参数估计问题
隐马尔可夫模型:参数估计问题(BaumWelch算法)HMM的参数估计问题:给定一个观察序列O=O1O2⋯OTO = O_{1} O_{2} \cdots O_{T}O=O1O2⋯OT,计算使P(O∣μ)P(O | \mu)P(O∣μ)最大时,模型μ=(A,B,π)\mu = (\mathbf{A}, \mathbf{B}, \mathbf{\pi})μ=(A,B,π)的参数μ^=arg maxμP(Otraining∣μ)\hat{\mu} = \argmax_{\mu} P(O_{\text
2020-06-01 18:55:45 1796
原创 隐马尔可夫模型:状态序列估计问题
隐马尔可夫模型:状态序列估计问题(维特比算法)维特比(Viterbi)算法用于求解HMM的第二个问题,即给定观察序列O=O1O2⋯OTO = O_{1} O_{2} \cdots O_{T}O=O1O2⋯OT和模型μ=(A,B,π)\mu = (\mathbf{A}, \mathbf{B}, \mathbf{\pi})μ=(A,B,π),选择在一定意义下“最优”的状态序列Q=q1q2⋯qTQ = q_{1} q_{2} \cdots q_{T}Q=q1q2⋯qT,使得该状态序列“最好地解释”观
2020-06-01 18:48:20 1052 1
原创 隐马尔可夫模型:观察序列概率估计
隐马尔可夫模型:观察序列概率估计解码(decoding)问题(估计问题):给定观察序列O=O1O2⋯OTO = O_{1} O_{2} \cdots O_{T}O=O1O2⋯OT和模型μ=(A,B,π)\mu = (\mathbf{A}, \mathbf{B}, \mathbf{\pi})μ=(A,B,π),计算观察序列OOO的概率,即P(O∣μ)P(O | \mu)P(O∣μ)。穷举法:对于任意的状态序列Q=q1q2⋯qTQ = q_{1} q_{2} \cdots q_{T}Q=q1q2⋯
2020-06-01 18:40:34 739
原创 隐马尔可夫模型:引言
隐马尔可夫模型在马尔可夫模型中,每个状态代表了一个可观察的事件,因此,马尔可夫模型又称作可视马尔可夫模型(visible Markov model,VMM)。隐马尔可夫模型(HMM)中,模型所经过的状态序列未知,只知道状态的概率函数,即观察到的事件是状态的随机函数,因此,该模型是一个双重随机过程。其中,模型的状态转换过程是不可观察的(隐蔽的),可观察事件的随机过程是隐蔽状态转换过程的随机函数。HMM模型可表示为一个五元组μ=(S,K,A,B,π)\mu = (S, K, \mathbf{A}, \m
2020-06-01 18:33:39 236
原创 期望极大(EM)算法
EM算法概率模型有时既含有观测变量(observable vriable),又含有隐变量或潜在变量(latent variable)。如果概率模型的变量都是观测变量,那么给定数据,可以直接用极大似然估计法,或贝叶斯估计法估计模型参数。EM算法[Dempster, 1977]是一种迭代算法,用于含有隐变量(hidden variable)的概率模型参数的极大似然估计,或极大后验概率估计。EM算法的每次迭代由两步组成:E步,求期望(expectation);M步,求极大(maximization)。所以这一
2020-05-27 15:02:25 818
原创 VGG网络MNIST分类任务Pytorch实现
import torchimport torchvisionfrom torchvision import datasets, transformsfrom torch import nnfrom torch import optimfrom torch.utils.data import DataLoaderimport torch.nn.functional as Fimport copyimport matplotlib.pyplot as pltimport numpy as n
2020-05-26 10:40:07 3849
原创 动态规化 - 汉诺塔
动态规化 - 汉诺塔汉诺塔问题(tower of Hanoi)是心理学实验研究常用的任务之一。该问题的主要材料包括三根高度相同的柱子和一些大小及颜色不同的圆盘,三根柱子分别为起始柱A、辅助柱B及目标柱C。在A杆自下而上、由大到小按顺序放置64个金盘。游戏的目标:把A杆上的金盘全部移到C杆上,并仍保持原有顺序叠好。操作规则:每次只能移动一个盘子,并且在移动过程中三根杆上都始终保持大盘在下,小盘在上,操作过程中盘子可以置于A、B、C任一杆上。动态规化子问题分解:设移动盘子数为n,为了将这n个盘子从A杆移动
2020-05-18 11:12:33 501
原创 大话设计模式:第29章 模式总结
第29章:模式总结松耦合内聚性描述的是一个例程内部组成部分之间相互联系的紧密程度。耦合性描述的是一个例程与其他例程之间联系的紧密程度。软件开发中,创建的例程应该是:内部完整,也就是高内聚;与其他例程之间的联系则小巧、直接、可见、灵活,这就是松耦合。面向对象在做面向对象的开发,创建对象的工作不可避免。创建对象时,负责创建的实体通常需要了解要创建的是哪个具体的对象,以及何时创建这个而非那个对象的规则。而我们如果希望遵循开放-封闭原则、依赖倒转原则和里氏代换原则,那使用对象时,就不应该知道所用
2020-05-18 09:30:28 350
原创 支持向量机概述
支持向量机概述支持向量机(support vector machinc,SVM)是在高维特征空间使用线性函数假设空间的学习系统,在分类方面具有良好的性能。在自然语言处理中,SVM广泛应用于短语识别、词义消歧、文本自动分类和信息过滤等方面。线性分类二分类问题通常用实数函数f:X⊆Rn→Rf : X \subseteq \R^{n} \rightarrow \Rf:X⊆Rn→R(nnn为输入维数)判别:当f(x)≥0f(\mathbf{x}) \geq 0f(x)≥0时,将输入x=(x1,x2,…,xn)
2020-05-12 18:21:16 1160
原创 大话设计模式:第21章 单例模式
第21章:单例模式单例模式单例模式(Singleton):保证一个类仅有一个实例, 并提供一个访问它的全局访问点。通常可以用一个全局变量使一个对象被访问,但它不能防止实例化多个对象。一个最好的办法是让类自身负责保存它的唯一实例。这个类可以保证没有其它实例被创建,并且它可以提供一个访问该实例的方法。Singleton类,定义一个Getlnstance操作,允许客户访问它的唯一实例。GetInstance是一个静态方法,主要负责创建自己的唯一实例。客户端代码由于Singleton类封装它的
2020-05-12 12:02:53 233
原创 Python3多线程、队列
Python3多线程多线程类似于同时执行多个不同程序,多线程运行有如下优点:使用线程可以把占据长时间的程序中的任务放到后台去处理。用户界面可以更加吸引人,比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的进度。程序的运行速度可能加快。在一些等待的任务实现上如用户输入、文件读写和网络收发数据等,线程就比较有用了。在这种情况下我们可以释放一些珍贵的资源如内存占用等等。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须
2020-05-12 10:52:50 1267
原创 大话设计模式:第28章 访问者模式
第28章:访问者模式访问者模式访问者模式(visitor):表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。Visitor类:为该对象结构中ConcreteElement的每一个类声明一个Visit操作。ConcreteVisitor1和ConcreteVisitor2类:具体访问者,实现每个由Visitor声明的操作。每个操作实现算法的一部分,而该算法片断乃是对应于结构中对象的类。Element类:定义一个Accept操作,它
2020-05-11 20:01:30 218
原创 大话设计模式:第27章 解释器模式
第27章:解释器模式解释器模式解释器模式(interpreter),给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。AbstractExpression(抽象表达式):声明一个抽象的解释操作,这个接口为抽象语法树中所有的节点所共享。TerminalExpression(终结符表达式):实现与文法中的终结符相关联的解释操作。实现抽象表达式中所要求的接口,主要是一个interpret()方法。文法中每一个终结符都有一个具体终结表达式与之相对应。
2020-05-11 15:50:15 168
原创 大话设计模式:第26章 享元模式
第26章:享元模式享元模式享元(flyweight)模式:运用共享技术有效地支持大量细粒度的对象。Flyweight类:所有具体享元类的超类或接口,通过这个接口,Flyweight可以接受并作用于外部状态。ConcreteFlyweight:继承Flyweight超类或实现Flyweight接口,并为内部状态增加存储空间。UnsharedConcreteFlyweight是指那些不需要共享的Flyweight子类。因为Flyweight接口共享成为可能,但它并不强制共享。Flywei
2020-05-11 10:02:03 218
原创 大话设计模式:第25章 中介者模式
第25章:中介者模式中介者模式中介者(mediator)模式,用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。中介者模式又称调停者模式,是指中间人或者调停者的意思。将一个系统分割成许多对象通常可以增加其可复用性,但是对象间相互连接的激增又会降低其可复用性了。因为大量的连接使得一个对象不可能在没有其他对象的支持下工作,系统表现为一个不可分割的整体,所以,对系统的行为进行任何较大的改动就十分困难。根据迪米特法则,如果两个
2020-05-09 18:42:14 171
原创 大话设计模式:第24章 职责链模式
第24章:职责链模式职责链模式职责链(chain of responsibility)模式:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。Handler类,定义一个处理请示的接口。ConcreteHandler类,具体处理者类,处理它所负责的请求,可访问它的后继者,如果可处理该请求,就处理之,否则就将该请求转发给它的后继者。ConcreteHandler1,当请求数在0到10之间则有权处理,否
2020-05-09 16:14:16 241
原创 大话设计模式:第23章 命令模式
第23章:命令模式当请求排队或记录请求日志,以及支持可撤销的操作等行为时,行为请求者与行为实现者的紧耦合并不适合。命令模式命令(command)模式:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。Command类,用来声明执行操作的接口。ConcreteCommand类,将一个接收者对象绑定于一个动作,调用接收者相应的操作,以实现Execute。Invoker类,要求该命令执行这个请求。Receiver类,知道如何
2020-05-09 12:17:32 167
原创 大话设计模式:第22章 桥接模式
第22章:桥接模式继承带来的麻烦对象的继承关系是在编译时就定义好了,所以无法在运行时改变从父类继承的实现。子类的实现与它的父类有非常紧密的依赖关系,以至于父类实现中的任何变化必然会导致子类发生变化。当需要复用子类时,如果继承下来的实现不适合解决新的问题,则父类必须重写或被其他更适合的类替换。这种依赖关系限制了灵活性并最终限制了复用性。合成、聚合复用原则合成、聚合复用原则(composition & aggregation reuse principle,CARP),尽量使用合成、聚合,
2020-05-08 21:08:14 199
原创 Python实现单例模式
Python实现单例模式函数装饰器实现单例from functools import wraps@wraps接受一个函数来进行装饰,并加入了复制函数名称、注释文档、参数列表等等的功能。这可以让我们在装饰器里面访问在装饰之前的函数的属性。def singleton(cls: object, *args, **kwargs): _instance = {} @wraps(...
2020-05-08 15:18:44 313
原创 大话设计模式:第20章 迭代器模式
第20章:迭代器模式迭代器模式迭代器模式(iterator),提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。迭代器模式适用情况:需要访问一个聚集对象,而且不管这些对象是什么都需要遍历需要对聚集有多种遍历方式迭代器模式为遍历不同的聚集结构提供如开始、下一个、是否结束、当前哪一项等统一的接口。迭代器模式分离了集合对象的遍历行为,抽象出-个迭代器...
2020-05-08 10:16:54 208
原创 大话设计模式:第19章 组合模式
第19章:组合模式组合模式组合模式(Composite):将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。组合模式适合处理整体与部分可以被一致对待的问题。Component为组合中的对象声明接口,在适当情况下,实现所有类共有接口的默认行为。声明一个接口用于访问和管理Component的子部件。Leaf在组合中表示叶节点对象...
2020-05-07 20:14:45 211
原创 大话设计模式:第18章 备忘录模式
第18章:备忘录模式备忘录模式备忘录(memento)模式:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。Originator(发起人):负责创建一个备忘录Memento,用以记录当前时刻其内部状态,并可使用备忘录恢复内部状态。Originator可根据需要决定Memento存储Originator的哪些内部状态。...
2020-05-06 22:53:20 210
原创 大话设计模式:第17章 适配器模式
第17章:适配器模式适配器模式适配器模式(adapter):将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。在软件开发中,系统的数据和行为都正确,但接口不符时,应该考虑用适配器,目的是使控制范围之外的一个原有对象与某个接口匹配。适配器模式主要应用于希望复用一些现存的类,但是接口又与复用环境要求不一致的情况。Target:...
2020-05-06 19:57:34 210
wls_filter
2019-10-24
Dynamic Time Warping
2019-10-20
NIMA Neural Image Assessment (TIP 2018).pdf
2019-09-23
微软office自带公式编辑器使用(英文版)
2018-07-10
哈希现金(Hashcash)摊销成本公开审计功能
2017-09-27
4G内存破解
2017-09-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人