news 2026/10/23 17:37:20

信号分析与处理实验全解析:从时域到频域再到系统

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
信号分析与处理实验全解析:从时域到频域再到系统

简介:这份资源是南京邮电大学「信号分析与处理实验」课程的完整实验报告,面向正在修读数字信号处理、信号与系统相关课程的高校学生,以及需要借助 MATLAB 完成实验与课程设计的自学者。报告覆盖信号的产生和运算、连续时间信号的频域分析、时域采样与重建、离散傅里叶变换及应用等核心实验,并延伸至连续时间系统频域与复频域分析、数字滤波器设计及信号处理综合应用,配有程序代码、波形图与结果解析,便于对照理解时域与频域特性。资源包共 1 个 docx 文件,约 1.02MB,内容为可直接参考的实验报告文档,结构完整、条理清晰。目前已有 952 人学习下载,适合作为实验预习、报告撰写与 DSP 入门练习的参考材料。

1. 信号分析与处理实验:一张从时域到频域再到系统的知识地图

很多人复习信号分析与处理时,习惯按教材章节从头翻,翻到傅里叶变换已经忘了拉普拉斯,翻到滤波器又忘了采样定理。这门课真正的难点不在单个公式,而在于时域、频域、复频域三条线始终交织在一起。这份实验报告把整门课拆成四个实验:信号的产生和运算、连续时间信号的频域分析、信号的时域采样和重建、离散傅里叶变换与应用,后面还延伸到连续时间系统的频域和复频域分析、数字滤波器设计与综合应用。梳理下来会发现,它其实是一条完整链路:先会造信号,再看清信号的频率成分,然后理解采样为什么不会丢信息,最后用系统去改变信号。适合正在做实验报告、准备期末复习、或者想用 MATLAB 把 DSP 概念跑通的人。下面按知识模块逐层拆开,重点标出容易翻车的地方。

2. 信号产生与基本运算:离散序列和连续信号的复习重点

2.1 常用信号在 MATLAB 里到底怎么表示

实验一的核心是“造信号”。连续信号和离散序列在 MATLAB 里的表示方式完全不同,这是第一个容易混淆的点。连续时间信号用时间向量加plot,离散序列用序号向量加stem。单位阶跃序列u[n]不能直接调用阶跃函数,而是用逻辑判断或分段拼接。比如要画u[n]和u[n+7],本质是控制序列的起始位置:

% 单位阶跃序列 u[n] 与 u[n+7] 的对比 n = -10:20; x = [zeros(1,10) 1 ones(1,20)]; % n=0 处为 1,之前为 0 subplot(1,2,1); stem(n,x); xlabel('n'); ylabel('u[n]'); M = 7; xd = [zeros(1,10+M) 1 ones(1,20-M)]; % 左移 7 位,起点提前 subplot(1,2,2); stem(n,xd); xlabel('n'); ylabel('u[n+7]');

这里的关键参数是zeros(1,10)和ones(1,20)的长度,它们决定了阶跃点落在哪个序号上。移位操作在离散域就是数组索引的平移,不是时间轴整体加减。复指数序列x[n]=1.5e^{(0.2+j3)n}则要注意实部和虚部分开画,real和imag分别取分量,否则一张图看不出复数序列的物理意义。实指数序列x[n]=2(0.8)^n用点乘.^而不是矩阵乘,这是 MATLAB 里最常见的翻车点之一。

正弦序列的周期判断是实验一的重点。x[n]=2.5sin(0.16πn-π/2)的基本周期不是直接读数字,而是用2π/ω算,再取最小正整数。ω=0.16π时,2π/0.16π=12.5,不是整数,所以这个序列其实不是周期序列。但实验里给出的答案是 12.5,说明它按连续正弦的周期来理解。这里要区分“离散周期序列”和“连续正弦采样后的周期”,考试里经常在这设陷阱。

2.2 序列运算与线性卷积的易错细节

序列的加、乘、移位、卷积是实验一的操作重点。加法和乘法要求两个序列长度一致、序号对齐,否则 MATLAB 会直接报错。偶部x_e[n]和奇部x_o[n]的分解公式是:

% 序列奇偶分解 n = -2:2; x = [1 2 4 -5 -2]; y = fliplr(x); % 翻转序列 xe = 0.5*(x + y); % 偶部 xo = 0.5*(x - y); % 奇部

fliplr只翻转数值顺序,不改变序号向量。如果序列不是关于n=0对称,翻转后对应的序号会错位,这是最容易忽略的地方。线性卷积conv(x,h)的结果长度是length(x)+length(h)-1,画图时序号要从 0 开始重新生成,不能沿用原来的n。实验里x[n]=(-1)^n和h[n]=cos(0.25πn)卷积后长度是 22,序号0:21,如果直接stem(y)而不给序号,横轴含义就丢了。

连续正弦信号x_a(t)=cos(5000πt)+4sin(2000πt)sin(3000πt)的绘制要注意采样间隔。t=0:0.5e-6:6e-3表示 0.5 微秒步长,这个精度是为了让 5000π 的高频分量不混叠。如果步长取太大,画出来的波形会失真,看起来像低频信号,这是时域绘图里最隐蔽的坑。

3. 连续时间信号频域分析:傅里叶级数、频谱与吉布斯现象

3.1 周期矩形脉冲的频谱变化规律

实验二的核心是周期信号的傅里叶级数展开和频谱绘制。周期矩形脉冲信号的双边幅度谱和相位谱由sinc函数决定,谱线间隔是基频Ω₀=2π/T。当T从 0.5s 增大到 1s、2s 时,谱线变得更密集,幅度整体下降。这个规律可以总结成一句话:周期越长,频谱越密,幅度越小。因为周期信号的能量被分散到更多谐波上,单根谱线的幅度自然降低。

用 MATLAB 画双边谱时,要注意正负频率都要画,幅度谱是偶对称,相位谱是奇对称。如果只画正频率,会漏掉一半信息,相位谱的符号也容易搞反。实验里A=1, τ=0.1s, T=0.5s的参数下,第一零点在2π/τ附近,这个截止频率决定了频谱的主瓣宽度。

3.2 谐波叠加与吉布斯现象的定量计算

周期矩形脉冲用有限项傅里叶级数重构时,不连续点附近会出现过冲,这就是吉布斯现象。实验里N=15, 25, 50的合成波形显示:N越大,波形越接近矩形脉冲,但过冲峰值不会消失,而是趋近于一个常数。这个常数大约是跳变幅度的 8.95%。实验程序p2_4直接算出了最大过冲:

function p2_4(N) t = -2:1e-4:2; A = 1; tau = 1; T = 2; Omega_0 = 2*pi/T; c0 = A*tau/T; f_N = c0*ones(1,length(t)); for k = 1:N f_N = f_N + 2*A*tau/T*sinc(k*Omega_0*tau/2/pi)*cos(k*Omega_0*t); end overshoot = max(f_N); fprintf('The maximum overshoot is %.4f\n', overshoot); end

运行结果是1.0896,即过冲约 8.96%。这个数字要记住,考试里常问“吉布斯现象会不会随 N 增大而消失”,答案是不会,只会越来越靠近不连续点。另一个易错点是sinc函数的定义,MATLAB 的sinc(x)是sin(πx)/(πx),不是sin(x)/x,代入时要把π处理好,否则频谱包络形状会完全不对。

3.3 男声女声频谱差异与语音转换思路

实验二还涉及实际音频的 FFT 分析。男声基音频率低,能量集中在低频,波形粗糙;女声基音频率高,能量分布更均匀,波形细致。在语音转换中,男声转女声的核心操作是基频调整,同时配合声道长度模拟和谐波分布调整。基频调整可以通过重采样或相位声码器实现,声道长度调整则改变共振峰位置。这些方法在 MATLAB 里可以用resample和滤波器组近似实现,但实验里只要求定性比较,不要求完整转换。

4. 时域采样与重建:奈奎斯特间隔和混叠的判定方法

4.1 采样定理的验证逻辑

实验三的核心是采样定理。升余弦脉冲信号的频谱大部分集中在[0, 2π/τ],截止频率Ω_m=2,奈奎斯特间隔T_s=π/2。当T_s=π/2时,频谱未混叠;当T_s=2时,频谱发生混叠。判定混叠的方法很直接:看采样后信号的频谱在Ω_m以外是否还有重叠。如果采样频率低于两倍截止频率,高频分量会折叠到低频,频谱出现叠加。

这里最容易错的是把采样间隔和采样频率搞反。T_s越小,采样频率越高,越不容易混叠。实验里T_s=π/2是临界值,T_s=2大于临界值,所以混叠。复习时要记住:奈奎斯特频率是2Ω_m,奈奎斯特间隔是π/Ω_m,两者互为倒数关系。

4.2 重建误差的来源与低通滤波器截止频率的影响

信号重建用理想低通滤波器从采样信号中恢复原信号。实验 3.4 把T_s改为 2,低通截止频率改为Ω_c=Ω_m,重建误差大大增加。误差来源有两个:一是采样间隔增大导致混叠,高频分量折叠后无法通过低通滤波器分离;二是低通截止频率减小,把部分有效高频分量也滤掉了。这两个因素叠加,误差自然变大。

重建时要注意低通滤波器的截止频率必须满足Ω_m ≤ Ω_c ≤ Ω_s - Ω_m,其中Ω_s=2π/T_s。如果Ω_c取太小,会丢失信号的高频细节;取太大,又会引入混叠分量。实验里Ω_c=Ω_m是下限,刚好卡在边界上,所以误差明显。实际重建时通常取Ω_c=Ω_s/2,但前提是Ω_s ≥ 2Ω_m。

5. 离散傅里叶变换与数字滤波器:从 DFT 到系统频域分析

5.1 DFT 的计算要点与频谱分析

离散傅里叶变换把有限长序列变换到频域,公式是X[k]=Σx[n]W_N^{nk},其中W_N=e^{-j2π/N}。MATLAB 里用fft实现,但要注意fft的输出是0到N-1的频率索引,画频谱时要用fftshift把零频移到中心。如果不移,低频分量会出现在两端,看起来像高频,这是 DFT 分析里最常见的视觉误导。

DFT 的频率分辨率是fs/N,N越大分辨率越高,但计算量也越大。实验里通常取N=1024或2048,既能看清频谱细节,又不会太慢。如果信号长度不够,要补零到N,补零不改变频谱形状,只改变采样密度,这一点经常被误解为“补零能提高分辨率”,其实不能。

5.2 数字滤波器设计与系统频域分析

数字滤波器设计是实验四的延伸内容。IIR 滤波器用双线性变换法,从模拟原型映射到数字域;FIR 滤波器用窗函数法,直接设计单位脉冲响应。MATLAB 里butter、cheby1、fir1分别对应不同类型的滤波器。设计时要关注通带截止频率、阻带截止频率、通带波纹和阻带衰减四个参数。

连续时间系统的频域和复频域分析则涉及系统函数H(s)和频率响应H(jΩ)。拉普拉斯变换把微分方程变成代数方程,傅里叶变换是拉普拉斯变换在虚轴上的特例。复习时要能把H(s)的零极点分布和频率响应的形状对应起来:极点靠近虚轴,谐振峰越尖锐;零点靠近虚轴,幅度响应出现凹陷。

6. 易漏点与易错点:采样、卷积、频谱分析里最容易翻车的地方

6.1 易漏点一:离散序列的序号向量

为什么漏:很多人只关注序列值,忘了序号n也是信号的一部分。stem(n,x)里n和x必须等长,且n的起始值决定信号的绝对位置。

怎么补:每次画图前先检查length(n)==length(x),移位操作后重新生成n,不要复用旧的序号向量。

6.2 易漏点二:卷积结果的序号范围

为什么漏:conv(x,h)只返回数值,不返回序号。如果直接stem(y),横轴默认从 1 开始,和实际序号对不上。

怎么补:卷积后手动生成序号n=0:length(y)-1,如果原序列有负序号,还要做相应平移。

6.3 易漏点三:采样定理的临界条件

为什么漏:把T_s和f_s混用,或者把奈奎斯特频率记成Ω_m而不是2Ω_m。

怎么补:记住f_s ≥ 2f_m,T_s ≤ 1/(2f_m)。实验里Ω_m=2,所以T_s ≤ π/2,T_s=π/2是临界,T_s=2超了。

6.4 易漏点四:FFT 频谱的横轴映射

为什么漏:fft输出索引0:N-1,对应的频率是0:fs/N:fs-fs/N,不是0:fs。如果不做fftshift,零频在第一个点,正负频率分居两端。

怎么补:画频谱时用f=(0:N-1)*fs/N,再用fftshift把零频移到中心,横轴改成(-N/2:N/2-1)*fs/N。

6.5 易漏点五:吉布斯过冲的定量值

为什么漏:以为N增大过冲会消失,或者记不住 8.95% 这个数。

怎么补:记住过冲峰值约为跳变幅度的 1.0895 倍,即 8.95%。实验程序p2_4可以直接算出这个值,复习时跑一遍加深印象。

7. 复习清单:从实验报告到考点的查漏补缺方法

复习信号分析与处理,最有效的方式不是重读教材,而是把四个实验的 MATLAB 代码重新跑一遍,每跑一个就问自己三个问题:这个操作对应哪个理论公式?参数改了会怎样?如果结果不对,最可能错在哪?下面这份清单按模块整理,可以直接对照查漏。

模块核心公式/操作易错点自检方法
信号产生stemvsplot,zeros/ones拼接序号向量长度不匹配检查length(n)==length(x)
序列运算fliplr,conv,奇偶分解翻转后序号错位,卷积序号从 0 开始画图前手动生成序号
傅里叶级数sinc函数,双边谱sinc定义含 π,相位谱符号正负频率都画,检查对称性
吉布斯现象有限项重构,过冲 8.95%以为 N 增大过冲消失跑p2_4看max(f_N)
采样定理T_s ≤ π/Ω_m,混叠判定T_s和f_s混用算2Ω_m和π/Ω_m
信号重建低通滤波,截止频率Ω_c取太小丢高频检查Ω_m ≤ Ω_c ≤ Ω_s-Ω_m
DFTfft,fftshift横轴频率映射错误用f=(0:N-1)*fs/N
滤波器设计butter,fir1通带阻带参数混淆画幅频响应验证

复习时建议按这个顺序走:先跑实验一,确认能造出所有基本信号;再跑实验二,把周期矩形脉冲的频谱和吉布斯现象过一遍;然后跑实验三,改T_s看混叠;最后跑实验四,用fft分析一段音频,再用butter设计一个低通滤波器滤掉高频。每步都记录参数和结果,形成自己的参数笔记。

我自己的习惯是:每次改参数前先写下预期结果,跑完对比。如果和预期不符,先检查序号向量和频率轴,再检查公式里的 π 和 2π。从那以后我每次做采样实验都强制走一遍T_s ≤ π/Ω_m的判断,再也没在混叠判定上翻过车。希望这份梳理帮到你。

本文还有配套的精品资源,点击获取

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/23 17:25:57

长江经济带GIS矢量图构建:从数据整理到标准化底图实战

简介:这是一份面向GIS研究者、规划与政策分析人员的2015年长江经济带地级市矢量底图数据包,可直接服务于区域经济对比、生态环境评估和城市边界分析等场景。数据内包含长江经济带沿线所有地级行政区的边界、行政划分及地理位置信息,并附有道路…

作者头像 李华
网站建设 2026/10/23 16:38:13

Python 3.11错误定位与异常处理新机制深度解析

简介:本资源是Python 3.11.0官方中文版完整教程PDF,面向Python中高级学习者、开发者及技术文档查阅者,系统解决新版本特性理解难、迁移适配无依据、类型提示实践缺参考等实际问题。全书覆盖PEP 657细粒度错误定位、PEP 654异常组、PEP 678异常…

作者头像 李华
网站建设 2026/10/23 16:28:08

扫码枪网口TCP通讯demo:从连接建立到稳定取码的工程实践

简介:这份资源面向需要将基恩士扫码枪接入上位机系统的开发者,提供网口TCP通讯的可运行demo与完整源码,解决工业现场扫码数据实时采集与连接稳定性问题。压缩包共51个文件,约291KB,以C#源码文件为主,辅以项…

作者头像 李华
网站建设 2026/10/23 16:27:53

RClimDex实战:极端气候指数计算与数据质控全流程

简介:RClimDex 是加拿大气象部门研发的极端气候指数计算软件,已被 CCl/CLIVAR ETCCDMI 国际工作坊广泛使用,面向气候科学家、研究人员及气候变化专业学生。软件包内为 1 份 doc 格式的完整用户手册,约 600KB,系统讲解 …

作者头像 李华
网站建设 2026/10/23 16:20:19

C# 实现老游戏兼容性补丁工具:CM0102Patcher 源码解析与二次开发

简介:CM0102Patcher 是一款面向《冠军经理 0102》玩家的 C# 开源补丁工具集,适合希望深度定制游戏体验、修复旧版兼容问题的中高级玩家与爱好者。资源包共 89 个文件,以 61 个 cs 源码文件与 17 个 resx 界面资源为主,另含 csproj…

作者头像 李华
网站建设 2026/10/23 16:20:17

个人博客系统源码下载:最小骨架、二次开发与上线避坑

简介:这份个人博客系统源码基于 SSH2(SpringStruts2Hibernate3)与 Oracle 数据库开发,面向正在学习 Java Web 三层架构、希望通过一套可运行案例理解框架整合的初中级开发者,也适合作为课程设计或毕业设计的参考工程。…

作者头像 李华