logo资料库

能量检测仿真代码及解析.doc

第1页 / 共3页
第2页 / 共3页
第3页 / 共3页
资料共3页,全文预览结束
能量检测 能量检测法是一种比较简单的信号检测方法[1], 属于信号的非相干的检 测, 直接对时域信号采样值求模,然后平方即可得到;或利用 FFT 转换到频域, 然后对频域信号求模平方也可得到。它无需知道检测信号的任何先验知识,对信 号类型也不作限制。 实际上,能量检测是在一定频带范围内作能量积累,如果积累的能量高于一 定的门限,则说明信号的存在;如果低于一定的门限,则说明仅有噪声。能量检 测的出发点是信号加噪声的能量大于噪声的能量。能量检测方法对信号没有作任 何假设,是一种盲检算法。 此代码“利用 FFT 转换到频域,然后对频域信号求模平方”方法来实现对 用户的检测。 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%生成调制信号 fs=100; %采样频率 fc=40; fo=fs/20; L=300; %载频 %码率 %信号样本 t = (0:L-1)*1/fs; %时间序列(时间轴) xn=cos(8*pi*fc*t); %产生一个幅值为 1 频率为 160HZ的余 弦信号 y = xn + randn(size(t)); %混入噪声信号 randn(size(t))生成与数 组 t 大小相同的随机数组 figure(1) plot(t,y) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%进行能量检测 NFFT = 2^nextpow2(L); %找出大于等于 L 且最接近 L 的 2 的整数次 幂长度, 如 L=10 NFFT=16 Y = fft(y,NFFT)/L; %进行 fft 变换(除以总采样点数, 是为了后面精确看出原始信号幅值)
f = fs/2*linspace(0,1,NFFT/2); %频率轴(只画到 Fs/2 即可,由于 y 为实数,后面一半是对称的) figure(2) plot(f,2*abs(Y(1:NFFT/2))) % 画出频率幅度图形,可以看出 120Hz 幅值大概为 1 注:对一个信号进行采样,采样频率是 fs,在满足采样频率的条件下,信号中的最高频率小 于 fs/2,所以在 FFT 之后的谱线是反映在-fs/2-fs/2 的信息,在 0-fs/2 之间是正频率的信息。 若信号长 N,在 FFT 变换之后,谱线之间的频率间隔为 df=fs/N,谱线是从直流(即 0 频率) 开始,所以正频率 0-fs/2 应对应的谱线为 1-N/2+1。一般谱分析中用 freq=(0:N/2)*df; Y=abs(Y(1:N/2+1); 而 N/2+2-N 之间的谱线,在信号为实数时与 2-N/2 的谱线构成共轭对称,被称为负频率的 谱线,在幅值上与正频率相同,所以在实信号处理中负频率信息没有被利用;而当信号为复 数时,N/2+2-N 之间的谱线与 2-N/2 之间不构成共轭对称,这时正频率信息和负频率信息 都要被利用。 仿真图如下:
问题:还有加入不同信噪比SNR的情况如何实现?(可得结论,噪声少的时候更容易感知 用户)
分享到:
收藏