1.软件版本
matlab2017b
2.本算法理论知识
我们提取信号的8个特征参数。然后将这个参数通过GRNN神经网络,然后进行训练识别,获得最后的分类。
这里,8个参数分别为:
第1个参数:高阶累积量
第2个参数:高阶累积量
第3~8个参数:
首先对信号计算希尔伯特变换,然后获得如下6个参数:
这六个参数均为统计量参数。
分别的含义是:
均方差比均值平方;
信号相位统计差
希尔伯特变换后的绝对值方差的倒数
希尔伯特变换后的FFT变换后的峰值
频率的方差
相位的方差
将上述8个参数作为GRNN神经网络的训练数据输入。
广义回归神经网络的理论基础是非线性核回归分析,非独立变量y相对于独立变量x的回归分析实际上是计算具有最大概率值的y。设随机变量x和y的联合概率密度函数为f (x ,y),已知x的观测值为X,则y相对于X的回归,即条件均值为:
GRNN通常被用来进行函数逼近。它具有一个径向基隐含层和一个特殊的线性层。第一层和第二层的神经元数目都与输入的样本向量对的数目相等。GRNN结构如图1所示,整个网络包括四层神经元:输入层、模式层、求和层与输出层。
3.部分源码
clc;
clear;
close all;
warning off;
addpath 'func\'
addpath 'func\wifi\'
addpath 'func\S3G\'
%1:WIFI
%2:3G
%3:Fsk广播信号
SNRs = [5:1:12];
Err = zeros(size(SNRs));
MTKL = 50;
for jj = 1:length(SNRs)
SNR=SNRs(jj);
jj
for ii = 1:MTKL
rng(ii);
%%
SEL = floor(3*rand())+1;
%产生需要测试的无线信号
%1:WIFI
if SEL == 1
Signal = func_wifi(SNR);
end
%2:3G
if SEL == 2
Signal = func_3G_mobile(SNR);
end
%3:Fsk广播信号
if SEL == 3
Signal = func_2FSK(5000);
end
%采样化处理
Fs = 1e6; %信号采样率
fc = Fs/32; %信号采样率
nsamp = 32; %过采样率
delay = 16; %根号下升余弦的群时延
dataout = RRCsend(Signal,Fs,nsamp,delay);
%基于SDR的上变频
if SEL == 1 | SEL == 2
R = real(dataout).*cos(2*pi*fc*[1:length(dataout)]/Fs) + imag(dataout).*sin(2*pi*fc*[1:length(dataout)]/Fs);
end
if SEL == 3
R = dataout;
end
%通过噪声信道
dataout = awgn(R,SNR,'measured');
%%
%以下是SDR的接收平台
Rec = dataout;
%特征提取
char = real(func_para_check(real(Rec),Fs,fc));
%识别
load Grnn.mat
T(ii) = round(sim(Net,char'));
SELss(ii) = SEL;
end
Err(jj) = length(find(T==SELss))/MTKL;
end
figure;
plot(SNRs,Err,'b-o');
grid on
xlabel('信噪比');
ylabel('识别正确率');
save D.mat SNRs Err
4.仿真结论
A05-50