Matlab用巴特沃斯带通滤波器产生窄带高斯噪声并进行时域频域分析
通信原理大作业中的一部分,使用matlab仿真:
产生信道高斯白噪声,设计信道带通滤波器对高斯白噪声进行滤波,得到窄带高斯噪声。对信道带通滤波器的输入输出的噪声的时域、频域特性进行统计和分析,画出其时域和频域的图形。
高斯白噪声产生
首先确定采样频率和总时长,以此确定总采样点数和时间向量:
fs=1000;%采样频率hz
T_N=1;%总时间s
t=1/fs:1/fs:T_N;%时间向量
L=T_N*fs;%样本数量
然后用wgn产生高斯噪声:
z=wgn(L,1,power);
当然,也可以用原始的产生正态随机数的方法:
z=sigma.*randn(L,1)
注意power的单位是dbW,转换公式如下:
p(dBw)=10logP(W)p (dBw) = 10\log P (W)p(dBw)=10logP(W)
如果功率P为1w,折算为dBw后为0dBw。
另外高斯白噪声的方差是噪声功率:
P=σ2P=\sigma^2P=σ2
下面到了关键的环节,快速(离散)傅里叶变换fft:
fft_z=fft(z);
对噪声z从时域转换为频域,注意到如果要获得单边频谱,还需要做以下操作:
P = abs(fft_z/L);%取幅频特性,除以L
P = P(1:L/2+1);%截取前半段
P(2:end-1)=2*P(2:end-1);%单侧频谱非直流分量记得乘以2
f = fs*(0:(L/2))/L;%频率,最多到一半(奈奎斯特采样定理)
fft的结果是关于采样频率的一半对称的,幅度需要除以采样点个数L。从双边谱到单边谱需要对非直流分量乘以2。注意到由于奈奎斯特采样定理,原信号的最大频率不会超过采样频率的一半。假如我们设置采样频率为1000Hz,那么频域的最大频率也就是500Hz。
这些操作都是从mathwork官网上找到的,参考链接。不得不说matlab的帮助文档尤其是里面的示例真香!
高斯白噪声的时域和频域图如下:
白噪声白噪声,就是频谱上也是到处都是高斯分布。
巴特沃斯滤波器
用butter函数获得8阶巴特沃斯滤波器系数,带通范围100-200Hz
[b,a]=butter(8,[100/(fs/2),200/(fs/2) ]);
第一个参数是滤波器阶数,第二个参数是归一化的带通频率,注意到fs/2是信号的最大频率。
用下面这个函数可以画出滤波器特性曲线:
freqs(b,a)
(我其实看不懂)
滤波
用flutter函数快乐的滤波~
lvbo_z=filter(b,a,z);
应该是对原时域信号z滤波,我原先这里对fft后的信号滤波了,结果怎么都不对,debug了好久。
滤波后的信号lvbo_z也是个时域信号,用上述相同的办法fft后画单边频谱,可以得到窄带高斯噪声:
可以明显发现滤波后的信号时域上看起来更奇怪了,频域上看,是把100-200Hz频率分量保留,其余频率分量滤除了。
做个对比,带通范围调到300-400Hz:
频率更高了,波形看起来更密了。
刚刚学了怎么做动图,这就做了个放个对比图在这里:
好家伙,制作动图都要花钱,不花钱就给你贴水印,这一点也不开源。
全部代码:
fs=1000;%采样频率hz
T_N=1;%总时间s
t=1/fs:1/fs:T_N;%时间向量
L=T_N*fs;%样本数量
power=3;%噪声功率,单位为dbw
z=wgn(L,1,power);
subplot(2,1,1)
plot(t,z)
xlabel("时间/s")
ylabel("幅度/v")
title("高斯白噪声(时域)")fft_z=fft(z);%快速傅里叶变换之后的噪声
P = abs(fft_z/L);%取幅频特性,除以L
P = P(1:L/2+1);%截取前半段
P(2:end-1)=2*P(2:end-1);%单侧频谱非直流分量记得乘以2
f = fs*(0:(L/2))/L;%频率,最多到一半(奈奎斯特采样定理)
subplot(2,1,2)
plot(f,P)
xlabel("频率/Hz")
ylabel("幅度/v")
title("高斯白噪声(频域)")[b,a]=butter(8,[300/(fs/2),400/(fs/2) ]);%获得8阶巴特沃斯滤波器系数,100-200Hz
figure(2)
freqs(b,a)%画滤波器特性曲线
lvbo_z=filter(b,a,z);%滤波figure(3)
subplot(2,1,1)
plot((lvbo_z))
xlabel("时间/Hz")
ylabel("幅度/v")
title("窄带高斯噪声(时域)")fft_lvbo_z=fft(lvbo_z);%傅里叶变换
P = abs(fft_lvbo_z/L);%取幅频特性,除以L
P = P(1:L/2+1);%截取前半段
P(2:end-1)=2*P(2:end-1);%单侧频谱非直流分量记得乘以2
subplot(2,1,2)
plot(f,P)
xlabel("频率/Hz")
ylabel("幅度/v")
title("窄带高斯噪声(频域)")
书上的知识,尤其是技术上的,网络上还真是难找啊。
谢邀,通信原理80,班里倒数。
Matlab用巴特沃斯带通滤波器产生窄带高斯噪声并进行时域频域分析相关推荐
- 巴特沃斯滤波器matlab代码,MATLAB实现巴特沃斯数字滤波器
MATLAB实现巴特沃斯数字滤波器 前因:因为要准备保研面试,今年暑假就重新把烂尾的项目捡起来了. 为了提取采集到的脑电信号中有用的部分,想用数字带通滤波器实现,浏览了很多帖子.要不是只有代码,没有注 ...
- MATLAB:巴特沃斯低通滤波器过滤信号
MATLAB:巴特沃斯低通滤波器过滤信号 实验内容产生两个不同频率的正弦信号,设计合适的滤波器,输出其中的一个信号,滤除另外的一个信号. 代码: %生成两个不同频率的信号 clc; T=2;%时域长度 ...
- 用matlab做巴特沃斯低通滤波器
用matlab做巴特沃斯低通滤波器 趁着暑假,做一个心电图的matlab实验,遇到了滤波器问题,网上代码比较杂乱,做了一个汇总整理. 主要做了一个简单的低通滤波器并以三角函数为例子进行低通滤波. 基本 ...
- 巴特沃斯低通滤波器归一化matlab,基于MATLAB设计巴特沃斯低通滤波器
<基于MATLAB设计巴特沃斯低通滤波器>由会员分享,可在线阅读,更多相关<基于MATLAB设计巴特沃斯低通滤波器(6页珍藏版)>请在人人文库网上搜索. 1.基于MATLAB设 ...
- 巴特沃斯带通滤波器matlab程序_带通带阻滤波器频率计算方法如何算
目前滤波器的分析和设计方法有两种:一是影像参数分析法,二是工作参数分析法(又称综合法).前者设计简单,易于掌握,但这种滤波器的实测滤波特性与理论上的预定特性差别较大,在通带内又不能取得良好阻抗匹配,很 ...
- Matlab实现 理想低通、巴特沃斯低通、高斯低通、理想高通、巴特沃斯高通、高斯高通(d=10,50,150)
数字图像处理第二次编程课后作业 理想低通(d=10,50,150): close all; clear all;%% ---------Ideal Lowpass Filters (Fre. Doma ...
- 基于MATLAB下巴特沃斯IIR数字滤波器的实现
这里写目录标题 实验目的及要求 实验步骤 实验结果及分析 总结 实验目的及要求 1.学生自己运用MATLAB设计IIR数字低通滤波器.方法不限: 2.实现信号的滤波 实验步骤 参考巴特沃斯滤波器的实验 ...
- 数字信号处理|Matlab设计巴特沃斯低通滤波器(冲激响应不变法和双线性变换法)
一.前言 1. 设计流程 2.系统频率响应 2.1频响图 系统函数 H 是一个复数,其图谱分为:幅度谱.相位谱 幅度谱 x轴:模拟频率f(数字频率w转化来)[单位:赫兹Hz] y轴:|H1|幅度[一般 ...
- 基于matlab的巴特沃斯滤波器设计
一.butterworth滤波器也称最平响应特性滤波器,其特征多项式为: |K(jΩ)|^2=K(jΩ)K(-jΩ)=(Ω/Ωc)^2N 巴特沃斯滤波器的模平方函数为: |H(jΩ)|^2=1/(1+ ...
- 【老生谈算法】matlab实现巴特沃斯IIR滤波器程序设计源码
matlab巴特沃斯IIR滤波器程序设计 1.文档下载: 本算法已经整理成文档如下,有需要的朋友可以点击进行下载 序号 文档(点击下载) 本项目文档 [老生谈算法]matlab巴特沃斯IIR滤波器程序 ...
最新文章
- 【推荐】Flex+asp.net上传文件
- 【Python】数据提取xpath和lxml模块(豆瓣电影排行榜的爬虫)
- .NET零基础入门06:面向对象入门
- GPU编程与CG语言之阳春白雪下里巴人 读书笔记
- 怎么提交 checkbox 表单_8. html form表单
- Spring集成–使用RMI通道适配器
- Java获取本地ip方法_Java获取本地IP方法详解
- 一只小蜜蜂(HDU-2044)
- Python UnicodeEncodeError: ‘gbk‘ codec can‘t encode character 解决方法
- autofac文档:适配器和装饰器
- python三种基本结构类型_Python入门_浅谈数据结构的4种基本类型
- at24c32 linux,AT24C32使用方法总结
- [翻译]Templates in WPF
- 【开箱即用】HTML5教程
- CodeForces 868C Qualification Rounds
- 子选择器和后代选择器
- Java怎么除以2_哪个更好的选项用于将整数除以2?
- JME-java开发3D游戏
- 树莓派一键变身无线路由器
- jQuery移动端手机键盘输入车牌号代码【附加新能源车牌】