- 博客(192)
- 资源 (10)
- 收藏
- 关注
原创 matlab代码--卷积神经网络的手写数字识别
卷积神经网络(Convolutional Neural Network, CNN)是一种深度学习的算法,在图像和视频识别、图像分类、自然语言处理等领域有着广泛的应用。CNN的基本结构包括输入层、卷积层、池化层(Pooling Layer)、全连接层(Fully Connected Layer)和输出层。其中,卷积层通过一系列可学习的滤波器(或称核)扫描输入数据,旨在检测特定的局部特征。这些滤波器能够自动学习并提取图像中的边缘、纹理和形状等低层次特征,以及更复杂的高层次特征。
2024-11-27 21:55:45
1364
原创 matlab代码--基于和积算法的LDPC译码研究
本文档的目的是详细给出和积算法(Sum-Product Algorithm)的原理算法的推导及实现方法,并对LDPC码进行译码。在未编码的情况下,译码的误比特率较高。经过编码之后,译码的误比特率降低。基于和积算法的LDPC码的译码方法可以提高译码的精度。
2024-11-27 21:20:27
345
原创 基于maltba GUI的数字信号处理实验平台--附matlab代码实现
通过设计一个基于MATLAB的数字信号处理实验平台,以提供一个直观、易用的界面,以便用户能够方便地进行数字信号处理相关实验和研究。通过该平台,用户可以轻松加载和处理信号数据,应用各种数字信号处理算法,并实时观察和分析处理结果。本文首先介绍了MATLAB编程语言和GUI工具进行界面开发的步骤,然后详细阐述了平台的总体设计思路、功能模块划分以及GUI界面的实现过程。
2024-11-27 20:41:43
286
原创 c++11 线程池
一般采用master-work进程模型。master掌控work生死。大部分工作进程之间没有数据交互,各种独立处理事务。执行队列从任务队列里面取 任务去执行就行了。池技术:解决资源频繁创建和释放带来的花销。模块之间需要交互,强数据交互可以考虑多线程。2 任务队列,插入任务的时候是异步的。更高的健壮性,某个进程挂了不影响整体。1 多个线程(执行队列)采用多进程:Nginx。采用多线程:redis。
2024-11-15 21:13:57
128
原创 linux c 语言回调函数学习
网上看到的最多的一句话便是:回调函数 就是函数指针的一种用法,将回调函数指针作为另一个函数的参数。%整型指针%函数指针/* 方法1 *//* 方法2 */上例定义了一个指向返回值为 void 类型。
2024-11-15 21:13:36
454
原创 matlab代码--基于matlabLDPC-和积译码系统
一个码长为n、信息位个数为k的线性分组码(n,k)可以由一个生成矩阵 来定义,信息序列 通过G被映射到码字X=S.G。线性分组码也可以由一个校验矩阵 来描述。校验矩阵的每一行表示一个校验约束 ,其中所有的非零元素对应的码元变量 构成一个校验集,用一个校验方程表示:校验矩阵的每一列表示一个码变量参与的校验约束,当列元素不为零时,表示该码元变量参与了该行的校验约束。LDPC码是一种线性分组码,它的名字来缘于其检验矩阵的稀疏性,即检验矩阵中只有数量很少的元素为“1”,大部分为“0”。
2024-02-22 23:05:05
469
原创 matlab代码--基于注水法的MIMO信道容量实现
MIMO的信道容量以及实现大致理论就是利用拉格朗日乘子法,求解信道容量的最大化问题,得到的解形如往水池中注水的形式,最后根据公式敲代码即可。
2024-02-18 17:03:23
878
原创 matlab代码--基于stbc编码的MIMO-OFDM系统的误码率分析
空时分组编码STBC(Space Time Block Coding)用在无线通信中传输一个数据流的多个拷贝。通过许多天线来产生数据的多种接收版本,提高数据传输的可靠性。接收机接收到的数据拷贝中,存在一些比其它拷贝“更好”的拷贝。而这种冗余导致有更高机会使用一个或更多接收到数据拷贝来正确的解码接收到的数据。实际上,STBC联合所有接收到的信号的拷贝以一种最佳的方式从它们中尽可能地吸取更多有用的数据。
2024-02-18 14:40:34
1043
1
原创 matlab代码--汉明码通过不同信道的误码率分析
汉明码是在原数据中的一些固定位置,插入一个0(或1),以进行奇(或偶)校验位,虽然使原数据变长,但可使其拥有纠错能力。能侦测并更正一个比特的错误;若有两个比特出错,则只能侦测,不能更正;若有三个或更多的比特出错,则不能侦测,更不能更正。
2024-02-18 14:13:30
1213
原创 matlab代码--卷积码通过不同信道的误码率分析
在卷积码的编码过程中,对输入信息比特进行分组编码,每个码组的编码输出比特不仅与该分组的信息比特有关,还与前面时刻的其他分组的信息比特有关。同样,在卷积码的译码过程中,不仅从当前时刻收到的分组中获取译码信息,还要从前后关联的分组中提取相关信息。正是由于在卷积码的编码过程中充分利用了各组的相关性,使得卷积码具有相当好的性能增益
2024-02-18 11:11:29
1360
原创 tcp通信 代码框架
在初入tcp通信时,深感调用头文件与函数之多,难以记住。本文目的旨在提炼出一个框架(里面包含很多模块),针对每个模块,自己实现的时候可以去百度查找对应对函数即可。
2022-10-25 11:06:39
896
转载 #ifndef, #define, #endif 理解
使用#ifndef可以避免下面这种错误如果在h文件中定义了全局变量,一个c文件包含同一个h文件多次,如果不加#ifndef宏定义,会出现变量重复定义的错误;而在c++语言中,#ifdef的作用域只是在单个文件中。所以如果h文件里定义了全局变量,即使采用#ifdef宏定义,多个c文件包含同一个h文件还是会出现全局变量重定义的错误。在c语言中,对同一个变量或者函数进行多次声明是不会报错的。所以如果h文件里只是进行了声明工作,即使不使用#ifndef宏定义,多个c文件包含同一个h文件也不会报错。...
2022-07-19 09:45:06
809
原创 typora+picgo+gitee 打造用于各类博客的markdown源代码
typora+picgo+gitee 打造用于各类博客的markdown源代码文章目录typora+picgo+gitee 打造用于各类博客的markdown源代码前言1.1创建gitee仓库1.2 picgo安装配置1.3.typore安装前言打算采用typora写好的markdown语法,直接复制到csdn等其他平台上,为了防止直接复制源代码导致图片无法显示的问题,故有了以下配置。1.1创建gitee仓库配置gitee的目的是,有时在其他博客发现图片打不开,是因为本地文件无法在线显示,我们采
2021-11-18 21:40:41
340
1
原创 无线通信中的优化问题+matlab中cvx的使用心得
文章目录前言1.cvx使用常见小tips1.1 函数与约束的凹凸性1.2 CVX处理数据的精度1.3 CVX中常用的替换函数1.4 cvx查找可行解2.常见的优化问题形式2.1.以最大化多用户 的 和 速率的形式2.2.以最大化最小公平性问题的形式2.3.以最小化总发射功率的形式后记前言 学习期间主要做的是无线通信领域的资源分配问题,特别针对的是类似香农信道容量的 log 形式的优化问题的仿真,有射频通信的,也有无线光通信的。在使用cvx求解的过程中也有一点儿心得体会,在这里记录下来和大家交流探讨
2021-11-18 18:23:21
31935
121
原创 简洁的简历模板_tex版本_面向秋招
文章目录前言1. 简历效果1.1 不带照片1.2带照片2. 资源下载链接3. 编译方法3.1本地编译3.2在线编译4 简单的tex语法前言秋招结束,总共拿到了近20个offer,最后权衡之下决定回老家,就不去一线卷了,剩下的时间打算好好做做秋招总结。今天这篇文章分享一个我秋招使用的,比较简洁的简历tex模板,不同于word模板要去调整图片和文字位置,用tex编译出的版本,排版固定且优美(个人感觉),适合找算法和开发人员的简历。1. 简历效果1.1 不带照片1.2带照片感悟:个人比较推荐第一种
2021-11-05 19:16:03
1489
1
原创 基于TCP的大文件传输c语言项目
功能实现:用户登录文件上传,下载断点续传,秒传创建数据库:采用mysql,新建三个数据库loginUser数据库,表为user,用于保存用户名和密码,用于登录匹配。user 表 create table user(id int(11) primary key AUTO_INCREMENT ,name varchar(20),passwd varchar(20));md5数据库,表为md5table,用于存储文件信息:(文件名,md5值,文件属于哪个用户,文件完整标志位)因为我们考虑到
2021-08-30 14:56:49
3946
4
原创 Linux IO复用技术与零拷贝
前言:1.内核空间和用户空间 虚拟内存被操作系统划分成两块:内核空间和用户空间,内核空间是内核代码运行的地方,用户空间是用户程序代码运行的地方。当进程运行在内核空间时就处于内核态,当进程运行在用户空间时就处于用户态。 32位inux虚拟地址空间划分如下:划分原因如下:安全:内核有控制和分配所有硬件资源的权限,而对于普通应用程序来说,这是不必要的,也是不安全的。划分使得普通程序的错误不会影响整个系统的稳定性。权限问题:内核空间的代码主要管理各种底层资源,而用户空间的代码主要实现业务逻辑。所
2021-08-25 21:32:15
582
4
原创 基于c++的数据库连接池 的实现与理解
文章目录前言:1.项目目的前言:为了加深对c++多线程和mysql的理解,为了做了这个小型项目。代码参考了github上和CSDN及B站上很多人的讲解。做完之后发现这个项目“麻雀虽小五脏俱全”,特此记录下自己的理解和编程过程。1.项目目的在高并发的情况避免频繁的向数据库申请资源,释放资源带来性能损耗。...
2021-07-24 13:42:55
1523
9
原创 c++ 多线程编程总结
前言:并发:两个或者多个任务同时进行。对于单核cpu而言,并发是假象,实际上在某一时刻只能执行一个任务,由操作系统调度。每秒进行多次的任务切换,即:上下文切换,需要时间开销–因为操作系统需要保存切换时的各种状态,执行的进度等等信息,切换回来之后需要恢复。多余多核cpu,能够真正同时执行多个任务,即硬件上的并发。进程:一个可执行程序运行起来后,产生了一个进程。线程:理解为一条代码的执行道路,可以有多条。线程并不是越多越好,每个线程都需要一个独立的堆栈空间(1M),且线程切换耗时。并发的实现方式:
2021-07-23 15:14:50
830
原创 华为机试 放苹果
题解:动态规划采用dp[i][j] 表示 i个苹果放入j个盘子的不同分法数。状态转移:我们首先要明确一点,j个苹果放入i个盘中中,总共有下列两种情况:盘子全部放满至少有一个盘子不放(为空)一.当i>j 时,也就是苹果数多于盘子数时。1)考虑盘子全部放满的情况,那么我们可以先每个盘子都放入一个苹果占位置。则剩下dp[i-j][j] 。等价于求解把i-j 个苹果放入j个盘子。2)考虑至少有一个盘子不放的情况,也就相当于求解dp[i][j-1]。由上我们可以得到i>j 时的状.
2021-07-17 16:52:17
358
2
原创 leetcode 两数之和与三数之和
1两数之和注意图中圈出来的特殊情况。思路1:排序后,采用双指针可以轻松求出这两个数的值。但是,题目要求的是满足条件的下标而不是两个数值。故,我们可以复制一下原数组,对新数组排序后,双指针拿到两个目标数字。再去元素组中一一对比获得目标数字在原数组中的下标。class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { vector<int> ne
2021-07-17 15:11:21
148
原创 leetcode234 回文链表
解题思路:只要把链表从中间断开,再把其中一个链表反转,就可以依次比较节点值是否相同。1.寻找链表中间节点,可采用快慢指针,快指针是慢指针速度的两倍,那么,当快指针走到尾部时,慢指针走到链表中间。2. 反转其中一个链表,之间做过。class Solution {public: ListNode* reverse_list(ListNode* head) { ListNode* pre = nullptr; ListNode* cur = head;.
2021-07-16 21:41:08
108
原创 剑指offer-刷题总结
1.前言 大概过了一两遍剑指offer,思路基本上是复制网上大佬的思想。希望面试的时候能自己默写出来把,现在把剑指offer的题型和结题思路总结一下,便于后序复习和进阶。2.1 链表题剑指offer_T3_从尾到头打印链表_C++思路1:利用栈先入后出的特性,顺序存入,倒序打印思路2:利用两个节点(双指针)原地反转后再打印出来思路3:利用stl的reverse() 函数实现反转后再打印JZ14 链表中倒数最后k个结点思路1:可以直接暴力遍历,如果已知链表的长度,则顺序遍历的长度就已知了思
2021-07-16 13:20:03
697
原创 leetcode上关于两道链表反转题的解法
链表题,图解是行之有效的方法。本博客总结迭代法,也就是原地反转。1.反转整个链表如图所示,我们定义两个指针指向该链表。其中一个前驱指针pre初始化为空节点,它的next指针指向head(相当于虚拟了一个头节点)。另外一个当前指针cur初始化为头节点。那么,我们要使得1->2 变为2->1。就是使得 cur->nexrt = pre。但是先这样操作会使得2这个节点丢失了。所以我们要定义一个临时节点temp把2保存下来,也就是`‘ListNode * temp 。操作完之后如下图:
2021-07-16 11:36:16
333
2
原创 leetcode上两道关于回文字符串的题解
这两道题都是关于回文串的题目。之前在语言入门的时候,我们做过 判断一个字符串是否回文,我们知道可以用双指针的方法解法:即左右夹逼,往中间靠拢,找出s[i]!=s[j]则返回false。做了这两道题之后,参考别人的解答,发现除了“左右往中间靠拢”的方法外,还可以使用“中间往两边发散”的方法。如下面两道题题目一解法1 暴力搜索看到题目很直接的思路,遍历搜索出所有字串,依次判断是否为回文串即可。双重循环,外层控制字符串起始位置,内层循环遍历字符串终止位置。class Solution {publ
2021-07-15 12:57:12
277
原创 买卖股票的最佳时机 III (最多交易2次)
分析,这里不同于其他几道题,有交易次数的限制。对于任意一天 i,我们有五种可选择的状态,(因为题目限制了买入之前必须卖出)不操作只买入一次买一次,卖一次买一次,卖一次,再买一次买一次,卖一次,再买一次,再卖一次。因此有:1.定义dp数组:下标从0开始dp[i][0] 表示第i天交易完之后 ,不操作的最大利润。dp[i][1] 表示第i天交易完之后 ,只买入一次的最大利润。dp[i][2] 表示第i天交易完之后 ,买一次,卖一次的最大利润。dp[i][3] 表示第i天交易完之后 .
2021-07-07 21:43:51
682
1
原创 714. 买卖股票的最佳时机含手续费
分析,同前几题的分析类似,dp状态定义都相同,只是状态转移的时候略有不同。1.定义dp数组:下标从0开始dp[i][0] 表示第i天交易完之后 ,手里没有股票的最大利润。dp[i][1] 表示第i天交易完之后 ,手里有股票的最大利润。则我们要的结果为:第n-1天交易完后,手里没有股票的最大利润。2.状态转移方程:一:dp[i][0] = max(dp[i-1][0],dp[i-1][1]+price[i]-fee)解释:第i天交易完后,手里没有股票。可能的情况有:第i-1天就没有.
2021-07-07 17:29:04
111
原创 309. 最佳买卖股票时机含冷冻期
分析:这题同前题类似,只是加了一个冷冻期为1天。1.dp数组定义dp[i][0] 表示第i天交易完后,有股票的最大收益。dp[i][1] 表示第i天交易完后,没股票,且在冷冻期的最大收益。dp[i][2] 表示第i天交易完后,没股票,不在冷冻期的最大收益。2.状态转移方程dp[i][0] = max(dp[i-1][0],dp[i-1][2]-price[i])分析:dp[i][0] 可能由下面两个状态转移而来:第i-1天仍有股票。第i-1天没有股票,且不在冷冻期,第i天买入了股票.
2021-07-05 22:35:19
100
原创 122. 买卖股票的最佳时机 II (可交易多次)
这题和前一题的不同之处在于这里可以多次交易(一次交易是指一次买入和卖出完成)。1.定义dp数组:下标从0开始dp[i][0] 表示第i天交易完之后 ,手里没有股票的最大利润。dp[i][1] 表示第i天交易完之后 ,手里有股票的最大利润。则我们要的结果为:第n-1天交易完后,手里没有股票的最大利润。2.状态转移方程:一:dp[i][0] = max(dp[i-1][0],dp[i-1][1]+price[i])解释:第i天交易完后,手里没有股票。可能的情况有:第i-1天就没有股票,
2021-07-05 21:54:19
199
原创 剑指 Offer 63. 股票的最大利润(只交易一次)
定义dp数组:下标从0开始dp[i][0] 表示第i天交易完之后 ,手里没有股票的最大利润。dp[i][1] 表示第i天交易完之后 ,手里有股票的最大利润。则我们要的结果为:第n-1天交易完后,手里没有股票的最大利润。状态转移方程:一:dp[i][0] = max(dp[i-1][0],dp[i-1][1]+price[i])解释:第i天交易完后,手里没有股票。可能的情况有:第i-1天就没有股票,所哟为:dp[i-1][0]第i-1天有股票,但是第i天把它卖了。所以为:dp[i-.
2021-07-05 21:36:59
135
原创 2021-07-05
dp数组定义:dp[i] 表示以下标为i结尾的连续子串的最大和那么,我们要求的答案便是所有以i结尾的字串的最大和中,最大的那一个。状态转移:dp[i] = max(dp[i-1]+num[i],num[i])解释:若dp[i-1]<0,那么对dp[i]产生了负面影响,我们不要前面的dp[i-1],只需要当前的num[i]。对应的就是max(dp[i-1]+num[i],num[i]), 即取(dp[i-1]+num[i],num[i])中较大的那一个。初始情况:dp[0] = num.
2021-07-05 21:04:02
366
原创 213. 打家劫舍 (环形)
定义dp数组dp[i]表示打劫前 下标为i个房子获得的最高金钱。状态转移方程对房子i,有抢或者不抢两种选择。抢的话,那么说明准备抢这栋房子前,获得的钱数为dp[i-2],抢完后,获得的最高金钱为dp[i-2]+nums[i]。不抢的话,说明此时的获得的最大钱数为dp[i-1]。所以取两种选择的最大值:dp[i] = max(dp[i-2]+nums[i],dp[i-1])。同时:若打劫下标为0的房子,则不能打劫最后一个房子。若打劫最后一个房子,则不能打劫下标为0的房子。求出着两种选择.
2021-07-05 16:44:23
678
原创 198. 打家劫舍 (数组)
定义dp数组dp[i]表示打劫前 下标为i个房子获得的最高金钱。状态转移方程对房子i,有抢或者不抢两种选择。抢的话,那么说明准备抢这栋房子前,获得的钱数为dp[i-2],抢完后,获得的最高金钱为dp[i-2]+nums[i]。不抢的话,说明此时的获得的最大钱数为dp[i-1]。所以取两种选择的最大值:dp[i] = max(dp[i-2]+nums[i],dp[i-1])初始化:dp[0] = nums[0]dp[1] = max(nums[0],nums[1]);class Sol.
2021-07-05 16:29:25
103
原创 64. 最小路径和(iii)
定义dp数组:dp[i][j]的含义为移动到点i,j的最小路径和。状态转移方程dp[i][j] = min(dp[i-1][j],dp[i][j-1])+array[i][j];即:当前点的最小路径和等于(左边和上边点的路径和的较小的一个)+ 当前点的值。初始化根据状态转移方程,我们需要初始化第0行和第0列。即:dp[i][0] =dp[i-1][0]+array[i][0]; //即第0列第i行的最小路径和等于第0列第i-1行的最小路径和加上当前点的值。另外一个同理。同时,上述初始化需.
2021-07-05 16:16:08
99
原创 63. 不同路径 II
定义dp数组:dp[i][j] 表示到达坐标为i,j点时总共有dp[i][j] 条路径。状态转移:因为只能右或者下:dp[i][j] = dp[i-1][j]+dp[i][j-1];即:当前点的路径数=左边点的路径数+上边点的路径数。同时注意障碍物的问题,当 走到障碍物时,dp[i][j]==0;初始化:对dp数组第一行的数据,由于都只能往右走,故 全为1,注意障碍物对dp数组第一列的数据,由于都只能往下走,故全为1,注意障碍物class Solution {public: .
2021-07-05 15:57:50
80
原创 62. 不同路径
定义dp数组:dp[i][j] 表示到达坐标为i,j点时总共有dp[i][j] 条路径。状态转移:因为只能右或者下:dp[i][j] = dp[i-1][j]+dp[i][j-1];即:当前点的路径数=左边点的路径数+上边点的路径数。初始化:对dp数组第一行的数据,由于都只能往右走,故 全为1;对dp数组第一列的数据,由于都只能往下走,故全为1.代码如下:class Solution {public: int uniquePaths(int m, int n) { .
2021-07-05 15:48:29
72
原创 JZ45 扑克牌顺子
思路1:模拟,统计0的个数和数字之间的差距,比较即可。注意存在元素相等则不对class Solution {public: bool IsContinuous( vector<int> numbers ) { if(numbers.size()!=5) return false; int zero = 0; sort(numbers.begin(),numbers.end()); int t=0;//记录不为0的起点.
2021-07-02 16:47:51
133
原创 JZ46 孩子们的游戏(圆圈中最后剩下的数)
思路1:模拟法,按照题目给的过程,模拟整个过程的实现。class Solution {public: int LastRemaining_Solution(int n, int m) { if(n<=0||m<=0) return -1; list<int> lt; for(int i=0;i<n;i++) lt.push_back(i); auto iter = lt.beg.
2021-07-02 16:19:53
118
原创 二叉搜索树的后序遍历序列
思路1:循环判断。最右边的是根节点。每次都记录下节点个数先小于再大于最右边节点的个数,若小于size-1.则说明不满足。class Solution {public: bool VerifySquenceOfBST(vector<int> sequence) { if(sequence.size()==0) return false; int size = sequence.size()-1; int i=0; //小.
2021-07-02 15:16:17
128
本文档的目的是详细给出和积算法(Sum-Product Algorithm)的原理算法的推导及实现方法,并对LDPC码进行译码.包含完整代码实现
2024-11-27
毕业设计之基于matlab GUI的数字信号处理实验平台设计
2024-11-27
坚牢黄玉matlab gui平台的dsp实验平台设计
2024-11-18
本程序对基于matlab对NOMA系统中经典多用户功率分配算法进行了研究
2024-11-15
基于机器学习的数字手势识别研究,可以通过电脑摄像头查看识别结果
2024-11-15
基于STBC的MIMO-OFDM系统的误码率分析
2024-02-18
(2,1,3)卷积码通过AWGN和BEC信道后维特比译码算法研究
2024-02-18
(15,11)汉明码通过BSC和AWGN信道的误码率分析
2024-02-18
清晰简历—tex.zip
2021-11-05
TCP_and_C.zip
2021-08-30
red.rar 红包简单代码
2020-05-05
car_rent.rar
2020-05-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人