程序员的信号处理笔记 (1):从“上帝视角”看信号基础
作为一名计算机/AI背景的学生,我们习惯了离散的数据(数组、张量),但物理世界是连续的。 最近开始系统性复习信号处理,我发现如果跳出死记硬背公式的怪圈,从物理直觉和工程实现的角度去理解,这些概念其实非常优美且实用。这是我的第一篇学习总结,涵盖了信号基础、系统特性(LTI)与冲激响应。 1. 核心概念:连接两个世界的桥梁连续 (CT) vs 离散 (DT)现实世界的声音、温度、电压是连续变化的(Continuous Time, CT),但在计算机中,我们只能存储离散的点(Discrete Time, DT)。 直觉理解:就像电影胶卷,虽然画面是跳跃的(一帧帧),但只要播放得够快,大脑就会把它补全为连续动作。 采样 (Sampling):这就是把现实世界“数字化”的过程。 关键点:采样率决定了我们能保留多少原始信息(后续会学到奈奎斯特采样定理)。 冲激响应 (Impulse Response)这是一个让我产生顿悟的概念。 定义:如果你给系统一个无限短、无限强的脉冲(Unit Impulse,就像踢了系统一脚),系统后续产生的“回声”或“余震”,就是冲激响应...
深入浅出傅里叶变换:从信号分解到视觉重构
[TOC] 深入浅出傅里叶变换:从信号分解到视觉重构 “如果不了解傅里叶变换,你就无法真正理解现代电子文明。” 这句话一点都不夸张。从我们听的 MP3 音乐,到看的 JPEG 图片,再到使用的 5G 网络,甚至是你刚才按下的键盘信号处理,背后都站着傅里叶变换(Fourier Transform, FT)这个巨人。 本文将跳出枯燥的公式推导,从直观理解出发,结合Python 代码实战,带你领略图像处理中频域的魅力。 一、 核心直觉:两个世界的桥梁1.1 时域 vs 频域我们的世界大部分时间是以时域(Time Domain)展现的: 声音:空气压强随时间的变化。 图像:像素亮度随空间位置的变化。 傅里叶变换告诉我们:任何连续的周期信号,都可以由一组不同频率、不同振幅、不同相位的正弦波(或余弦波)叠加而成。 这就像是一个棱镜,把混合在一起的“白光”(时域信号),分解成了清晰的“七色光谱”(频域信号)。 1.2 数学直觉:欧拉公式与旋转的圆核心公式: F(\omega) = \int_{-\infty}^{\infty} f(t) e^{-i\omega t} dt这里的...
编程语言知识点二
[TOC] 编程语言中的一些基础语法一、结构体中的内存对齐问题 内存对齐就是编译器为了让 CPU 访问内存更快,按照一定的规则将结构体中的数据放置在特定的内存地址上,而不是简单地紧凑排列 1、为什么要进行内存对齐? 主要有两个原因:性能和平台兼容性 性能原因(主要原因): CPU 访问内存并不是一个字节一个字节读取的,而是以“块”(通常是 Word,即机器字长,如 4 字节或 8 字节)为单位读取。 如果对齐: 读取一个 int(4字节)只需要一次内存访问。 如果不对齐: 数据可能跨越了两个内存块,CPU 需要进行两次内存访问,然后通过位移和拼接才能拿到完整数据。这会大大降低效率。 平台原因(移植性): 某些硬件平台(如某些 ARM 架构或早期的 SPARC)要求特定类型的数据必须存储在特定的内存地址上(例如 int 必须在 4 的倍数地址)。如果访问未对齐的地址,可能会导致硬件异常(Crash)。 2. 内存对齐的三大黄金规则在默认情况下(未手动指定对齐系数),编译器遵循以下规则: 规则一:成员对齐结构体中第一个成员的偏移量(Offset)为...
编程语言知识点一
[TOC] 编程语言知识点一一、在main执行之前和之后的操作 在 C++ 程序中,main 函数虽然是程序员编写代码的入口,但并不是程序运行的真正起点,也不是终点。在 main 执行前后,操作系统和 C++ 运行时库(C Runtime Library, CRT)会进行一系列重要的初始化和清理操作。 1、在 main 执行之前的操作(初始化阶段): 在控制权移交给 main 之前,程序主要进行静态资源的初始化和运行环境的准备。 a、所有静态存储期的变量初始化 在 main 之前初始化的:1、全局变量 2、全局 static 变量 3、全局对象 4、全局 static 对象 5、类的 static 成员变量(这个 static 变量属于类,而不是对象) 不在 main 之前初始化的:局部的 static...
Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub. Quick StartCreate a new post1$ hexo new "My New Post" More info: Writing Run server1$ hexo server More info: Server Generate static files1$ hexo generate More info: Generating Deploy to remote sites1$ hexo deploy More info: Deployment