SDR实采信号的基于功率谱的SNR估计问题及代码

本文探讨了在信号识别实验中如何通过加入高斯白噪声来仿真不同SNR下的分类器性能。由于实采信号难以直接获取所需SNR,作者提出了一种基于频域功率谱的SNR估计方法。通过计算信号和噪声的功率,可以估计SNR并调整噪声功率以达到目标SNR。文中提供了MATLAB仿真代码,并展示了仿真结果,显示增加的噪声功率与估计的SNR成反比。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述

信号识别实验需要仿真不同SNR下的分类器性能,然而基于USRP、HackRF等设备实采信号难以得到需要的SNR,因此多数文章通过加入高斯白噪声及其功率来获得要求的SNR。
常见信噪比估计有时域和频域两类。通常,基于时域的估计方法需要很强的先验条件,比如需要知道信号的功率以及噪声的功率。然而,这种先验对于实采信号来说难以获得,为此本文采用基于频域(功率谱)的SNR估计方法。

问题建模

本文采用基于功率谱的SNR估计方法,该方法介绍如下:
实采信号表示为:y(t)=s(t)+n(t)y(t)=s(t)+n(t)y(t)=s(t)+n(t)
信号的功率谱密度表示为:Y(f)Y(f)Y(f)
则,有用信号带宽内的总功率可以表示为:P=∫fLfHY(f)dfP=\int_{f_L}^{f_H}{Y(f)df}P=fLfHY(f)df
其中,fLf_LfLfHf_HfH分别表示有用信号带宽的起止频率。
同理,采样带宽内总功率可以表示为:Pall=∫f1f2Y(f)dfP_{all}=\int_{f_1}^{f_2}{Y(f)df}Pall=f1f2Y(f)df
其中,f1f_1f1f2f_2f2表示采样的起止频率。
通过平均可得估计的噪声谱密度:n0=Pall−PB−Bwn_0=\frac{P_{all}-P}{B-B_w}n0=BBwPallP
其中,B=F1−F2B=F_{1}-F_{2}B=F1F2表示采样带宽,BwB_wBw表示有用信号带宽。
为计算有用信号的功率,需要减去信道内的噪声功率N=n0∗BwN=n_0*B_wN=n0Bw
由此,估计SNR可以表示为:SNRˉ=10∗lg(P−Nn0∗B)\bar{SNR}=10*lg(\frac{P-N}{n_0*B})SNRˉ=10lg(n0BPN)
至此,可以通过调整n(t)n(t)n(t)的功率(该功率与SNR成比例关系),间接获得特定的SNR。

matlab仿真代码

clear all
rng default
%加载USRP采取的复数信号
sigFile=load('D:\project\DataSet\data.mat');
signal=sigFile.data;
x=signal;
%加入高斯白噪声
x=x+0.001*randn(1,numel(x));

%计算谱密度
w = kaiser(numel(x),38);
Fs=1e8;
[Pxx, F] = periodogram(x,w,numel(x),Fs);
%调用matlab自由snr函数求解SNR,但结果不对,可能是因为存在噪声谱密度大于有用信号谱密度
SNR = snr(Pxx,F,'psd')
rbw = enbw(w,Fs);
%绘制时域、PSD、视频图谱以及频域四种图
subplot(4,1,1)
x_ax=(1:numel(x));
plot(x_ax,x)
subplot(4,1,2)
pxx=pwelch(x);
pwelch(x)
%x_a=(1:numel(pxx));
pxx=10*log10(pxx);
%plot(x_a,pxx)
subplot(4,1,3)
spectrogram(x)
subplot(4,1,4)
snr(Pxx,F,'psd')

% 手工计算SNR
sigLen=numel(Pxx);
f1=1;
f2=sigLen;
fL=0.31*sigLen;
fH=0.5*sigLen;
B=sigLen; %总带宽
Bw=fH-fL; %信号带宽
Psig=sum(Pxx(fL:fH))  %信号信道内总功率
PsigMean=mean(Pxx(fL:fH))
Pall=sum(Pxx)         %总功率 信号+噪声
PallMean=mean(Pxx)
n0=(Pall-Psig)/(B-Bw) %噪声平均功率
N=n0*Bw     %信号带宽内噪声功率
SNRbar=10*log10((Psig-N)/(n0*B))   %估计的信噪比

仿真图如下图所示

子图3中,黄色部分为有用信号,带宽20M,采样带宽100M(实际采样率为200M,满足奈奎斯特采样定理)
此外,仿真显示,增加的高斯白噪声的功率与SNR成反比,如下图所示:
在这里插入图片描述
横坐标为代码中randn的系数,纵坐标为估计的SNR。

小结

在实验中,许多情况下需要得到性能随着SNR改变的图。然而,实际采集的数据难以满足特定的SNR。一种解决思路是控制接收机与信号源的距离来获得,但这样操作的空难较大。另外一种方法就是通过添加噪声,通过控制噪声功率来仿真获得特定SNR下的信号数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值