news 2026/4/23 13:55:01

用MATLAB玩转噪声信号与数字滤波器

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
用MATLAB玩转噪声信号与数字滤波器

MATLAB 数字信号处理 滤波器 低通滤波器 巴特沃斯滤波器 fir滤波器 iir滤波器 信号与系统 通信原理 相关实验和仿真 模拟系统调制解调仿真音频信号处理 脉冲压缩技术 GUI界面设计低通高通带通滤波器matlab 通信原理 信号的调制解调 AM调制解调 FM调制解调 基带信号调制 余弦滚降 数字信号处理 matlab仿真 通信原理仿真 OOK 2pSK BPSK 1.噪声信号的频谱分析。 2.设计数字滤波器和画出频率响应。 利用窗函数和最佳逼近的方法设计FIR滤波器;最后,利用MATLAB中的函数freqz画出各滤波器的频率响应。 3.用滤波器对噪声图像进行滤波。 4.比较几种滤波器去滤波前后噪声图像的波形及频谱。

先来点刺激的——生成白噪声并看它的频谱。MATLAB里造噪声就跟炒菜放盐一样简单:

fs = 1000; % 采样率 t = 0:1/fs:1; noise = 0.5*randn(size(t)); % 高斯白噪声 figure subplot(2,1,1) plot(t,noise) title('时域波形') N = length(noise); f = (-N/2:N/2-1)*(fs/N); subplot(2,1,2) plot(f, 20*log10(fftshift(abs(fft(noise))))) title('频域特性')

这段代码里的骚操作:fftshift把负频率部分移到左边,20*log10转换成dB值显示。跑完就能看到噪声信号在全频带均匀分布的经典特征。

FIR滤波器设计实战:咱们用汉明窗和最小二乘法两种姿势搞起。窗函数法适合快速实现:

fc = 100; % 截止频率 order = 50; b = fir1(order, fc/(fs/2), 'low', hamming(order+1)); freqz(b,1,1024,fs)

fir1的第三个参数要是归一化频率,这里用采样率的一半做分母。想提升阻带衰减?试试切比雪夫逼近:

b = firpm(order, [0 0.15 0.25 1], [1 1 0 0], [1 2]); freqz(b,1,1024,fs)

这个设计参数里的[1 2]权重分配让通带波动比阻带小一半。跑出来的频率响应曲线明显比窗函数法的过渡带更陡峭。

IIR滤波器也不能少,巴特沃斯是经典选择:

[b,a] = butter(4, fc/(fs/2), 'low'); freqz(b,a,1024,fs)

四阶巴特沃斯的相频特性明显非线性,这点在时域滤波时会产生相位失真。不过计算量比FIR小得多,适合实时处理。

MATLAB 数字信号处理 滤波器 低通滤波器 巴特沃斯滤波器 fir滤波器 iir滤波器 信号与系统 通信原理 相关实验和仿真 模拟系统调制解调仿真音频信号处理 脉冲压缩技术 GUI界面设计低通高通带通滤波器matlab 通信原理 信号的调制解调 AM调制解调 FM调制解调 基带信号调制 余弦滚降 数字信号处理 matlab仿真 通信原理仿真 OOK 2pSK BPSK 1.噪声信号的频谱分析。 2.设计数字滤波器和画出频率响应。 利用窗函数和最佳逼近的方法设计FIR滤波器;最后,利用MATLAB中的函数freqz画出各滤波器的频率响应。 3.用滤波器对噪声图像进行滤波。 4.比较几种滤波器去滤波前后噪声图像的波形及频谱。

图像降噪实战:读入带椒盐噪声的图片试试效果

img = im2double(imread('noisy_img.jpg')); h_fir = ftrans2(b); % FIR系数转2D滤波器 img_fir = imfilter(img, h_fir); h_iir = ftrans2(b,a); % IIR系数转换 img_iir = imfilter(img, h_iir);

这里有个坑:IIR滤波器可能会引起图像边界震荡,记得用replicate选项处理边缘。滤波后的PSNR值计算:

psnr_fir = 10*log10(1/immse(img_fir, clean_img)); psnr_iir = 10*log10(1/immse(img_iir, clean_img));

数据对比显示FIR通常比同阶IIR高3-5dB,但处理时间可能是IIR的两倍以上。

频谱对比神器:把原始信号和滤波后信号做FFT叠加显示

[Pxx_orig,f] = pwelch(noise, 1024, 512, 1024, fs); Pxx_filt = pwelch(filtered_sig, 1024, 512, 1024, fs); semilogy(f, Pxx_orig, f, Pxx_filt) legend('原始信号','滤波后')

pwelch做功率谱估计比直接FFT更平滑,特别适合观察阻带衰减效果。巴特沃斯滤波器在截止频率附近的"膝盖"曲线明显,而FIR最小二乘法的阻带波纹会周期性波动。

GUI设计彩蛋:做个交互式滤波器设计工具

function update_filter() fc = get(slider,'Value'); b = fir1(50, fc/500); freqz(b,1,1024,1000,'whole',ax1); % 实时显示滤波效果 y = filter(b,1,noise); plot(ax2, y(1:200)); end

uicontrol做个滑动条控制截止频率,实现动态更新频率响应曲线和时域波形。这种实时反馈对理解滤波器特性帮助极大,比看静态图强十倍。

避坑指南

  1. FIR滤波器阶数选奇数可避免群延迟非整数
  2. IIR滤波用filtfilt实现零相位失真
  3. 图像滤波前务必做边界扩展
  4. fvtool工具可直接对比多个滤波器特性

不同场景的选择策略:实时系统首选IIR,音视频处理用FIR,图像处理可尝试中值滤波等非线性方法。下次试试把FM调制信号混入噪声,再用自适应滤波器来降噪,那才是真功夫!

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

Vue 3 缓存策略详解

Vue3缓存策略全面解析:从组件级到响应式系统的优化方案Vue3提供了多层次的缓存机制,主要包括:组件级缓存:通过KeepAlive组件实现动态组件缓存,支持LRU策略和精确控制计算属性缓存:自动缓存计算结果&#xf…

作者头像 李华
网站建设 2026/4/22 16:41:50

达索系统 SIMULIA 2026 新功能直通车|Abaqus HPC新功能介绍

01Abaqus/Standard求解器HPC性能更新介绍在Abaqus 2026x隐式求解器高性能计算的新功能更新说明中,主要介绍了AMG迭代求解器在不同软件版本中的性能提升,并且同隐式直接求解器进行了计算性能的比较。为了测试不同规模的模型在HPC中的性能提升表现&#xf…

作者头像 李华
网站建设 2026/4/23 13:19:35

PLC生产线自动装箱控制装置(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码

PLC生产线自动装箱控制装置(设计源文件万字报告讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码用PLC控制整个控制装置要达到以下要求: (1)按下控制装置启动按钮后,传送带B先启动运行,拖动空箱前移至指定位置,达…

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

Lambda架构在推荐系统中的应用与实现

Lambda架构在推荐系统中的应用与实现 关键词:Lambda架构、推荐系统、批处理层、速度层、服务层、实时推荐、离线推荐 摘要:本文深入探讨了Lambda架构在推荐系统中的实际应用。我们将从Lambda架构的基本原理出发,逐步分析其在推荐系统中的实现方式,包括批处理层、速度层和服…

作者头像 李华
网站建设 2026/4/23 12:13:15

谈谈行列式展开

行列式展开的定义(拉普拉斯展开定理)行列式的展开,正式称为拉普拉斯展开(Laplace expansion)或余子式展开(cofactor expansion),是计算n阶行列式的一种递归方法。它允许我们将高阶行…

作者头像 李华
网站建设 2026/4/23 12:12:21

2026知网AIGC检测不通过怎么办?3招教你AI率降到15%以下

2026知网AIGC检测不通过怎么办?3招教你AI率降到15%以下 我论文的知网AIGC检测报告显示67%,但那篇文章我写了整整两周。那一刻真的很崩溃。 先说结论:用比话降AI(www.bihuapass.com)处理后,半小时降到了12%…

作者头像 李华