目录
1.1认知无线电能量检测算法理论研究
认知无线电的能量检测是一种非相干的检测手段,其原理基于感知器在信号有无两种假设情况下按接收信号功率大小的不同对信号进行检测。这种方法是一种对未知参数的确定性信号及其存在性检测的有效方法。由于能量检测对信号类型不作限制,因此不需要授权信号的先验信息。
在能量检测中,将授权信号S(t)的功率在一个时间段(N个采样点)内取平均:接着与预设门限进行比较,判定该频段是否存在授权信号。具体来说,假设输入信号为x(t),则经过一段时间(N个采样点)的采样后,其能量可表示为:
E = Σ |x(n)|² (1)
其中n为采样点序号。
在门限比较阶段,将E与预设的阈值进行比较。若E大于等于阈值,则判定授权信号存在于该频段;否则,判定该频段不存在授权信号。
需要注意的是,实际应用中,阈值的选择对能量检测的结果影响较大。因此,为了提高检测准确性,通常需要根据实际情况对阈值进行调整。
此外,认知无线电的能量检测也存在一定的局限性。例如,当信号环境复杂时,多个信号之间可能会产生干扰,导致能量检测结果不准确。此时,需要考虑采用其他检测方法,如基于特征的检测方法、频域滤波等方法来提高检测性能。
总之,认知无线电的能量检测是一种简单、有效的信号存在性检测方法。其原理基于对接收信号功率大小的监测,通过与预设门限比较来判定频段是否存在授权信号。但当信号环境复杂时,需要采用其他检测方法来提高检测性能。
1.2 MATLAB核心程序
...........................................................................
% AWGN信道的SNR值
snrdb = -16:0.5:-4;
% 使用QPSK调制进行测试
% PSK调制的调制指数
M = 4;
hpsk = comm.PSKModulator('ModulationOrder',M,...
'BitInput',false,...
'PhaseOffset',0); % M-PSK调制器
% 进行1000次模拟,其中对于每个snr值都会传输一次主要信号。检测到的信号次数将被除以1000,以得到Pd的值。
nSample = 1000; % 信号中的样本数
pde = zeros(1,numel(snrdb)); % Pd的数组
L = numel(snrdb);
% SNR的循环
hWait = waitbar(0,'please wait...');
for i = 1:L % 对于所有的snr值
d = 0; % 检测计数器设置为零
% 1000次测试的循环
for j = 1:1000 % 1000次模拟
infoSignal = randi(M,nSample,1)-1; % 随机二进制信号(比特数=log2(M))
txSignal = step(hpsk,infoSignal); % M-PSK信号
rxSignal = awgn(txSignal,snrdb(i)); % AWGN信道
pf = 0.01; % 假检测的概率
snr = 10^(snrdb(i)/20);
nvar = 1/snr; % 噪声方差
thresh = sqrt(2*nSample*nvar^4)*qfuncinv(pf)+nSample*nvar^2; % 阈值
energy = sum(abs(rxSignal).^2); % 信号的能量
if energy > thresh % 如果能量大于阈值,则信号存在
d = d+1;
end
end
pde(i) = d/1000; % 1000次模拟的平均值
waitbar(i/L,hWait);
end
close(hWait);
% 绘制结果(SNR Vs Pd)
figure()
plot(snrdb,pde,'b');
xlabel('SNR (dB)');
ylabel('P_d');
title('Energy Detection');
grid on;
%%
displayEndOfDemoMessage(mfilename)
up2205