前言
大部分较完整的数字调制信号识别经典算法结构都需要进行多次分类。其主线思路是,首先寻找对以上四类信号具有明显区别的特征量,以区分调制大类信号;其次,在已知调制大类的情况下,分别采用各自的调制识别算法来识别调制阶数;最终得到对于信号的较详细调制类型的识别。
对于数字调制信号,按照调制信息的位置,主要有幅度调制的MASK,相位调制的MPSK,频率调制的MFSK和幅度与相位调制相结合的MQAM等几大类。这里由于MASK已不是主流调制信号,故主要考虑MPSK、MFSK与MQAM。
对于这几类数字调制信号的识别,或者说是提取区分这几类信号的特征参数,在时域上即寻找能反映不同调制类型的瞬时幅度,瞬时相位,瞬时频率的特征量,在频域上即寻找谱形状,谱峰幅度,谱峰个数,循环谱特征,在统计矩上即寻找能够反映其潜在特性的特征量。
大类调制识别之小波变换
通过小波变换进行大类调制识别其思想主要是因为调制信号的小波变换系数幅度中携带有信号的调制信息,因此可以从小波小波变换系数的幅度信息中提取特征参量用以区分不同类型的调制信号。以下采用的均是Haar小波基的小波变换。以下图为例,三种8进制下的不同调制方式,各取5000点与100信噪比,其小波变换后取其模值所呈现出来的信号特性亦不相同(此处为方便采用的是dwt)。借此可初步区分大类信号。
从上图可看出,信号的小波变换模的幅值与信号的包络与瞬时频率相关,因此对于这一特性,一种传统方法便是通过对小波变换的模值进行直方图统计从而分辨单频信号与多频信号,然而该种方法稳健性较差。
此外,通过小波变换后的信号取其相位信息对其进行二次小波变换,即可得到信号的频率分量,不过第二次变换就必须采用cwt以方便对其压缩量进行控制。其步骤如下:
1、首先对预处理后的信号进行Haar的小波变换。
2、根据变换后的信号,求解其相位,再对求解的相位模2。
3、根据求得的相位,对其进行校正去卷叠,还原原来的非线性相位信息,即:
4、将校正去卷叠序列加上原来模2后的相位信息,得到其校正后的序列。
5、对校正后的序列再次进行Haar的小波变换,取缩放量为9,此时小波变换后的序列中只存在瞬时频率信息,对其进行直方图统计,可得到其瞬时频率谱峰。
函数如下所示:
function [output_freq_array] = wt_for_freq(input_sig,reso)
phi_sig =dwt(input_sig,'haar');%%一次小波变换
theta = angle(phi_sig);%%瞬时相位信息
theta1 = mod(theta,2*pi);
ck = zeros(1,length(theta));
for ik = 2:length(theta)
if theta1(ik)-theta1(ik-1) > pi
ck(ik) = ck(ik-1)-2*pi;
elseif theta1(ik-1) - theta1(ik) > pi
ck(ik) = ck(ik-1)+2*pi;
else
ck(ik) = ck(ik-1);
end
end %%去卷叠
theta1 = theta1+ck;%%uw相位序列
phi_sig_3 = cwt(theta1,1:16,'haar');%% 二次小波变换
sig = phi_sig_3(9,:)/max(phi_sig_3(9,:));
sig = sig(floor(0.01*length(sig)):floor(0.99*length(sig)));
output_freq_array = statis_func_wavelet(sig,reso);
end
function [sep_sel] = statis_func_wavelet(input_array,reso)
input_array = input_array/max(abs(input_array));
sep = -1+reso:reso:1;
sep_sel = zeros(1,length(sep));
for ik = 1:length(input_array)
if input_array(ik) == 1
sep_sel(length(sep_sel)) = sep_sel(length(sep_sel))+1;
else
sk = floor((input_array(ik)+1)*1/reso)+1;
sep_sel(sk) = sep_sel(sk)+1;
end
end
end
(不知道为什么,求得的瞬时频率直方统计图总是没原学位论文作者出的那么好,可能哪部分出错了,以后有空再来看看)
大类调制识别之归一化瞬时幅度四阶紧致性
该种方法最早由A. K. Nandi和E. E. Azzouz于1998年在TComm上提出,后面被证明能够很好地在高斯噪声环境下对恒包络及变包络信号进行分类。令一个信号的归一化瞬时幅度谱密度最大值为,则
可通过以下方法求得:
1、对于接收复信号,求其瞬时幅度序列
。
2、归一化的中心瞬时幅度序列可由下式得到:
其中,
为瞬时幅度的平均值,
为采样点数。
3、归一化瞬时幅度谱密度最大值可由下式得到:
函数如下所示:
function [rmax_val] = rmax_func(input_sig)
ma = mean(abs(input_sig));
acn = abs(input_sig)/ma-ones(1,length(input_sig));
rmax_val = 10*log10(max(abs(fft(acn).^2)/length(acn)));
end
大类调制识别之归一化中心瞬时频率的四阶矩紧致性
该种方法由A. K. Nandi和E. E. Azzouz在同篇文章上提出,后面被证明能够很好地在高斯噪声环境下对单频信号及多频信号进行分类。令该特征量为,则
可由下面几个步骤得出:
1、根据频率估计得到的频率,对接收信号进行下变频。
2、对下变频得到的信号进行取相位操作,得到基带相位序列
。
3、对基带信号进行载波相位恢复:
4、差分得到瞬时频率估计序列:
5、得到归一化的中心瞬时频率:
6、得到归一化中心瞬时频率的四阶矩紧致性:
函数如下所示:
function [output_val] = u42f_func(input_sig,fs,fc)
t2 = 1/fs:1/fs:length(input_sig)/fs;
c_fsd = exp(-1i*2*pi*fc*t2);
input_sig_fsd = input_sig.*c_fsd;
phi = angle(input_sig_fsd);
phi_fsd = zeros(1,length(t2));
for ik = 1:length(t2)
phi_fsd(ik) = phi(ik)+2*pi*fsd*ik/fs;
phi_fsd(ik) = phi_fsd(ik)+pi*fix(phi_fsd(ik)/(pi));
end
fk = fs*diff(phi_fsd,1,2)/(2*pi);
fnk = fk-mean(fk);
output_val = mean(fnk.^4)/mean(fnk.^2)^2;
end