自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C指针之初始化(三)

指针变量在使用之前必须被初始化,否则就可能发生意想不到的错误。而且关于指针初始化,不同的编译器给出的告警是不一样的,有些系统给出告警,而有些系统又不给。因此,指针虽然,但使用要谨慎。而且要是使用了动态分配空间的模式为指针做初始化,则使用结束后还需要手工释放空间,以节约内存空间。本文以C语言为主介绍了常见的指针变量初始化方法。

2022-11-29 23:06:47 1954 4

原创 C/C++指针之提高篇详解(二)

C/C++语言中引入了指针,使得程序能够直接访问内存地址,使得很多复杂的操作变得简单,同时也提高了程序的运行效率。指针即是地址,是通过指针变量来存储的。这就好比我们的教室,每个教室都有一个房间号,一个房间号也对应着一间教室,此处的教室就是固定的地址(指针),其地址是通过房间号(指针变量)来表示的。地址就是指针,而房间号就是指针变量。《C/C++指针入门详解(一)》一文中给出了指针的基础知识。本文给出了有关指针的更多应用场景及示例,例如函数指针、文件指针、更换数据类型、双指针等等。

2022-11-28 14:55:51 934

原创 C/C++指针入门详解(一)

指针是一个地址,这个地址不仅可以是变量的地址,也可以是其它数据结构的地址。为了方便调用这个地址,C/C++是通过指针变量来使用这个地址的。而我们常说的指针,其实在一定程度上说的是指针变量,但是我们必须清楚认识到指针和指针变量是有着严格的不同的,是两个完全不同的概念。

2022-11-27 10:34:30 1912 1

原创 MATLAB程序设计之循环结构入门详解

Matlab可以类似C/C++语言或者Python语言一样可以编写程序以完成某些功能。Matlab程序包含三大程序结构,分别是顺序结构、选择结构和循环结构。本文主要给出了Matlab程序的循环结构的语法规则及相关的Demo。Matlab程序结构之循环结构主要包括for循环和while循环。下面将逐一进行讲解。

2022-11-19 22:48:58 12303

原创 C语言之#define用法入门详解

在C语言中,常量是使用频率很高的一个量。常量是指在程序运行过程中,其值不能被改变的量。常量常使用#define来定义。使用#define定义的常量也称为符号常量,可以提高程序的运行效率。

2022-11-16 23:00:23 37060 4

原创 C语言之位域(位段)入门详解

信息处理中,有些信息在存储时,并不需要占用一个完整的字节,而只需占一个或几个比特位。例如在存放一个开关量时,只有0和1 两种状态, 用一位二进制位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的比特位划分为几个不同的区域, 并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。 这样就可以把几个不同的对象用一个字节的二进制位域来表示。位域在本质上就是一种结构类型, 不过其成员是按二进制位分配的。

2022-11-13 23:00:49 5204 6

原创 栈(stack)入门详解之C语言版

栈(Stack):是一种受限的线性表,即限制在表的一端进行插入和删除操作。栈也称为后进先出LIFO (Last In First Out)或先进后出FILO (First In Last Out)线性表。栈顶(top):允许进行插入、删除操作的一端称为栈的栈顶(top),也称为表尾。栈底(bottom):固定不动的一端,称为栈底(bottom),也称为表头。

2022-11-12 22:45:36 7265 2

原创 MATLAB非矩形区域上曲面的绘制

Matlab提供了mesh和surf等绘制曲面图形的命令,在使用这些命令绘图的过程中,经常需要用meshgrid生成网格坐标矩阵,该命令要求横坐标和纵坐标的取值范围都是常数,这就导致了利用mesh和surf等命令绘制的曲面都是矩形区域内的图形。实际应用中经常需要绘制非矩形区域内的曲面。Matlab提供fmesh、fsurf、ezmesh和ezsurf等命令来绘制非矩形区域内的图形,但是这要求函数表达式必须已知。事实上,也可以利用mesh和surf等绘制非矩形区域内的曲面,只需给出非矩形区域内的坐标网格矩阵。

2022-11-03 21:30:18 4057 2

原创 MATLAB二元隐函数绘图命令fimplicit3详解

fimplicit3功能是绘制二元隐函数的曲面图形。类似于一元函数分为显函数和隐函数,二元函数也有显函数和隐函数之分。形如z=f(x,y)的二元函数称为显函数,而由三元方程f(x,y,z)=0确定的二元函数称为隐函数。二元函数对应的几何图形是空间曲面,也称为三维曲面。对于二元显函数绘图,可以使用matlab命令mesh、fmesh、surf和fsurf以及相应的扩展函数来实现。对于隐函数,可以使用fimplicit3绘制其曲面图形。

2022-10-26 21:27:52 6495 3

原创 MATLAB函数mesh与surf等绘制三维曲面入门

三维曲面在实际应用中被广泛使用,能够更好的展示三维空间中曲面,以实现三维数据的可视化。Matlab软件中可以使用mesh、fmesh、surf和fsurf等函数来实现三维曲面的绘图。其中mesh和fmesh用来绘制三维网格曲面图,surf和fsurf绘制三维曲面图。本文给出了上述函数的基本用法。

2022-10-23 20:30:03 42647 5

原创 单链表的增删改查操作详解之C语言版

单链表在应用中经常用到增加新结点、删除结点、修改结点、查找结点等操作,本文针对上述基本操作做了简单汇总,并给出了详细的算法。

2022-10-22 21:58:35 2723

原创 创建单链表详解之C语言版

链表是用一组任意的存储单元存储数据元素。如果是存储线性表中的元素,则称为线性链表。链表中的结点地址在内存中可以是连续的,也可以是不连续的,甚至是零散分布在内存中的任意位置上的。因此链表中结点的逻辑顺序和物理顺序不一定相同。如果链表的结点中只有一个指针域,则该链表称为单链表,这也是常用的线性表的存储模式。单链表适合于比较频繁的增加或者删除线性表中元素,不需要移动元素。

2022-10-21 23:21:58 6313 3

原创 霍夫曼(Huffman)编码算法详解之C语言版

霍夫曼(Huffman)树是一类带权路径长度最短的二叉树树。Huffman树的一个非常重要的应用就是进行Huffman编码以得到0-1码流进行快速传输。在电报收发等数据通讯中,常需要将传送的文字转换成由二进制字符0、1组成的字符串来传输。为了使收发的速度提高,就要求电文编码要尽可能地短。此外,要设计长短不等的编码,还必须保证任意字符的编码都不是另一个字符编码的前缀,目的是解决译码的二义性。

2022-10-19 10:31:14 10187 7

原创 霍夫曼(Huffman)树创建算法详解之C语言版

霍夫曼(Huffman)树又称最优树,是一类带权路径长度最短的树,在众多领域中有着广泛的应用,尤其是信息编码。Huffman树的主要用处就是对数据进行编码,得到0-1码流,以实现快速传输,此编码也称为Huffman编码。本文主要给出了Huffman树的创建过程及相应的算法实现。

2022-10-17 16:18:58 1634

原创 哈希(Hash)查找算法详解之C语言版

哈希查找是一种快速查找算法,该算法不需要对关键字进行比较,而是以关键字为自变量,以该关键字在存储空间中的地址为因变量,建立某种函数关系,称为哈希函数,这样在查找某一关键字的时候,就可以通过哈希函数直接得到其地址,有效的提高了查找效率。选取哈希函数及基本原则主要有:计算函数所需时间、关键字的长度、哈希表长度(哈希地址范围)、关键字分布情况、记录的查找频率等。哈希函数的构造有多种,常见的有“直接定址法”、“数字分析法”、“平方取中法”、“折叠法”、“除留余数法”、“随机数法”等。

2022-10-16 12:20:36 15427 6

原创 平衡二叉树(AVL)平衡化旋转详解

平衡二叉树的全称是平衡二叉排序树,也称为AVL树,这是因为该树结构是由Adelson-Velskii和Landis在1963年提出的。AVL树是BST树的改进结构,使得平均查找长度得到了减少,进而提高了查找的效率。

2022-10-09 18:18:21 4016 3

原创 二叉排序树(BST)删除结点算法详解之C语言版

在二叉排序树上删除某个结点,后的二叉树仍旧是一棵二叉排序树。删除结点主要包含了以下四种情形:1) 删除叶子结点2) 删除只有左子树的结点3) 删除只有右子树的结点4) 删除左右子树均不空的结点**针对第一种情形,直接删除树叶结点即可;针对第二种情形,待删除结点的 左子树 树根替代待删除的结点即可;针对第三种情形,待删除结点的 右子树 树根替代待删除的结点即可;针对第四种情形,需要找到待删除结点的左子树最右侧的结点s,用其代替删除的结点即可。

2022-10-05 14:45:20 6889 1

原创 二叉排序树(BST)查找算法详解之C语言版

在二叉排序树上查找某个结点,其实就是遍历二叉树。由于二叉排序树上的结点是有序的,因此不需要使用普通二叉树的遍历算法,其有自己一套简单的遍历算法,即从树根开始进行遍历,如果待查找元素小于树根元素,则向左遍历,否则向右遍历,如果相等结束遍历。

2022-10-04 12:05:09 3422

原创 二叉排序树(BST)创建详解之C语言版

二叉排序树(Binary Sort Tree或 Binary Search Tree)又称二叉查找树,可以用来实现数据的快速查找,也方便数据的插入、删除等工作,因此适用于数据的动态查找。

2022-10-03 19:37:59 6788

原创 直接插入排序算法之表插入排序详解

插入排序属于稳定排序法,是一种常用的排序算法。直接插入排序算法可以利用静态数组来实现,也可以使用静态链表或者单链表来实现。本文给出了直接插入算法的静态链表实现方法,即表插入排序算法。基于静态链表实现直接插入排序,就是把待排序的数组放入静态链表中,通过修改静态链表中的索引域的值来给出排序结果。该排序方法不改变原数组中元素的位置,只是在索引域中给出其在排序表中位置,因此相比较于直接插入排序算法,本算法不需要移动元素。

2022-09-27 22:36:54 3022 1

原创 基于单链表实现直接插入排序算法详解

插入排序属于稳定排序法,是一种常用的排序算法。直接插入排序算法可以利用静态数组来实现,也可以使用静态链表或者单链表来实现。本文给出了直接插入算法的单链表实现方法。

2022-09-26 21:34:14 7896 1

原创 基数(桶)排序算法详解之C语言版

基数排序算法又称桶排序,是一种原理简单实现相对麻烦一点的算法。基数排序属于稳定排序法,适用于数值比较大的数据之间的排序。常见的内部排序算法中都使用到了元素之间的比较大小,而基数排序算法不涉及元素之间的比较,而是根据基数将数据存放到相应的“桶”里,经过多趟这样的存放过程,也就是一个渐进排序过程,就可以实现对一组散乱数据进行排序。总趟数是数组中位数最多的那个元素的位数。其实读到这里,大家是不是有一种很熟悉的感觉,没错,这跟创建Hash(散列)表的原理类似。

2022-09-25 20:00:24 2749

原创 折半插入排序算法详解之C语言版

折半插入排序是插入排序方法中一种,相比较与直接插入排序算法,减少了排序过程中比较次数,也是一种常用的排序算法。折半插入排序算法基本原理是将折半查找方法与直接插入排序方法相结合,也就是在每一次插入新元素时,利用折半查找方法找到其待插入的位置。

2022-09-24 23:14:04 8347 1

原创 Shell(希尔)排序算法详解之C语言版

Shell排序算法是插入排序算法的一种改进算法,即分组插入排序算法,是不稳定排序算法。其基本原理就是将初始数组按照某一规则分成多个子数组,在每个子数组内进行插入排序,经过多趟这样的分组排序后,即可得到排好序的数组。为了方便实现分组,引入增量d,即将距离为d的元素组成一个新的子数组,这样也是将原数组分割成d个子数组,在组内进行直接插入排序。当完成一趟排序之后,修改d的值,重复上述操作,直到d取值是1的时候结束整个排序过程。

2022-09-24 14:35:50 1949 2

原创 归并排序算法详解(方法二)之C语言版

归并排序是一种常用的排序算法,属于稳定排序法。归并排序就是将两个已经分别排好序的数组A和B合并为一个排好序的数组C。如果数组散乱的数组,则需要将数组元素分别按照长度为d=2^n,n=0,1,2,3,…,进行分组,然后对相邻的两组进行归并排序。

2022-09-23 21:00:55 1120 1

原创 归并排序算法详解(方法一)之C语言版

归并排序是一种常用的排序算法,属于稳定排序法。归并排序就是将两个已经分别排好序的数组A和B合并为一个排好序的数组C。如果数组散乱的,则将数组元素分别按照长度为d=2^n,n=0,1,2,3,...,进行分组,然后对相邻的两组进行归并排序。具体过程是首先取长度d=1,即将数组的每个元素作为一个子数组,然后把相邻的两个子数组作为一对进行归并排序,直到整个数组排序完成。之后依次取长度d=2,4,8,...,即把相邻的两个(4,8,...)元素作为一个子数组,再对两个相邻的子数组进行归并排序,直到整个数组排序完成。

2022-09-23 13:42:26 2619 1

原创 冒泡排序算法详解之C语言版

冒泡排序是一种常用的排序算法,属于稳定排序法,其时间复杂度为O(n^2)。冒泡排序法的原理就是从前向后依次比较相邻两个元素的大小,大元素后沉,类似于水中的泡泡逐步上浮的过程,随着泡泡逐渐接近水面,水中压强逐渐减小,水泡体积逐渐增大,因此成为冒泡排序。

2022-09-19 20:37:09 45130 6

原创 选择排序算法详解之C语言版

选择排序算法原理就是首先固定一个位置i,用该位置上的元素data与后面的元素data_j依次比较大小。以从小到大排序为例,如果data > data_j,则交换这两个数据,直到位置i之后的所有元素都小于该位置上的元素结束。之后执行i++即可完成该数组的排序。

2022-09-18 22:38:20 7194 4

原创 直接插入排序算法详解之C语言版

插入排序属于稳定排序法,是一种常用的排序算法。其基本原理就是把一个数据插入到一组已经排好序的数列中,得到仍是有序的数列。

2022-09-17 22:33:29 2254 1

原创 收获荣誉证书,显摆一下

笔耕不辍荣誉证书

2022-08-25 00:01:45 188

原创 Matlab彩色图像卷积的数学原理及纯手工实现

在图像处理中,不论是提取图像边缘特征,还是尺度空间变换,亦或者目前大火的深度学习,图像卷积都是非常重要的基础工作。卷积从整体上说是卷积,从局部上说其实就是内积。卷积不论在数学上还是信号处理中都有非常重要的应用,主要目的是用来做图像滤波、特征提取和多尺度分解等。可以这么说,不会卷积就是不会图像处理。本文给出了图像卷积的数学原理及Matlab手工实现,此外还给出Matlab内部函数imfilter的用法。

2022-08-24 23:48:11 5996 2

原创 Matlab图像特征提取的数学原理及实现

图像特征不论是对传统的图像处理,还是机器学习,都具有不可替代的地位和作用。图像特征其实就是可以用来刻画图像的像素集,这些像素和周围像素的变化幅度比较大。例如当你 走在路上遇到了一个熟人,你是如何判断对方是你的熟人呢?其实在很多情况下你是看脸的,对,就是看脸,看脸的轮廓、鼻子、眼睛等,而这些信息就是图像的特征,也称为图像的边缘特征。这些所谓的变化幅度比较大的像素,其实也就是变化率的绝对值比较大的像素,而大家都熟知变化率其实就是导数。本文从图像特征的数学原理出发,详解了基于matlab的图像特征提取的数学原理和

2022-08-24 11:40:04 10783 1

原创 Matlab图像水平方向错切变换的数学原理及实现

图像的几何变换在图像处理中被经常使用,其中图像错切变换也是常用的图像变换。图像错切错切变换包括水平方向错切变换和竖直方向错切变换,本文给出了灰度图像和彩色图像的水平方向错切变换的数学原理及matlab实现。

2022-08-22 20:44:58 2681

原创 Python图像竖直方向错切变换数学原理及实现

图像错切变换属于图像的几何变换。图像错切错切变换包括水平方向错切变换和竖直方向错切变换。水平方向错切就相当于有一摞书,保持高度不变的情况下,从上层到下层,整体按照一定的比例(其实就是斜率)向左侧或者右侧移动。而竖直方向则可以看做是水平方向旋转了90°的结果而已。

2022-08-22 09:44:31 1319 1

原创 Python图像水平方向错切变换数学原理及实现

图像的几何变换在图像处理中被经常使用,其中图像错切变换也是常用的图像变换。图像错切错切变换包括水平方向错切变换和竖直方向错切变换,其数学原理很简单,就是简单的矩阵乘法。本文给出了图像水平方向错切变换的Python详细实现过程(纯手工)。

2022-08-21 22:19:46 1210

原创 Python彩色图像旋转+平移变换数学原理及实现

图像的几何变换在图像处理中被经常使用,其中图像旋转又是使用频率很高的变换,不仅应用于普通的图像的处理中,也会用于机器学习中的图像数据增强。图像旋转的数学原理很简单,就是简单的矩阵乘法。本文给出了图像旋转的Python详细实现过程(纯手工),此外也给出了python内嵌函数roate的用法。

2022-08-21 19:43:00 3001

原创 Matlab彩色图像旋转的数学原理及实现

图像的几何变换在图像处理中被经常使用,其中图像旋转又是使用频率很高的变换,不仅应用于普通的图像的处理中,也会用于机器学习中的图像数据增强。图像旋转的数学原理很简单,就是简单的矩阵乘法。

2022-08-20 21:47:17 7317 1

原创 Matlab绘制圆饼统计图pie的用法详解

在做数据可视化过程中,圆饼统计图因其直观效果好而被广泛采用。Matlab提供了pie和pie3来绘制圆饼统计图。为了让圆饼统计图显示的显示信息更丰富,可以增加某一块的分离突出显示,也可以显示数据项的标识符,或者突出显示某个数据项的标识符。...

2022-08-11 19:10:11 9753

原创 Matlab矩阵(数组)元素过滤常见方法详解

在使用Matlab矩阵或者数组时,有时需要对部分元素进行过滤,也就是把满足某些条件的元素替换为其它数据。本文针对矩阵(数组)元素过滤及应用给出了几种比较简单的方法。

2022-08-10 13:27:14 9955 1

原创 Matlab符号函数的生成及求符号函数的函数值

符号函数是Matlab的一个非常重要的功能,可以用来表示数学上的函数,同时也是进行数值计算。创建符号函数的方法有多种,本文给出了四种生成符号函数的方法及求符号函数函数值的方法。

2022-08-09 15:12:23 17548 2

空空如也

空空如也

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

TA关注的人

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