- 博客(369)
- 资源 (44)
- 收藏
- 关注
原创 基于MATLAB的串口数据接收与协议解析(TGAM串口数据读取与处理)
用matlab也可以进行串口通信,matlab的toolbox很强大。其中该篇文章只分享有关matlab串口通信的内容!
2024-10-24 06:41:01
138
原创 【自适应滤波系列九】回声消除(Acoustic Echo Cancellation, AEC)滤波的LMS、NLMS、IPNLMS、L0-IPNLMS、SM-L0-IPNLMS算法的性能对比
如下图,使用自适应滤波算法调整滤波器的权值向量,估计一个近似的回声路径来逼近真实回声路径,从而得到估计的回声信号,并在近端语音和远端回声的混合信号中除去此信号来实现回声的消除。xn为远端语音,sn为近端语音,近端说话的时候,远端经过未知的回声路径hn(图中为wn),会产生回声信号ynxn∗wn(注意符号∗表示卷积),那么近端麦克风接受的信号为dnynsn。近端的自适应滤波器wn(图中为wn)就会参考远端信号估计近端的回声yn。
2024-08-11 08:36:31
221
1
原创 【自适应滤波系列八】基于SM-L0-IPNLMS算法的回声消除(Acoustic Echo Cancellation, AEC)
L0⁃IPNLMS 算法和 IPNLMS 算法均通过引入一个对角矩阵来改进 NLMS 算法中的梯度计算,虽然性能获得了一定改善,但计算复杂度也增加了很多。考虑到数字助听器的低功耗特性,可以将集员滤波理论以步长因子的形式引入 L0⁃IPNLMS 算法中,利用该理论的数据选择更新特性降低数字助听器的计算成本,当误差低于某一范围,暂停更新滤波器系数。集员滤波算法定义了一个包含输入和输出向量的模型空间S,对这个空间S中的所有数据,保持其滤波器系数无需更新,即集员滤波策略。空间S。
2024-08-07 13:02:47
171
原创 【自适应滤波系列七】基于IPNLMS和L0-IPNLMS算法的回声消除(Acoustic Echo Cancellation, AEC)
NLMS 算法的缺陷在于不能适应回声路径的稀疏性。此稀疏性是指系统的冲击响应是稀疏的,其路径的系数大多为 0 或者很小值。如果能够利用这些系数,在系数活跃的情况下给予其更大的更新速度则可以加快系统的收敛速度。但 NLMS 算法未根据这一特性调整步长,导致其性能不够理想。为了克服NLMS算法对回声路径的局限性,IPNLMS算法通过引入一个对角矩阵Qk来改进性能,此处称为系数矩阵Qkdiagq0kq1k⋯qM−1k式中diag⋅表示对角矩阵。
2024-08-05 12:51:41
189
原创 【自适应滤波系列六】基于NLMS算法的回声消除(Acoustic Echo Cancellation, AEC)
NLMS 算法是自适应滤波中的又一经典的一个算法,其抽头的更新公式为wn1wnδxnTxnμ⋅e∗n⋅xn其中,δ为正则化参数,是为了防止语音信号的能量xnTxn过小时步长过大。μ是一个常数,称为步长控制因子,用于控制算法的稳定性。在选择步长参数时,需要兼顾算法的收敛速度和稳态误差。传统的固定步长的 LMS 算法采用单一的步长μ导致其对输入信号的能量大小比较敏感,难以保持算法的稳定性,不仅导致收敛速度过快或者过慢而且导致系统误差较大。
2024-07-14 18:50:28
189
原创 【MATLAB库函数系列】MATLAB库函数pwelch之功率谱估计的详解及实现
由于实际信号通常是非定常的,我们只能假设其在10ms的时间段内是定常的,并在此基础上对短的定常信号求PSD或者能谱。窗函数的作用就是将原始的信号分割成一段段可以计算PSD和能谱的短信号,并且保证了周期结构的连续性、避免了频谱泄漏。不同的窗函数具有不同的特性,应用时根据实际情况需要取舍。采用了窗函数后,窗口两侧位置的信息就会减少(因为窗函数两端为零值),这就需要滑动窗口的位置来解决,也就是说窗口重叠(overlapping)的作用就是使得对分割后信号的分析更可靠。
2024-07-14 18:49:08
737
原创 【OFDM系列9】OFDM采用正交区分不同子载波的,但是子载波通过调相后携带了基带信号后,如何还能继续保证两者正交
这就要从OFDM调制的发展和由来说起了,最开始多载波体制提出的一个目的是为了对抗多径信道造成的码间干扰,而期初的多载波调制,各个子载波并不是正交的,且各个子载波之间没有重叠,留有间隔,这样的话频谱利用率并不高。其实也不是不可以,比如一些结合了FSK(将频率进行分组)或者扩频等的特殊的调制方式,它就是将频率分组,采用FSK的思想来进行调制,继承了FSK对多径不敏感的优点,前人真的是太聪明了!OFDM采用正交区分不同子载波的,但是子载波通过调相后携带了基带信号后,如何还能继续保证两者正交?
2024-07-12 00:34:50
321
原创 【自适应滤波系列五】基于LMS算法的回声消除(Acoustic Echo Cancellation, AEC)
自适应滤波算法的思想,在上一篇博客中已经进行了详细的描述,本文主要谈谈自适应滤波算法的其中之一LMS算法在回声消除中的应用。
2024-07-10 07:20:08
219
原创 【自适应滤波系列四】回声消除(Acoustic Echo Cancellation, AEC)信号模型及其本质
关于回声的产生与传播,凌逆战(https://www.cnblogs.com/LXP-Never)大佬在其博客中阐述得很详细,可以去看他的博客,下面部分图片来源于其博客回声就是声音信号经过一系列反射之后,又听到了自己讲话的声音,这就是回声。一些回声是必要的,比如剧院里的音乐回声以及延迟时间较短的房间回声;而大多数回声会造成负面影响,比如在有线或者无线通信时重复听到自己讲话的声音(回想那些年我们开黑打游戏时,如果其中有个人开了外放,他的声音就会回荡来回荡去,直至产生啸叫)。
2024-07-04 07:20:55
240
原创 【线程同步系列5】线程同步中的思考
假设还是有两个线程,前面几篇关于线程同步的方法中,虽然能够保证同一个资源同一个时刻只有一个线程占用,但是并不能保证线程1和线程2交替运行,比如线程1可能会运行5次,然后线程2运行1次。那么如果我们需要多线程交替运行,在VC中应该怎么实现呢?
2024-07-01 06:00:00
118
原创 【信息论系列2】蜂窝通信得基本概念和信道容量等相关计算
已经看到,为了确保完全的区域覆盖而没有死点,可以使用一系列正多边形。出于经济原因,通常采用六边形(六边形的设计比正方形或三角形更有效)。基于简单几何,的距离x由3R给出,其中R是。在蜂窝设计中,通常不可能在相邻的蜂窝中使用相同的一组频率(有例外,例如直接序列CDMA,这种安排是可行的)。图5显示了规划和部署大多数系统的方法。一个运营商被分配一定的带宽分配,基于所使用的无线电系统的类型,该无线电带宽被细分为若干。
2024-05-27 13:03:59
239
原创 【信息论系列1】一文搞定各种奇奇怪怪信道的信道容量C计算(含多角度理解推导)
信息论中,通信信道是一个描述给定信道输入X条件下信道输出Y的条件概率分布,也就是P(Y|X)从定义来看,信道容量即为互信息I(X;Y)I(X;Y)I(X;Y)的最大值
2024-05-15 14:01:11
210
原创 基于CCS5.5的双音多频(DTMF)信号检测仿真实验(①检测型音频文件②输入生成音频并检测)
DTMF根本上仍然是频谱分析,基础还是DFT,但DFT通常需要对一整段数据做变换,而DTMF不同,每输入一个采样点就计算一次,更有利于硬件实现。
2024-05-11 21:56:22
212
原创 C++导出类中工厂函数和虚函数的结合使用
之前在看到dll导出类时,看到这篇文章其中,第三种方式个人感觉非常好,原文如下C++抽象接口(仅包含纯虚函数且不包含数据成员的C++类)同时兼顾以下两个方面:与对象无关的纯净接口,以及方便的的面向对象的调用方式。所需要做的就是为头文件提供接口声明并实现工厂函数,该函数将返回新创建的对象实例。仅工厂函数必须与说明__declspec(dllexport/dllimport)符一起声明。该接口不需要任何其他说明符。在上述代码段中,工厂函数GetObj声明为extern “C”。
2024-03-23 09:49:59
170
原创 【线程同步系列3】基于关键代码段的VC++多线程同步及孙鑫代码在VS2017、多核CPU上的问题
经过分析,笔者认为主要原因是,线程1和线程2中While(TRUE)循环,假设线程1先运行,当保护代码运行完后执行LeaveCriticalSection(&g_cs);如果调用线程没有等待到临界区对象的所有权,该函数一直等待,从而导致线程一直等待!然而,在VC++深入详解第二版中,编译环境为VC++6.0,且可能是单核CPU,程序运行没有问题,线程1和线程2交替售票!孙鑫老师在VC++深入详解一书中,以2个线程售票为例,对基于临界区的线程同步进行了示范,代码如下。释放临界区对象,调用。
2024-03-22 06:51:25
134
原创 Visual Studio单步调试中监视窗口变灰的问题
然而,在调试中,只要一执行while这条语句,监视窗口中的变量全部变为灰色,不能查看,是程序本身并没有报错,能够继续执行,但就是不能查看变量的值!>调试信息格式,改为 程序数据库(/Zi)在网上搜索无果,最后在项目属性中更改。在vs调试中,写了这样一条语句。
2024-03-08 05:00:00
611
原创 SSE指令集学习使用
本篇介绍SSE指令集,SSE是流化SIMD扩展(Streaming SIMD Extension, SSE),提供全新的一组寄存器,处理128位打包数据。SSE提供了xmm寄存器,xmm一组8个128位的寄存器,分别名为xmm0-xmm7,SSE构架提供对打包单精度浮点数的SIMD支持。
2023-12-25 02:56:09
663
原创 SSE指令集学习使用2
在IDA中可以设置启用或禁用SSE intrinsic指令,具体操作为在IDA中反编译代码窗口(Pseudocode)中右键。实际上,函数sub_func1有6个参数,但IDA反编译之后却只有1个 参数,猜测应该是采用了浮点寄存器传递了参数。把源存储器低64位两个双字有符号整数变成两个双精度浮点数,结果送入目的寄存器,内存变量必须对齐内存16字节.将xmm1与xmm0做商,并将结果以双精度浮点数的类型存放到xmm1中。结果:xmm0=edx=sps(整数)结果:xmm1=maxind。
2023-12-25 02:40:59
255
原创 【MATLAB库函数系列】线性调频Z(Chirp-Z,CZT)的MATLAB源码和C语言实现
采用 FFT 算法可以很快计算出全部$N$点 DFT 值,即Z变换 $X(z)$在$z$平面单位圆上的全部等间隔取样值。而实际中也许不需要计算整个单位圆上Z变换的取样值。例如**对于窄带信号,只需要对信号所在的一段频带进行分析,这时希望频谱的取样集中在这一频带内,以获得较高的分辨率,而频带以外的部分可不考虑**。
2023-12-24 12:56:21
777
原创 二进制转十六进制字符串的C语言高效率实现(如“10100011“转为字符串“A3“)
对于一串二进制01比特,有时为了显示或者编辑方便高效,我们需要将二进制比特流转换成十六进制,众所周知,二进制转十六进制是每4比特进行转换,例如将以下二进制流:转换为十六进制应为:A3CD有时候,还可以每字节中间添加一个空格A3 CD下面直接上结果和代码。
2023-12-18 14:44:23
258
原创 【梅西迭代姊妹篇2】BCH码和m序列参数估计(梅西迭代算法求多项式的C语言实现)
伯利坎普迭代算法解决了BCH码译码中求错位多项式σx的问题,即用迭代算法求解方程组,极大地加快了译码速度。求最短线性移存器的迭代算法是梅西(J.Massey)于1969年提出的,而且指出了与BCH码迭代译码算法之间的关系,即求最短线性移存器的迭代算法实质上是伯利坎普提出的BCH码译码的迭代算法。
2023-12-18 08:08:24
191
原创 【Turbo乘积码2】基于EaE(Error-and-Erasure)的TPC码迭代译码的C语言实现及工程详细解析『需要完整工程代码请先私信』
上篇博客讲述了AWGN信道下TPC码迭代译码的原理及CPP实现,此次主要讨论一种改进的译码方式,也就是基于错误和擦除(Error-and-Erasure, EaE)的译码。
2023-12-05 07:21:05
250
原创 一种FSK信号符号同步的思想
FSK利用频率传输信息,即将信息流调制到频率上。以最简单的2FSK通俗来讲,用2个不同的频率f1f2来分别代表0和1,进而传输数字信息;那么对于8FSK,则有8个不同频率f1˜f8用来传输信息,每个频率每符号表示3比特信息。FSK信号的优点很多,比如抗多径效应、发送和接收简单等等,对于接收方来说,只需要判断当前符号内的频率是哪个,即可完成解调,但是如何找到符号的第一个采样点呢,也就是如何完成符号同步呢?
2023-11-01 21:44:53
410
原创 【Turbo乘积码1】AWGN信道下TPC码迭代译码的C语言实现及工程详细解析『需要完整工程代码请先私信』
Turbo 乘积码(TPC),也叫分组 Turbo码(BTC)。该码字是乘积码的一种,其中第一个分量码的参数为n1k1,第个分量码的参数为n2k2。图1中k1×k2的子阵包含了k1k2个数据比特。这个子矩阵中的列被“列码”编码,然后将得到的n1n2矩阵的行进行“行码”编码。或者,先进行行编码再进行列编码。因为码是线性的,所以得到的码字不受编码顺序的影响。特别地,“校验位的校验”这一子矩阵是不变的。乘积码总的码率是RR1。
2023-10-29 23:24:33
914
原创 【BCH码5】AWGN信道下BCH码的BM迭代(Berlekamp译码)C语言实现及工程详细解析『需要完整工程代码请先私信』
BCH码取自 Bose、Ray-Chaudhuri 与 Hocquenghem 的缩写,是编码理论尤其是纠错码中研究得比较多的一种编码方法。BCH码是循环码的一个重要子类,它具有纠多个错误的能力,BCH码有严密的代数理论,是目前研究最透彻的一类码。它的生成多项式与最小码距之间有密切的关系,人们可以根据所要求的纠错能力t很容易构造出BCH码,它们的译码器也容易实现,是线性分组码中应用最普遍的一类码。
2023-10-24 00:42:50
408
原创 Intel 高性能库之IPP信号处理简介及下载(版本5.1、6.1,含32位和64位及注册)
英特尔®集成性能基元(英特尔®IPP)是一款多核就绪的扩展函数库,其中包含众多针对多媒体、数据处理和通信应用高度优化的软件函数。它包括:视频编码:用于 DV25/50/100、MPEG-2、MPEG-4、H.263 和 MPEG-4 Part 10 (H.264) 编解码器的关键算法组件。图像和 2D 信号处理:包含多种可针对图像和图像内区域 (ROI) 执行的算法。计算机视觉:针对多种主要计算机视觉运算进行优化的函数,可用于安全、计算机控制、媒体管理、媒体注释等领域的应用程序。
2023-10-06 23:52:11
1156
原创 【线程同步系列4】线程死锁问题及解决办法
线程1拥有了临界区对象A,等待临界区对象B的所有权,线程2拥有了临界区对象B,等待临界区对象A的拥有权,就造成了死锁。对多线程来说,如果线程1拥有了临界区对象A,等待临界区对象B的拥有权,线程2拥有了临界区对象B,等待临界区对象A的拥有权,那么这就造成了死锁。下面通过代码来演示线程死锁的发生。下面,我们来分析上述程序的执行过程。当线程1得到临界区对象g_csA的所有权之后,调用 Sleep函数,让线程1睡眠1ms,这将导致线程1暂停运行,其目的是为了让线程2优先得到临界区对象g_csB的所有权。
2023-06-19 13:06:55
1073
原创 【数字信号处理】Goertzl算法详解推导及双音多频(DTMF)信号检测
根据卷积公式ynm−∞∑∞xmhn−mm0∑N−1xmhn−m可以发现,上式中ykN的计算可以看成是xn与ejN2πkn的卷积,因此可以理解为Xk是xn经过滤波器hnejN2πkn之后的输出,根据Z变换的性质ϵn↔z−1zanϵn↔z−az得ejN2πknϵn↔Hzz−ejN2πkz。
2023-05-28 21:29:11
1497
原创 【循环自相关和循环谱系列7】OFDM循环自相关推导分析、时间参数估计原理仿真及某无人机实际图传信号验证(含矩形/非矩形、有无循环前缀等情况)
这是循环自相关和循环谱系列的第七篇文章了,前面的6篇讲的都是单载波信号的循环平稳性的理论推导和matlab仿真,之前也有很多读者都私信代码中计算循环谱相关部分代码的原理,均一一进行了回复,并发送了相应的论文,对读者们的支持,在此表示衷心的感谢!OFDM信号调制较为复杂,但是有很多方式引入循环平
2023-05-27 22:01:19
1423
11
原创 【数字通信】PAM基带信号的功率谱原理推导详解
PAM信号可以说是最简单的数字通信信号,很多理论最初都是由该信号的表达式推导得到并进行拓展的,纵观各类数字信号的表达式,或多或少都有PAM信号的“影子”,也就是说PAM信号相关的理论知识是最基本的,很有必要搞清楚,本博客主要讨论PAM基带信号的功率谱的原理及推导过程,以教材为主线,对疑难步骤进行补充推导解释。
2023-05-23 19:56:45
1054
原创 【循环自相关和循环谱系列6】信号的循环平稳性(循环自相关函数)基本原理及推导
在通信、遥测、雷达和声纳系统中,一些人工信号是一类特殊的非平稳信号,它们的非平稳性表现为周期平稳性。**通信信号**常用待传输信号对周期性信号的某个参数进行调制、如对正弦载波进行调幅、调频和调相,以及对周期性脉冲信号进行脉幅、脉宽和脉位调制,都会产生具有周期平稳性的信号。通常把统计特性呈周期或多周期(各周期不能通约)平稳变化的信号统称为循环平稳或周期平稳(CS:cyclostationary)信号。
2023-05-17 05:00:00
2880
原创 【网格图软判决译码】基于比特级的MAP译码(Bitwise MAP Decoding)算法原理推导和例题详解(intrinsic和extrinsic值)
C表示一个(n,k)码,生成矩阵为G,编码如下Encodinguu1...uk—>vv1...vnvu⋅Gvuv1u...vnu))rr1...rn为接收向量信道转移概率为p,即①Pui0∣rPui1∣r1−Pui0∣r※②Pui0∣r∑uui0Pu∣r③Pu∣rPrPuPr∣u④Pu。
2023-05-13 21:36:21
557
原创 【分组码系列】线性分组码的网格图和维特比译码
由于码字的比特位是统计独立的,所以编码过程可以利用有限状态机来描述,它能精确地确定初始和最终状态。可以利用网格图进一步描述编码过程[36],采用维特比算法进行最大似然译码.在GF(2)上定义线性分组码(n,k)。相应的(n-k)Xn维校验阵可以写成令码字为系统码, 前k位表示信息位, 后n-k位表示校验位,Sj表示深度为j时的状态(线性分组码的深度j最大为n网格图中的状态数由2n−k确定,每个状态以二进制形式可表示为长度n-k的矢量。令mm1m2,⋅⋅⋅mk。
2023-05-10 23:57:55
734
原创 【MFC系列】MFC单文档应用程序要点(一)
那么,当第一个线程到达,信号量为FALSE,线程打开文件进行访问,并将信号量置为TRUE;当人工重置的事件得到通知时,等待该事件的所有线程均变为可调度线程,且在一个线程得到该事件对象后并不会将该对象设置为非信号状态,也就是说人工重置的事件对象,除非显式得调用ResetEvent,否则始终处于有信号状态。可以看出,由于主线程初始化hMutex为有信号状态,所以线程1和线程2刚开始时会发生“争抢”,在hMutex第一次被置为无信号状态的过程中,两个线程的WaitForSingleObject语句同时执行了!
2023-05-03 22:15:11
720
《信息论》之信道容量和蜂窝通信课件+讲义+作业+代码.rar
2023-12-06
DGSD1-Qt.rar
2023-10-07
数字通信国外大学纯手写通俗易懂知识点讲解梳理(英文含习题和答案).rar
2023-05-12
intel-ipp-vxworks-users-guide-7.0
2023-04-15
Windows-64位-scikit库(含编译好的lib文件和SuiteSparse工程)
2023-03-11
Solutions Manual Digital Communication
2023-03-06
Solutions Manual Communication Systems Engineering
2023-02-19
基于SDL的魂斗罗VC版源码(可直接编译运行试玩).rar
2022-12-24
论文High-Order Digital Parametric Equalizer Design对应的代码
2022-08-29
VB语言与测量程序设计之水准网平差程序设计完整项目工程(含测试输入数据)
2022-05-21
MATLAB库函数polly2trellis(卷积码生成多项式转网格图描述)的VS2010工程源码.rar
2022-01-19
【BCH码2】BCH码的快速BM迭代译码原理详解及MATLAB实现(不使用MATLAB库函数).rar
2021-11-19
[精品资料]信号与系统习题和答案详解.rar
2021-11-08
Office系列完全干净卸载工具合集(最全).rar
2021-10-01
RF50_开发测试板_DEMO和原理图_V1.1_CN.rar
2021-08-23
U-EC5编程操作指南.rar
2021-08-21
LMMSE、Godard、CMA常模、Sato等算法在信道均衡中的应用理论
2021-08-07
【黑客帝国数字雨屏保】基于Win32的黑客帝国数字雨屏幕保护程序.7z
2021-05-07
【32位win7一键扫雷】32位win7系统自带扫雷游戏逆向分析之一键扫雷.rar
2021-05-06
信号处理和数字滤波课件和试卷.rar
2021-03-13
IDA逆向分析缓冲区溢出攻击漏洞实例.rar
2021-03-12
基带模型下高阶累积量的MFSK的调制识别代码、参考文献和Mind图
2021-03-06
依赖于个体的空间或时间无标度行为的群体混合(Hybrid)搜索算法(课件和C语言代码).rar
2021-02-07
【英文课件】稀疏编码理论(LDPC、Fountain Codes、Turbo Codes).rar
2021-02-05
Pointofix.zip
2021-02-01
考研英语一大作文救命模板.docx
2021-01-14
Windows10+VS2017下GSL1.8_x86配置文件及schneider_et_al_2016_animaldiversity项目编译运行
2020-11-29
FM调制解调音频文件.rar
2020-09-20
FFTW-3.3.5-x86-x64头文件、lib库文件和dll文件
2020-09-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人