自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【调制解调】PM 调相

先对调制信号进行微分,然后对微分结果进行调频,就得到了调相信号,这种方式叫间接调相。,与幅度调制技术相比,角度调制最突出的优势是其较高的抗噪声性能,然而获得这种优势的代价是角度调制占用比幅度调制信号更宽的带宽。在 FM 调频与 PM 调相的过程中,载波的幅度都保持恒定不变,而频率和相位的变化都表现为载波瞬时相位的变化,故把调频和调相统称为。与 FM 信号一样,PM 信号的调制方法也可分为 3 种,一种是直接调相法,一种是间接调相法,第三种是正交调制法。,可以很方便地完成 PM 信号仿真。

2023-07-18 21:09:45 955

原创 【调制解调】FM 调频

学习数字信号处理算法时整理的学习笔记。同系列文章目录可见 《DSP 学习之路》目录,代码已上传到 Github - ModulationAndDemodulation。本篇介绍 FM 调频信号的调制与解调,内附全套 MATLAB 代码。用调制信号去控制载波的瞬时频率,使其按照调制信号的规律变化,当调制信号是模拟信号时,这个过程就被称为调频(FM)。FM 信号的时域表达式为:sFM(t)=Acos[ωct+Kf∫0tm(τ)dτ](1)s_{FM}(t)=Acos{\left[\omega_ct+{K_f

2023-07-18 21:04:36 762

原创 【调制解调】AM 调幅

学习数字信号处理算法时整理的学习笔记。同系列文章目录可见 《DSP 学习之路》目录,代码已上传到 Github - ModulationAndDemodulation。本篇介绍 AM 调幅信号的调制与解调,内附全套 MATLAB 代码。用调制信号去控制载波的幅度,使其按照调制信号的规律变化,当调制信号是模拟信号时,这个过程就被称为调幅(AM)。AM 信号的时域表达式为:sAM(t)=[A0+m(t)]cosωct(1)s_{AM}(t)=\left[A_0+m(t)\right]cos{\omega_c

2023-07-10 22:03:42 485

原创 【QCustomPlot】绘制 x-y 曲线图

绘制 x-y 曲线图所使用的类为QCPGraph,它提供的类方法可在中找到。// 重置/添加绘图数据的接口// 设置线型// 设置点型。

2023-06-20 00:05:05 2054

原创 【QCustomPlot】使用方法(源码方式)

本篇介绍 QCustomPlot 的一种使用方法,通过包含源码的方式进行使用,这也是最常用的方法,示例中使用的 QCustomPlot 版本为。提供的方法绘制函数曲线图、参数曲线图、柱状图、箱线图、热力图等,详见帮助文档,或本人同系列博客。是 Qt Creator 生成的默认 UI 文件,界面中只多了一个提升后的。由于 QCustomPlot 具有导出 PDF 的功能,使用到了。工程文件中添加这一模块,如下所示,注意前面的版本条件。,注意大小写要完全一致,然后点击。在弹出的对话框中,先在。

2023-06-18 22:51:11 522

原创 【QCustomPlot】性能提升之修改源码(版本 V2.x.x)

使用 QCustomPlot 绘图库的过程中,有时候觉得原生的功能不太够用,比如它没有曲线平滑功能;有时候又觉得更新绘图数据时逐个赋值效率太低,如果能直接操作内存就好了;还有时候希望减轻 CPU 压力,启用 GPU 加速。好在 QCustomPlot 是开源项目,源码编写十分规范,想要理解它的可视化思路不算特别困难。我在这篇随笔中总结一下常用的源码修改技巧,**下面的每一个技巧都是独立的,不同技巧中添加的代码无任何依赖关系,相互之间也不会引发任何冲突,不会影响 QCustomPlot 原生的接口**。示例中

2023-05-29 23:02:33 2058 1

原创 QT 绘制波形图、频谱图、瀑布图、星座图、眼图、语图

最近在学中频信号处理的一些东西,顺便用 QT 写了一个小工具,可以显示信号的时域波形图、幅度谱、功率谱、二次方谱、四次方谱、八次方谱、瞬时包络、瞬时频率、瞬时相位、非线性瞬时相位、瞬时幅度直方图、瞬时频率直方图、瞬时相位直方图、眼图、星座图、语谱图、瀑布图。

2023-05-28 18:21:04 6547 39

原创 【Visual Leak Detector】核心源码剖析(VLD 2.5.1)

使用 VLD 内存泄漏检测工具辅助开发时整理的学习笔记。本篇对 VLD 2.5.1 源码做内存泄漏检测的思路进行剖析。同系列文章目录可见 《内存泄漏检测工具》目录 及之前版本都使用旧的检测思路:通过 注册自定义 函数,从而监视程序的内存分配事件,详见本人另一篇博客 核心源码剖析(VLD 1.0),缺陷是只能检测由 或 产生的内存泄漏,受限于 。从 开始, 换用了新的检测思路,通过修改导入地址表(Import Address Table)将原先的内存操作函数替换为 自定义的函数,从而可以检测到更多

2023-05-13 09:47:24 295

原创 【Visual Leak Detector】源码调试 VLD 库

本篇介绍 VLD 源码的调试。进行泄漏检测时,有时候会出现突然崩溃、退出时没有打印以下提示信息等情况,此时就可以调试一下。,根据自己需求设置调试程序与调试程序的启动参数。,如果这个调试程序需要额外的参数,就把参数填写在下一行。这两个文件拷贝至调试程序的同一级目录,我的是。的程序(被称为调试程序)所在路径,我的是。模式,根据自己需求设置输出目录。设置为调试程序的同一级目录,我的是。的源码,查一查是哪里出了问题。至此,就可以开始调试了,不妨在。本地 Windows 调试器。本地 Windows 调试器。

2023-05-07 13:35:15 161

原创 【Visual Leak Detector】在 VS 高版本中使用 VLD

并按步骤安装 VLD。注意配置环境的时候一定要把三个选项都打上勾,在一台电脑上配置完成后,用的时候十分方便,包含头文件就可以使用,不需添加任何多余的代码。由于目前本人对此需求不大,所以仅说下个人思路,供日后参考。使用 VLD 内存泄漏检测工具辅助开发时整理的学习笔记。官方文档里看到如何使用 VLD,里面介绍了如何在。中配置 VLD 的环境、如何使用 VLD。,且想完全使用高版本的开发环境,可以。的方法,可参考本人另一篇博客。

2023-05-05 22:54:21 284

原创 【Visual Leak Detector】核心源码剖析(VLD 1.0)

使用 #pragma init_seg (compiler)指令构造一个全局对象,来确保这个对象的构造函数最先被调用(详见vld.cpp第 49~55 行)。在全局对象的构造函数中调用接口注册自定义AllocHook函数,使程序能捕捉之后的内存操作(内存分配/内存释放)事件(详见vld.cpp第 57~95 行)。此外,在初始化VLD的配置信息,详见vld.cpp第 71~75 行、第 84~90 行、以及函数,详见vld.cpp第 768~800 行。

2023-04-28 12:26:38 208

原创 【Visual Leak Detector】源码编译 VLD 库

使用 VLD 内存泄漏检测工具辅助开发时整理的学习笔记。本篇介绍 VLD 源码的编译。个文件整理到一个目录下,最好依据前面的安装目录结构来进行整理,然后手动修改系统变量。库时,这两个解决方案的生成结果是一样的,详见本人另一篇博客。安装器,环境变量还需要自己来手动配置,将以上。后,源码包中各文件的用途可看本人另一篇博客。,他们的区别在于链接的运行库版本不同(详见。打开后,下拉构建配置框,可以看到有。个文件已经全部具备,可以开始使用了。同样地,按下图步骤操作,生成。),以及是否启用优化。按下图步骤操作,生成。

2023-04-24 00:19:41 195

原创 【Visual Leak Detector】源码文件概览

使用 VLD 内存泄漏检测工具辅助开发时整理的学习笔记。库的配置文件,库的使用者需要用到,使用方法详见本人同系列文章。测试工程,用来测试:当内存分配函数与释放函数不匹配(例如。安装器,默认情况下,在安装完成后会生成对应的卸载器。测试工程,用来测试:当使用不同的内存分配函数(例如。这两个文件外,它能修改当前目录及其所有子文件夹中的。对全局静态变量的泄漏检测功能是否正常,被测程序为。被测的内存分配函数详见。示例工程,用来演示如何在普通的控制台程序中使用。,但其接口函数并没有故意产生内存泄漏(如下,详见。

2023-04-22 20:39:13 90

原创 【Visual Leak Detector】库的 22 个 API 使用说明

VLD 2.5.1 安装完成后,安装目录的includevld.h和vld_def.h,其中vld.h文件会,因此在实际使用时,项目中要同时添加这两个头文件(或将这两个文件放在编译器的搜索路径中),但只需包含vld.h文件。这个文件里主要以宏的形式定义了15个 VLD 配置项的掩码,这15个配置项与vld.ini配置文件中的14个配置项不是完全对应的,将这些配置项掩码与vld.h文件中的接口结合起来用,可以实现在运行过程中对 VLD 的配置进行动态修改。其中9个配置项可作为接口的输入,另外4。

2023-04-17 08:05:17 126

原创 【Visual Leak Detector】QT 中 VLD 输出解析(四)

程序运行结束后,检测到了内存泄漏,VLD 会输出以下报告(本例中出现一处内存泄漏),第 1~3 行显示 VLD 运行状态,第 4~21 行显示泄漏内存的详细信息,第 22~24 行总结此次泄漏情况,第 25 行显示 VLD 退出状态。程序运行结束后,检测到了内存泄漏,VLD 会输出以下报告(本例中出现一处内存泄漏),第 1~3 行显示 VLD 运行状态,第 4~21 行显示泄漏内存的详细信息,第 22~24 行总结此次泄漏情况,第 25 行显示 VLD 退出状态。

2023-03-27 08:22:26 148

原创 【Visual Leak Detector】QT 中 VLD 输出解析(三)

程序运行结束后,检测到了内存泄漏,VLD 会输出以下报告(本例中出现三处内存泄漏),第 1~3 行显示 VLD 运行状态,第 4~19 行显示。程序运行结束后,检测到了内存泄漏,VLD 会输出以下报告(本例中出现两处内存泄漏),第 1~3 行显示 VLD 运行状态,第 4~19 行显示。函数泄漏内存的详细信息,第 58~60 行总结此次泄漏情况,第 61 行显示 VLD 退出状态。函数泄漏内存的详细信息,第 40~42 行总结此次泄漏情况,第 43 行显示 VLD 退出状态。第 40~41 行中的。

2023-03-26 23:04:39 182

原创 【Visual Leak Detector】QT 中 VLD 输出解析(二)

程序运行结束后,检测到了内存泄漏,VLD 会输出以下报告(本例中出现一处内存泄漏),第 1~3 行显示 VLD 运行状态,第 4~21 行显示泄漏内存的详细信息,第 22~24 行总结此次泄漏情况,第 25 行显示 VLD 退出状态。程序运行结束后,检测到了内存泄漏,VLD 会输出以下报告(本例中出现一处内存泄漏),第 1~3 行显示 VLD 运行状态,第 4~23 行显示泄漏内存的详细信息,第 24~26 行总结此次泄漏情况,第 27 行显示 VLD 退出状态。是此内存块的泄漏大小,与第 4 行一致。

2023-03-26 20:37:32 358

原创 【Visual Leak Detector】QT 中 VLD 输出解析(一)

表示 VLD 读取的配置文件路径,可以根据路径找到该文件,然后更改里面的相关配置,获得想要的效果。使用 VLD 内存泄漏检测工具辅助开发时整理的学习笔记。表示 VLD 2.5.1 在程序中初始化成功。表示本次运行没有检测到内存泄漏。表示 VLD 正常退出。

2023-03-25 20:30:55 171

原创 【Visual Leak Detector】在 QT 中使用 VLD(方式三)

弹窗点击“是(Y)” 按钮卸载 VLD,重新编译运行程序,仍可正常使用。这一种使用方式的特点是,在一台电脑上安装完成后,将 VLD 安装目录下的 lib 库及 include 文件拷贝到项目目录中,在项目。优点是,当把项目拷贝到别的电脑上编译运行时,该电脑无需安装 VLD,也不需要更改任何代码。按前述步骤进行配置后,就可以卸载已经安装的 VLD 工具了,到 VLD 安装路径下,双击。文件和 VLD 安装目录 bin 文件夹下的全部文件拷贝到项目生成目录下,最后在。模式,编译运行,就可以正常使用了。

2023-03-22 13:44:18 491

原创 【Visual Leak Detector】在 QT 中使用 VLD(方式二)

并按步骤安装 VLD。这一种使用方式的特点是,在一台电脑上安装完成后,需在项目。选择 MSVC 32bit 或者 MSVC 64bit 编译器,选择。当把项目拷贝到别的电脑上编译运行时,需要确保该电脑已经使用。使用 VLD 内存泄漏检测工具辅助开发时整理的学习笔记。文件中指明库及头文件的路径,然后在。模式,编译运行,就可以正常使用了。安装了 VLD,并更改项目。我的 VLD 安装目录为。文件中指明 VLD 的。文件中指明的相关路径。

2023-03-21 20:51:09 132

原创 【Visual Leak Detector】在 QT 中使用 VLD(方式一)

将 VLD 安装目录下的 lib 库及 include 文件拷贝到 QT 安装目录的 lib 文件夹及 include 文件夹下。我的 QT 版本是 5.9.2,编译器选择 MSVC2015 32bit 及 MSVC2015 64bit,VLD 安装目录为。这一种使用方式的缺点是,当把项目拷贝到别的电脑上编译运行时,需要按流程重新配置 VLD 环境。但优点是在一台电脑上配置完成后,用的时候十分方便,包含头文件就可以使用,不需添加任何多余的代码。模式,编译运行,就可以正常使用了。文件夹下的一个库文件。

2023-03-21 18:46:54 196 1

原创 【Visual Leak Detector】安装 VLD

此时会出现一个弹窗,提示 ”在安装前需关闭 Visual Studio“,若正开着 Visual Studio,关闭它后再点击。简要说明了 VLD 工具的用途及亮点,这一篇介绍它的安装。使用 VLD 内存泄漏检测工具辅助开发时整理的学习笔记。界面代表安装完成,可以开始在项目中使用了。这一步是让用户确认一下自己前几步的设定,点击。,根据个人喜好可以设置为不同的路径,点击。绿色按钮可下载工具的安装程序。设置安装目录,我设置成了。使用默认值即可,点击。三个都打勾选上,点击。

2023-03-21 16:35:10 169

原创 【Visual Leak Detector】简介

Visual Leak Detector 简称 VLD,是 Windows 平台下用于 C/C++ 代码内存泄漏检测的开源工具,使用起来比较简单,配置好环境后包含头文件,就可以在运行时自动检测是否存在内存泄漏,并在指定位置(控制台或者文本文件)输出检测报告。该工具最初由开发,但是后面 2.0 版本的特性都由实现,在版本迭代历史中看到,最新的版本是 2017 年 10 月 17 日发布的 v2.5.1,开源遵循 LGPL-2.1 协议,在中也有对 VLD 的一些介绍。

2023-03-21 00:04:26 570

原创 【QCustomPlot】版本迭代日志

使用 QCustomPlot 绘图库辅助开发时整理的学习笔记。本篇总结 QCustomPlot 在各版本中的更新要点。

2023-03-13 00:40:39 204

原创 【QCustomPlot】简介

使用 QCustomPlot 绘图库辅助开发时整理的学习笔记,介绍 QCustomPlot 库的用途及相关的资源地址。

2023-03-12 20:23:51 322

空空如也

空空如也

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

TA关注的人

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