使用Matlab实现高噪声信号的FFT的频谱分析

11 篇文章 6 订阅
10 篇文章 1 订阅

使用Matlab实现高噪声信号的FFT的频谱分析

在实际的系统中,噪声可以说是无处不在,

首先生成一个包含两个频率的原始信号,f1为50hz,f2位833hz,
采样频率为fs=6400,采样点数为N=1024。那么FFT之后结果就是一个为N点的复数。每一个点就对应着一个频率点。这个点的模值,就是该频率值下的幅度特性。

原始信号

fs=6400;
t=0:1/fs:0.6;
f1=50;
f2=833;
x=sin(2pif1t)+sin(2pif2t);

利用mathlab的plot函数输出波形,如图:

在这里插入图片描述

原始信号FFT结果

对上面信号进行fft变换:

y=fft(x,N);输出fft的频谱如下图:

在这里插入图片描述可以看出,在50hz和833hz的频点上,信号幅值为明显的峰值。

加噪信号

我们利用mathlab的randn函数,为

x=x+randn(1,length(x));

randn函数是产生均值为0,方差 σ^2 = 1,标准差σ = 1的正态分布的随机数或矩阵的函数。加上噪声后,

原始信号波形如下:

在这里插入图片描述

加噪信号FFT结果

再次进行fft变换,结果如下:

在这里插入图片描述从图中可以看到随机噪声对频谱的识别影响并不大。

其他加噪函数

在mathlab中,噪声函数还有正态分布随机数的函数normrnd,normrnd和randn中均适用于生成正态分布的随机数,区别在于normrnd可以自己指定均值MU和方差sigma。而randn生成的是标准的正态分布(即MU=0,sigma=1)。

我们选择x=x+normrnd(0,4,1,length(x))对原始信号加入噪声:

加噪波形为:

在这里插入图片描述在时域图行,基本上已经看不出什么波形了

再次做FFT变换,基于fft的对称性,我们只看前一半波形,

在这里插入图片描述可以看出,原始波形的频率还是可以识别出来的。如果再经过一定的数字滤波,波形会更清晰。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cyjbj

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值