- 博客(79)
- 收藏
- 关注
原创 MATLAB快速入门
MATLAB文章目录MATLAB简单使用新建项目界面引导变量命名数据类型元胞数组简单使用MATLAB界面可以直接进行简单的操作,比如加减运算等,直接在命令行窗口输入即可新建项目在MATLAB界面,直接新建脚本或新建都可新建一个MATLAB项目新建完成后会得到一个如图的项目,当你进行操作但未及时保存时项目名处会多一个*号(同word文档等效果)。注意:当你新建一个项目时,项目并未保存,需要ctrl+s或手动保存后才会保存。*号会在你每次保存或运行时消除(此时默认保存)。界面引导成功创
2022-05-31 00:07:15
4577
原创 图像处理Opencv(六)
图像梯度梯度:对于图像,我们选定一定范围(可能是点边界,线边界,闭合边界),对于边界到边界图像像素点像素值的变化我们称之为梯度。Sobel算子概念:Sobel算子主要用于获得数字图像的一阶梯度,常见的应用和物理意义是边缘检测。Sobel算子是把图像中每个像素的上下左右四领域的灰度值加权差,在边缘处达到极值从而检测边缘。Sobel算子不但产生较好的检测效果,而且对噪声具有平滑抑制作用,但是得到的边缘较粗,且可能出现伪边缘。核心公式该算子包含两组3x3的矩阵,分别为横向及纵向,将之与图像作平面卷
2022-01-02 23:06:32
2215
1
原创 数据结构——贪心算法
贪心算法贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,算法得到的是在某种意义上的局部最优解 。贪心算法不是对所有问题都能得到整体最优解,关键是贪心策略的选择,希望由局部最优达到整体最优。贪心算法最佳应用——集合覆盖。算法思路贪心算法一般按如下步骤进行:①建立数学模型来描述问题。②把求解的问题分成若干个子问题。③对每个子问题求解,得到子问题的局部最优解 。④把子问题的解局部最优解合成原来解问题的一个解。贪心算法是一种对某
2022-01-02 23:05:42
1188
原创 两条错误出现(mysql: [Warning] Using a password on the command line interface can be insecure. 和1045)
这两条错误同时出现时,可能是大多数博主讲的这样那样的问题,但是还有另一点不算错误的错误是这里不要加分号!不要加分号!不要加分号!
2021-12-28 20:26:01
408
原创 KMP算法(二)(前缀表与具体实现)
KMP算法(一)(与暴力算法对比及主要思想)书接上文在(一)中我们讲到了,KMP算法与暴力算法对比的优点就在于特殊前缀表(这节我们称为next数组)的存在使得我们在匹配失败时,不需要再一个一个从头开始,而是根据特殊前缀表直接匹配对应位置,节省时间。这节我们主要来讲解前缀表构建的思路及如何代码实现。前缀表对于讲解前缀表,大多数教材会选择直接介绍next数组,next数组可以算的上是一个经过一步特殊操作的前缀表,以下也会提到构建思路前缀表的定义在(一)中有,不在赘述。本节不在写表头,以前缀值代表
2021-12-26 21:15:09
2775
3
原创 图像处理Opencv(五)
形态学——腐蚀操作腐蚀原理腐蚀的原理是利用一个内核对图像进行卷积(扫描),内核中有一个点被定义为锚点,然后提取内核覆盖区域的像素最小值(黑色方向)来替换锚点位置的像素值,所以扫描过后黑色变多。(换句话说,就是对于进行腐蚀操作图像的每个像素点,以每个像素点为核心,规定一定大小的区域,然后用该区域像素值最小的像素值去替换该像素点的像素值)下面我们来看一张图可以看到这张图上有很多线条干扰了图像,由于是线条所以通过滤波的方法处理图像得到的结果很差,甚至有可能适得其反,这里我们可以腐蚀的操作来处理。下面先
2021-12-26 21:14:48
1938
原创 图像处理Opencv(四)
图像阈值ret, dst = cv2.threshold(src, thresh, maxval, type)返回值:ret:返回阈值dst:返回图参数:src: 输入图,只能输入单通道图像,通常来说为灰度图thresh: 阈值maxval: 当像素值超过了阈值(或者小于阈值,根据type来决定),所赋予的值type: 二值化操作的类型,包含以下5种类型: cv2.THRESH_BINARY; cv2.THRESH_BINARY_INV; cv2.THRESH_TRUNC
2021-12-19 22:55:47
1933
原创 KMP算法(一)(对比暴力匹配算法)
KMP算法的介绍(1) KMP是一个解决模式串在文本串是否出现过,如果出现过,最早出现的位置的经典算法(2) Knuth-Morris-Pratt字符串查找算法,简称为“KMP算法”,常用于在一个文本串S内查找一个模式串P的出现位置,这个算法由Donald Knuth、Vaughan Pratt.James H. Morris三人于1977年联合发表,故取这3人的姓氏命名此算法.(3)KMP方法算法就利用之前判断过信息,通过一个next数组,保存模式串中前后最长公共子序列的长度,每次回溯时,通过nex
2021-12-19 22:55:15
1170
原创 图像处理Opencv(三)
颜色通道的提取cv2.split(img)cv2中提供了split函数来帮助我们提取颜色通道,参数img为图像变量名,返回值有三个,分别为b通道,g通道,r通道。返回值会分别得到图像的bgr通道对应的图像数据。例:边沿填充当我们对图像大小进行操作时,图像原来的规格可能与我们需求的规格有所差异,在调整时,对于规格差异部分我们就需要进行边界填充cv2.copyMakeBorder(img, top_size, bottom_size, left_size, right_size, border
2021-12-12 20:35:50
3366
原创 图像处理Opencv(二)
图像其它一些基本的操作保存图像cv.imwrite('保存图像时的图像名',需保存图像的定义变量名)图像形式图像大小img.size单位为像素点图像数据类型查看img.dtype修改img = img.astype(numpy.修改类型)数据读取——视频视频的每一帧都是一副定格的图像...
2021-12-05 21:10:09
322
原创 图像处理Opencv(一)
写在前面此图像处理系列博客均为笔者个人的学习参考资料(来源不为笔者)和学习笔记,笔者学习目的是主要为了识别处理数据图一类问题,所以此系列图像处理并不完整而着重于数据图分析的需求,其中某些部分(颜色通道提取,边沿填充等)将一笔带过但以图像处理或者计算机视觉方向为主仍需学习,总之主要还是数据图像专攻。计算机眼中的图像如图所示,当图像在计算机上展示时,图像被分成了很多个小块(或者说色块),一张图像被计算机分划的最小的小块,我们叫做像素。像素,说到底它是一个值,每个值对应一个像素点,这个值
2021-11-28 21:59:52
543
原创 决策树(二)
决策树算法ID3:信息增益C4.5:信息增益率(解决ID3问题,考虑自身熵)CART:使用GINI系数来当做衡量标准GINI系数:Gini(p)=∑k=1Kpk(1−pk)=1−∑k=1Kpk2Gini(p)=\sum^K_{k=1}p_k(1-p_k)=1-\sum^K_{k=1}p_k^2Gini(p)=∑k=1Kpk(1−pk)=1−∑k=1Kpk2(和熵的衡量标准类似,计算方式不相同)连续型特征之前我们讨论的节点或者说特征的划分都是针对离散值,因为离散值可以直接作为分划的节
2021-11-21 22:04:47
136
原创 排序算法——插入排序,选择排序
选择排序选择排序属于内部排序法,是从欲排序的数据中,按指定的规则选出某一元素,再依规定交换位置后达到排序的目的。基本思想第一次从数组中选取最小值,与数组中第一个数据进行交换,第二次再从除第一个元素以外的剩余数据中选取最小值,与数组中第二个数据交换,以此类推直到第n-1取最小值交换,得到从小到大的递增数组。package Sort;import java.text.SimpleDateFormat;import java.util.Date;//选择递增排序public class Sel
2021-11-21 18:13:53
385
原创 排序算法——Shell排序
Shell排序Shell排序(又称希尔排序)也是一种插入排序,但它是插入排序的一个更高效的版本,也称为缩小增量排序。基本思想希尔排序是把记录按下标的一定量分组,对每组使用直接插入排序的算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件七号被分成一组,算法结束。举例说明原始数据,以下数据元素颜色相同为一组初始量gap=length/2=5,意味着整个数组被分为5组以此类推,不断缩小增量package Sort;public class ShellSortE
2021-11-21 18:12:51
3026
原创 决策树(一)
树模型决策树:从根节点开始一步步走到叶子节点(决策)所有的数据最终都会落到叶子节点,即可以做分类也可以做回归树的组成根节点:第一个选择点非叶子节点与分支:中间过程叶子节点:最终决策结果...
2021-11-14 22:59:06
153
原创 排序算法——冒泡排序
冒泡排序冒泡排序是排序算法中比较简单的算法它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序〈如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。这个算法的名字由来是因为越大(/小)的元素会经由交换慢慢浮到数列的顶端(升序或降序排列),就如同气泡在水中最终会上浮到顶端一样,故名“冒泡排序"。算法的原理(升序)·1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。·2.对每一对相邻元素做同样的工作,从
2021-11-14 17:41:05
296
原创 时间频度和时间复杂度
时间频度一个算法话费的时间与算法中语句的执行次数成正比例,哪个算法中语句 执行次数多,它花费时间就多一个算法中的语句执行次数称为语句频度或时间频度我们在计算时间频度度时,由于执行次数未知,所以我们可以通过一些极限的思想去进行计算即:无穷次时,具体语句执行次数差异带来的影响的变化忽略常数项在算法重复进行的时候部分操作的操作次数不随重复或其它方式增加,即算法频度中有常数项,由于执行次数是固定的,所以他们在算法执行次数不断增加的过程中对时间影响越来越小,当执行无穷次时,此时常数的影响已经不存在了。例如:
2021-11-14 17:28:42
2087
原创 递归——八皇后
八皇后思路分析1)第一个皇后先放第一行第一列2)第二个皇后放在第二行第一列、然后判断是否OK,如果不OK,继续放在第二列、第三列、依次把所有列都放完,找到一个合适3)继续第三个皇后,还是第一列、第二列…直到第8个皇后也能放在一个不冲突的位置,算是找到了一个正确解4)当得到一个正确解时,在栈回退到上一个栈时,就会开始回溯,即将第一个皇后,放到第一列的所有正确解,全部得到.5)然后回头继续第一个皇后放第二列,后面继续循环执行1,2,3,4的步骤我们可以通过一个一位数组来表示一个合适的解(索引+1表
2021-11-07 18:04:52
76
原创 递归——迷宫
递归迷宫回溯如下是一个建议迷宫,编写程序使得显示从开始位置到终点的一条路径(问题详解与思路均在代码题解中)代码实现package recursion;public class labyrinth { public static void main(String[] args) { //先创建一个二维数组,模拟迷宫 //创建地图 int[][]map=new int[8][7]; //使用1来作为围墙 //
2021-10-31 17:56:42
318
原创 数据结构中运算描述(定义)与运算实现的异同
运算描述是运算功能的描述,是抽象的,是基于逻辑结构的。运算实现是程序员完成运算的实现算法,是具体的,是基于存储结构的
2021-10-27 08:52:40
4410
原创 递归问题(简单理解,汉诺塔)
递归简单来说就是自己调用自己,每次调用时传入不同的变量递归有助于解决复杂的逻辑循环问题,同时让代码变得简洁递归调用规则:1.当程序执行到一个方法是,就会开辟一个独立的空间2.每个空间的数据(局部变量)都是独立的package recursion;//简单递归public class simple { public static void main(String[] args) { sum(5); } public static void sum(int
2021-10-24 17:07:02
83
1
原创 逆波兰表达式
中缀转后缀1)对表达式字符串中的数分别取出2)对取出的字符做判断,符号存入,数字考虑拼接3)再将取出的字符统一存储起来4)初始化两个栈:运算符栈和储存中间结果的栈s25)从左至右扫描中缀表达式;6)遇到操作数时,将其压入s27)遇到运算符时,比较其与s1栈顶运算符的优先级: 1.如果s1为空或栈顶运算符为左括号“(”,则直接将此运算符入栈 2.否则,若优先级比栈顶运算符高,也将运算符压入到s1 3.否则,将s1栈顶的运算符弹出并压入到s2中,再次转到(7).1)与s1中新的栈
2021-10-17 18:28:44
101
原创 前缀,中缀,后缀表达式
前缀表达式前缀表达式的计算机求值从右至左扫描表达式,遇到数字时,将数字压入堆栈,遇到运算符时,弹出栈顶的两个数,用运算符对它们做相应的计算(栈顶元素和次顶元素),并将结果入栈;重复上述过程直到表达式最左端,最后运算得出的值即为表达式的结果。例如:(3+4)×5-6对应的前缀表达式就悬-×+3456,针对前缀表达式求值步骤如下:(1)从右至左扫描,将6、5、4、3压入堆栈(2)遇到+运算符,因此弹出3和4(3为栈顶元素,4为次顶元素),计算出3+4的值,得7,再将7入栈(3)接下来是×运算符,因此
2021-10-10 18:28:42
553
原创 栈实现综合计算器
栈实现综合计算器(无括号)设计思路·对于计算表达式我们第一步是要先获取表达式中的各元素,所以通过一个index值(索引),来遍历我们的表达式·在遍历得到数据之后,我们分别要定义一个数栈和一个符号栈来放入我们的数据·如果我们通过索引得到的是一个数则直接入数栈·如果我们通过索引得到的是一个符号,就要分情况而定1)如果当前符号栈为空,则得到的符号可直接入栈2)如果当前符号栈不为空,则需要比较,若当前操作符的优先级小于或者等于栈中的操作符,就需要从数栈中pop两个数,再从符号栈中pop一个符号,进行运
2021-10-10 18:28:05
76
原创 栈(基础分析)
栈的介绍·栈是一个先入后出的有序序列·栈是 限制线性表中元素的插入和删除只能在线性表的一端进行的 一种特殊线性表·根据栈的定义可知,最先放进栈中的元素在栈底,最后放入的元素在栈顶,而删除元素刚好相反,最后放入的元素最先删除,最先放入的元素最后删除栈的应用场景·子程序的调用:在跳往程序前,会先将下个指令的地址存到堆栈中,直到子程序执行完后再将地址取出,以回到原来的程序中。...
2021-10-10 18:27:00
104
原创 概率论与数理统计——参数估计
文章目录点估计估计量的评选标准区间估计点估计点估计设θ是总体XXX的未知参数,用统计量θ^=θ^(X1,X2,⋅⋅⋅Xn)\hat{θ}=\hat{θ}(X_1,X_2,···X_n)θ^=θ^(X1,X2,⋅⋅⋅Xn)来估计θ,称θ^\hat{θ}θ^为θ的估计量,对于样本的一组观察值x1,x2,⋅⋅⋅xnx_1,x_2,···x_nx1,x2,⋅⋅⋅xn,代入θ^\hat{θ}θ^的表达式中所得到的具体数值称为θ的估计值,这样的方法称为参数的点估计。矩估计用样本矩去估计相应总体
2021-10-03 18:33:35
907
原创 链表(单向链表)
链表介绍·链表是有序的列表·链表是以节点的方式来储存·每个节点包含data域,next域·链表各节点不一定是连续存储·链表分带头节点的链表和没有头节点的链表,根据实际的需求来确定链表在内存存储如下注:链表可以理解为挖宝,以头指针为第一幅藏宝图,data中是钥匙碎片...
2021-09-26 18:28:43
93
原创 链表(双向链表)
链表(双向链表)需求单向链表:查找方向只能是一个方向,即通过next域去查找下一个节点,单向链表删除时,也不能自动删除,在前面单向链表中由于我们只能通过next域向后查找,所以在很多操作时需要借助辅助变量(节点)temp去找删除节点的前一个节点进行操作。双向链表:可以向前或向后查找,提供两个方向的查找,双向链表也可以提供自动删除思路分析在节点中新增一个变量指向前一个节点,使得链表成为双向链表。class Node3 { public int no; public String n
2021-09-26 18:27:55
208
原创 数据结构(java)
数据结构包括:线性结构和非线性结构线性结构1)线性结构作为最常用的数据结构,其特点是数据元素之间存在一对一的线性关系2)线性结构有两种不同的存储结构,即顺序存储结构和链式存储结构3)顺序存储的线性表称为顺序表,顺序表中存储的元素是连续的4)链式存储的线性表称为链表,链表中的存储元素不一定是连续的,元素节点中存放数据元素以及相邻元素的地址信息5)线性结构常见的有:数组、队列、链表和栈。非线性结构非线性结构包括:二维数组,多维数组,广义表,树结构,图结构...
2021-09-19 18:51:08
136
原创 数组模拟队列(单向队列)
队列介绍·队列是一个有序列表,可以用数组或是链表来实现·遵循先入先出的原则,即:先存入队列的数据,要先取出。后存入的要后取出·数组模拟队列示意图(图示:存入数据时rear增加而front不变,取出时front增加而rear不变)数组模拟队列·队列本身是有序列表,若使用数组的结构来存储队列的数据,则队列数组的声明如下图,其中maxSize-1是该队列的最大容量。·因为队列的输出、输入是分别从前后端来处理,因此需要两个变量front即rear分别记录队列前后端的下标,front会随着数据输出而改
2021-09-19 18:48:49
130
原创 二维数组转稀疏数组
文章目录稀疏数组二维数组转稀疏数组的思路二维数组转稀疏数组(代码及实现)稀疏数组当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组问题需求二维数组的大多数值相同时,利用二维数组记录数据会记录很多没有意义的数据处理方法1)记录数组一共有几行几列,有多少不同的值2)把具有不同值的元素的行列及值记录在一个小规模的数组(稀疏数组)中,从而缩小程序的规模二维数组转稀疏数组的思路1.遍历原始二维数组,得到有效数据个数sum(即除去大部分数值相同数据剩下的数据个数)
2021-09-19 18:47:59
214
原创 概率论与数理统计——大数定律与中心极限定理
文章目录1.切比雪夫不等式2.大数定律1.切比雪夫不等式假设随机变量XXX具有数学期望EXEXEX及方差DXDXDX,则对任意的εεε>0,有 P{∣X−EX∣≥ε}≤DXε2P\{|X-EX|≥ε\}≤ \frac{DX}{ε^2}P{∣X−EX∣≥ε}≤ε2DX或者有时候也可以写成 P{∣X−EX∣<ε}≥DXε2P\{|X-EX|<ε\}≥ \frac{DX}{ε^2}P{∣X−EX∣<ε}≥ε2DX2.大数定律(1)切比雪夫大数定律如果
2021-09-19 18:46:59
626
原创 概率论与数理统计——随机变量的数字特征
文章目录数学期望收敛(复习)离散型随机变量的数学期望连续型随机变量的数学期望离散型随机变量函数的数学期望连续型随机变量函数的数学期望数学期望的性质方差方差的统一定义和简化公式方差的性质常见离散型分布的数字特征常见连续型分布的数字特征协方差与相关系数协方差相关系数二维正态分布的参数意义矩协方差矩阵数学期望收敛(复习)(1)收敛数列令{ana_nan}为一个数列,且A为一个固定的实数,如果对于任意给出的b>0,存在一个正整数N,使得对于任意n>N,有|ana_nan-A|<b恒
2021-09-12 11:56:50
875
1
原创 概率论与数理统计——多维随机变量及其分布
文章目录二维随机变量及其分布1.二维随机变量2.联合分布函数3.二维离散型随机变量4.二维连续型随机变量边缘分布1.边缘分布函数2.边缘分布律3.边缘概率密度二维随机变量及其分布1.二维随机变量设E是随机试验,样本空间Ω={ω},由X=X(ω),Y=Y(ω)构成的向量(X,Y)称为二维随机变量2.联合分布函数设(X,Y)是二维随机变量,x,y是两个任意实数,则称定义在平面上的二元函数P{X≤x,Y≤y}为(X,Y)的分布函数,或称为X和Y的联合分布函数,记作F(x,y),即
2021-09-12 11:55:59
1528
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人