自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 资源 (1)
  • 收藏
  • 关注

原创 基于Vivado的FPGA的开发流程(好多面试官都问了)

在开发项目之前,需要对任务进行需求分析,如对FPGA芯片的工作速率、器件的自身资源、成本、功耗等等。完成需求分析之后,就可以选择合适的设计方案(建议在vision上把项目的具体模块一一画出来)和器件了。

2023-11-10 14:43:02 381 1

原创 C++STL容器初识

是个类 插入insert 删除erase 查找find rfind替换replace 比较compare 获取[],at 拼接+= append获取字串substr 赋值 = assign。

2023-11-09 15:48:57 255 1

原创 账号丢失一年半,终于拿回来了

最优化算法和C++大概率不更了,因为研三准备毕业了,找的工作是关于FPGA开发的。所以,接下来我会往FPGA方面所学的一些知识进行总结和分享,希望大家能学到知识。

2023-11-09 15:22:24 151 1

原创 C实现栈和队列

一.栈1.栈的概念栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守==后进先出LIFO(Last In First Out)==的原则。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈。出数据也在栈顶。注意区分栈和栈:一个是数据结构中的栈,是一个数据结构。一个是操作系统中内存划分的一个区域,叫做栈,用来函数调用时,建立栈帧。2.栈实现的功能入栈,出栈(取栈顶

2022-05-17 21:14:14 202

原创 C实现带头双链表

目录一.结构二.test.c文件二.List.c三.List.h一.结构a.链表的三种类型,双向/单向b.带哨兵位头/不带哨兵位头c.循环/非循环 这3类特征之间可以随意组合,组合出多达8种链表。之前我们学着写过单向不带头非循环链表,它的结构简单,不足之处较多,我们了解它是为了给学习哈希桶、图的邻接表打下基础。今天我们要学习的带头双向循环链表:结构最复杂,一般用在单独存储数据。实际中使用的链表数据结构,都是带头双向循环链表。另外这个结构虽然结构...

2022-05-16 21:39:39 278

原创 C实现单链表

目录1.单链表的概念2.单链表的实现2.1头文件2.2test.c文件2.3单链表增删查改的实现3.总结 1.单链表的概念那么什么是链表呢?其实链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的 。简单来说就是自己定义了一个结构体构体,结构体里面有多个对象,其中常见的包括存储数据对象和结构体类型地址,(其实就是套娃,只要下一个结构体地址开辟完成后,让上一个在结构体对象里的结构体地址与刚开辟好的新节点地址相同就能实现..

2022-05-12 21:49:47 460

原创 顺序表代码

目录1.什么是线性表2.什么是顺序表2.1 教科书概念2.2顺序表的实现2.2.1基本思想2.2.2接口实现1.什么是线性表 线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串…线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储。2.什么是顺序表2.1 教科书...

2022-05-11 22:09:18 190

原创 C语言-复制带随机指针的链表

1.问题描述给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成,其中每个新节点的值都设为其对应的原节点的值。新节点的 next 指针和 random 指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。复制链表中的指针都不应指向原链表中的节点 。例如,如果原链表中有 X 和 Y 两个节点,其中 X.random -->

2022-04-18 20:36:14 627

原创 正交频分复用

1假设这是一个信道 总信道 2.然后被分成那么多的小块的子信道,其实子信道间应该留有保护间隔,为了防止其他信道造成的干扰,这里就不分开了,难画。变成总信道被分成很多个子信道之后就可叫做频分复用了子信道1 子信道2 子信道3 子信道4 子信道..... 3.那么什么是正交频分复用呢?假设子信道1要让很多个用户,如n个,同一时间同一频率通过进而传输数据...

2022-04-08 09:54:26 614

原创 DFP算法及其matlab实现

一.前沿 DFP算法是由Davidon提出的,经过Fletccher和powell改进,故称之为DFP算法。DFP算法也是拟牛顿矫正的一种,目前,它是求解无约束问题最有效的算法之一。其实吧,就是给定一个初始点,根据矫正矩阵和梯度求出下一步的搜索方向,再由Armijo搜索准则求出步长(Armijo准则前面已经简述,现在不再赘述),得到步长和搜索方向之后重新计算新的初始点,若在这个新的点的梯度足够小(就是下降的足够小,一般精度都会给出)时,我们就可以停止运算,输出这个点的值做为近似最优解。二.矫...

2021-11-17 18:50:36 8112 2

原创 BFGS算法及其matlab实现

一.前沿上一篇文章介绍了基于秩1的拟牛顿算法,紧接上文,这次我们介绍关于秩2的拟牛顿算法,即BFGS算法。为啥叫BFGS算法,是因为这个鬼算法是由Broyden、Fletcher、Goldforb和Shanno这四个大佬发明的,BFGS校正算法是目前最流行,也是最有效的拟牛顿校正。二.基本思想拟牛顿法的基本思想是把牛顿法中用到的Hess阵用一个Hk矩阵来代替。那么Hk是什么呢?Hk的三个特点如下:(1)Hk近似等于牛顿法中的Hess阵,这样可以保证拟牛顿发所产生的方向与牛顿反向近似,从...

2021-11-12 09:03:56 14195 16

原创 拟牛顿法及其matlab实现

一.前言 上上上篇文章介绍了牛顿法和修正牛顿法。想看的话可以往后翻。牛顿法有二阶的收敛速度,但Hess阵必须要正定,因为只有正定才能保证它的下降方向是正确的。虽然修正牛顿法克服了这个缺点,但是它的修正参数uk的选取很难,选得太大太小都会影响到算法的收敛速度。最重要的是,这两种方法都要用到Hess阵,计算量很大,所以都不实用。本文介绍的拟牛顿法很好的克服了这些缺点。二.拟牛顿法的基本思想 拟牛顿法的基本思想是把牛顿法中用到的Hess阵用一个Hk矩阵来代替。那么Hk是什么呢?Hk的三个特点如...

2021-11-05 17:37:01 10326 4

原创 共轭梯度法及其matlab程序

上一篇文章介绍了修正牛顿法,修正牛顿法的缺点是收敛速度一般,所以为了使算法既不使用Hess阵,也要保证它的收敛速度,本文介绍共轭梯度法。共轭梯度法有超线性的收敛速度,算法结构简单,容易编程,并且不用计算Hess阵的优点。下面介绍共轭梯度法的算法步骤。步0:确定精度e=(0~1),给定初始点x0,计算g0=f(x0),k=0步1:若||gk||<=e,停止运算,输出xk作为最优解步2:计算搜索方向dk:若k=0,dk=-gk若k>=1,dk= -gk+* 其中...

2021-11-04 20:57:08 21955 15

原创 修正牛顿法及其matlab实现

由上篇文章知道,牛顿法具有二阶收敛速度,收敛速度比较快,但是用这个算法的一个必要条件是,目标函数的Hess阵必须是正定的,否则难以保证他的下降方向是正确的,所以我们可以采用牛顿法与最速下降法结合,即修正牛顿法。修正牛顿法的基本原理是:当Hess阵正定时,采用牛顿方向作为搜素方向;若不正定,则采用最速下降法,即负梯度方向作为搜索方向。算法的步骤为:步0:确定终止误差e=(0~1),给定初始值,rho=(0~1),sigma=(0~0.5),给定初始值x0,令k=0步1:计算gk=f(xk)的值,若

2021-11-03 19:44:11 4843 4

原创 牛顿法的matlab实现

简介:牛顿法是用来求解无约束优化问题的,它的基本思想是用迭代点xk处的一阶导数和二阶导数对目标函数进行二次函数近似,然后把二次模型的极小点作为新的迭代点,不断重复这一过程,直至满足精度的近似极小点。这里有必要讲一下泰勒展开式的几何意义:泰勒公式的几何意义是利用多项式函数来逼近原函数,由于多项式函数可以任意次求导,易于计算,且便于求解极值或者判断函数的性质,因此可以通过泰勒公式获取函数的信息,同时,对于这种近似,必须提供误差分析,来提供近似的可靠性。基本牛顿法算法的步骤:步0:确定终止误差e=(0

2021-11-03 15:49:26 16470 5

原创 matlab实现最速下降法

最速下降法定义:沿负梯度方向进行搜索的算法(负梯度方向为最速下降方向)优化问题:算法流程1.取 x0,令k=0 ;2.求 xk 处 f(x) 的一个下降方向 dk ;3.一维搜索: ,4. 否则,转步骤2;这里 。例题求解:1.实现最速梯度下降法MATLAB关键几点1)建立符号表达式表达函数建立函数表达式可以使用matlab中的符号变量和符号表达式功能。如下示例,利用...

2021-11-03 10:22:10 24033 9

原创 蚁群算法解决路径优化问题

蚁群算法是一种用来在图中寻找优化路径(最小花费函数)的几率型算法。一.基本原理:1蚂蚁在行走过程中会释放一种称为“信息素”的物质,用来标识自己的行走路径。2在寻找食物的过程中,根据信息素的浓度选择行走的方向,并最终到达食物所在的地方。3信息素会随着时间的推移而逐渐挥发。二.算法的特点:1自组织,依据信息素,使蚂蚁从无序到有序2并行的算法,每只蚂蚁都是独立的,具有较强的全局搜索能力。3正反馈,最短路径依赖于信息素的堆积最经典的是旅行商问题的最优路径.

2021-10-19 10:49:04 9692 4

原创 二次插值法详细步骤及其matlab代码举例

基本思想:在搜索区间中不断使用二次多项式去近似目标函数,并逐步用插值多项式的极小点去逼近搜索问题(什么鬼?)其实就是模拟目标函数,求出模拟出来的函数的极小值近似等于目标函数极小值mini f(x) 区间[a,b] 精度e=0.3(自己设置)确定目标函数区间[a,b],精度e=0.3(就是迭代终止条件)计算f(a),f(b)的值,若1.f(a)<f(b),则计算f()的值,属于(a+b)/2,(a+b)/4,(a+b)/8......直到找到一个f(a)>f(),找...

2021-10-13 20:50:15 15112 4

原创 二分法与黄金分割法matlab代码

clc;clear;%%二分搜索法 mini f(x)=8x^3-2x^2-7x+3f=@(x)8*x^3-2*x^2-7*x+3;a=0;b=1;c=(a+b)/2;mimex=0.63;%%自己计算的实际最小值点e=0.1;while(b-a>0.3) x1=c-e; x2=c+e; if(f(x1)>f(x2)) a=x1; c=(a+b)/2; else b=x2; c=(a+b)/2; endendx=(a+b)/.

2021-10-12 18:58:14 3025 2

原创 2021-09-22

关于VS2019编译器 scanf函数报错的解决方法1.可以把scanf改成scanf_s,但是scanf_s同样也不太安全,建议不使用。2.最好用的办法就是在程序前面加上:#define_ CRT_SECURE_NO_DEPRECATE3.也可以在程序最前面加上:pragma warning(disable:4996)4.或者在新建项目的时候取消SDL检查就行。...

2021-09-22 20:55:05 93

C语言思维导图式自我总结

这个总结是用思维导图自己总结的,放在这里防止换电脑。

2022-05-11

空空如也

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

TA关注的人

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