C语言 -通信信号调制识别与同步

非常抱歉,标题写错了,但是不让我改。。。。这是matlab的

实验数据分为四组8个文件,按照1,2,3,4的序号进行命名,并且分为I,Q两路存放,命名格式为data_num_1_I(Q).bin。
四组数据包含的调制方式是QPSK、8PSK、16QAM以及MSK信号。

A. 背景

调制信号识别是信号检测和信号解调之间的重要步骤,他的目的是在没有其他先验知识的情况下,通过对接收信号的处理,判断出信号的调制方式,并估计出相应的调制参数。
其主要有两个方面的应用:

  1. 软件无线电,为调制的选择和接收提供技术支持。
  2. 电子战系统,为截获和选择最佳的干扰样式提供依据。
    调制方式是区别不同性质通信信号的重要特征。对于接收信号,想要正确的解调,分析接收信号或者进行干扰,必须能够正确识别信号的调制方式,然后采取相应的解调方法和干扰方法。

B. 4PSK

在数字信号的调制方式中 4PSK是目前最常用的一种数字信号调制方式 它具有较高的频谱利用率、较强的抗干扰性、 在电路上实现也较为简单。 调制技术是通信领域里非常重要的环节, 一种好的调制技术不仅可以节约频谱资源且可以提供良好的通信性能。 4PSK调制是一种具有较高频带利用率和良好的抗噪声性能的调制方式,在数字移动通信中已经得到了广泛的应用。具体原理可以百度,很多。

C. 识别过程

调制识别问题实质上是典型的模式识别问题
C语言 -通信信号调制识别与同步_第1张图片
信号预处理部分的主要功能是为后续处理提供合适的数据;特征提取是从输入的信号序列中提取对调制识别有用的信息;分类识别部分的主要功能是判断信号调制类型的从属问题。

信号预处理包括:频率下变频、载频估计、同相正交分量分解等。在多发射的环境中,隔离各个信号,保证一次只有一个信号进入后续的调制识别环节。

特征提取:特征提取部分是从数据中提取信号的食时域特征或者是变换域特征。时域特征包括信号的瞬时幅度、瞬时相位或瞬时频率的特征参数或其他的统计参数。变换域特征包括功率谱、谱相关函数、时频分部及其他统计参数。

分类识别:选择和确定合适的判决规则和分类器结构,主要采用决策树结构的分类器和神经网络结构的分类器。

D. 识别方法分类

  1. 基于基本时域、频域和功率谱的方法。
  2. 基于小波理论的方法
  3. 基于分形理论的方法
  4. 基于信号的星座图的方法
  5. 基于混沌理论的方法
  6. 基于复杂度理论的方法。

E.本文方法

对于调制的信号,我们提取一阶谱,二阶谱,四阶谱,八阶谱,并通过有关的谱线区分调制方法,获得调制的载波频率。最后使用恢复的载波对信号进行解调,通过余弦滚降滤波之后,画出信号的星座图。
这其中的关键就是载波估计的方法,如果不能完美的估计出载波,那么就无法绘制出星座图,也就无法推导出调制的方式。

clc;  %清理数据
clear;
%---------------预设参数-----------------
choose=4; %选择数据 1.2.3.4组
split=-1; %数据分割 选择长度
fs=9600; %采样频率  %预设参数
%---------------读取数据-----------------
name_I=strcat('data_',num2str(choose),'_1_I.bin');
name_Q=strcat('data_',num2str(choose),'_1_Q.bin');
fidin=fopen(name_I,'r');
dataI=fread(fidin, 'int16').';  
fclose(fidin);
fidin=fopen(name_Q,'r');
dataQ=fread(fidin, 'int16').';
fclose(fidin);
if split~=-1
    dataI=dataI(1:split);
    dataQ=dataQ(1:split);
else
    len1=length(dataI);
    len2=length(dataQ);
    split=min([len1,len2]);
    dataI=dataI(1:split);
    dataQ=dataQ(1:split);
end
dat=dataI+dataQ.*1i;
data=dat/max(abs(dat));
%split=length(data);
%----------------参数计算----------------
%求FFT的最适合的点数
fft_n=2^(nextpow2(split));
%data=data(1:fft_n);
%计算采样间隔
interval= fs/fft_n;
%频率范围
f_range=(0:fft_n-1)*interval;%频域范围
%-------------计算高阶谱----------------
%一阶谱
Pxx1=abs(fft(data,fft_n)/split);
subplot(2,2,1);
plot(f_range, Pxx1);
title('一阶功率谱');
xlabel('频率');
ylabel('功率(dB)');
%二阶功率谱
Pxx2=abs(fft(data.^2,fft_n)/split);
subplot(2,2,2);
plot(f_range, Pxx2);
title('二阶功率谱');
xlabel('频率');
ylabel('功率(dB)');
%四阶功率谱
Pxx4=abs(fft(data.^4,fft_n)/split);
subplot(2,2,3);
plot(f_range, Pxx4);
title('四阶功率谱');
xlabel('频率');
ylabel('功率(dB)');
%八阶功率谱
Pxx8=abs(fft(data.^8,fft_n)/split);
subplot(2,2,4);
plot(f_range, Pxx8);
title('八阶功率谱');
xlabel('频率');
ylabel('功率(dB)');

%-----------载频估计----------
if choose==1
     [a,b]=max(abs(Pxx4));
     fc=f_range(b)/4;
elseif choose==2
      [a,b]=max(abs(Pxx4));
      I=find(abs(Pxx4)>0.1);
      fc=((f_range(I(1))+f_range(I(2)))/2)/4;
elseif choose==3
      [a,b]=max(abs(Pxx8));
      fc=(f_range(b)+9600)/8;
else 
      [a,b]=max(abs(Pxx4));
      fc=f_range(b)/4;
end

%---------参数设置----------
Fd=1; 
Fs=4*Fd;
delay=3;         %群延迟
rolloff = 0.25;         %滚降系数
index=0:1:split-1;      %下标

%-------------星座图计算--------------------
cost=exp(-1i*2*pi*fc/fs.*index); %载波恢复
data_off = data.*cost; %解调
Filter = rcosflt(data_off,Fd,Fs,'fir/sqrt/Fs',rolloff,delay);%余弦滚降滤波
Filter2 = downsample(Filter,4);% 下采样
scatterplot(Filter2(1:10000));
xlabel('同相分量');
ylabel('正交分量');
title(strcat('数据',num2str(choose),'同步后星座图'));

F.实验结果

对于实验的结果,我们分为四组来分析,在列出数据的个谱的图像之后,对不同的特征进行分析,并得出估计的载波的频率,推断信号所处的调制方式,并通过绘制信号的星座图来完善和验证推断。
data1分析
数据1的四个谱图像如下:
C语言 -通信信号调制识别与同步_第2张图片
从1次方谱可以看出载频大约在1800Hz左右,从平方谱可看出在2倍载频3 600 Hz左右不存在较明显的单根谱线,从四次方谱可看出在4倍载频7200 Hz左右也不存在较明显的单根谱线。最后从八次方谱图可观察到明显最大谱峰线,由于采样率只有9 600 Hz,而8倍载频则达14400 Hz左右,故而此时的频谱会发生混迭,其单根谱峰线将出现在14400-9600=4800 Hz左右,由图分析得到data1为QPSK信号或者16QAM信号。

载波估计方法:四次方谱最大值/4=1.809320068359375e+03;
恢复星座图如图所示,验证data1为QPSK信号。
C语言 -通信信号调制识别与同步_第3张图片
Data2分析
数据2的四个谱图像如下:
C语言 -通信信号调制识别与同步_第4张图片
从1次方谱可以看出中心载频大约在1800Hz左右,从平方谱、四次方谱、八次方谱可看出均有2根等高谱线,中心载频分别在3 600 Hz左右、7200Hz左右以及4800Hz左右(由于采样率只有9 600 Hz,而8倍载频则达14400 Hz左右,故而此时的频谱会发生混迭,其中心载频将出现在14400-9600=4800 Hz左右),由图分析得到data2为MSK信号。

载波估计方法:四次方谱两个谱线之和/8= 1.790679931640625e+03;
恢复星座图如图所示,验证data2为MSK信号。
C语言 -通信信号调制识别与同步_第5张图片

Data3分析
数据3的四个谱图像如下:
C语言 -通信信号调制识别与同步_第6张图片
从1次方谱可以看出载频大约在1800Hz左右,从平方谱可看出在2倍载频3 600 Hz左右不存在较明显的单根谱线,从四次方谱可看出在4倍载频7200 Hz左右也不存在较明显的单根谱线。最后从八次方谱图可观察到明显最大谱峰线,由于采样率只有9 600 Hz,而8倍载频则达14400 Hz左右,故而此时的频谱会发生混迭,其单根谱峰线将出现在14400-9600=4800 Hz左右,由图分析得到data3为8PSK信号。

载波估计方法:(谱线最大值+fs)/8= 1.809769821166992e+03;
恢复星座图如图所示,验证data3为8PSK信号。
C语言 -通信信号调制识别与同步_第7张图片
Data4分析
数据4的四个谱图像如下:
C语言 -通信信号调制识别与同步_第8张图片
从1次方谱可以看出载频大约在1800Hz左右,从平方谱可看出在2倍载频3 600 Hz左右不存在较明显的单根谱线,从四次方谱可看出在4倍载频7200 Hz左右也不存在较明显的单根谱线。最后从八次方谱图可观察到明显最大谱峰线,由于采样率只有9 600 Hz,而8倍载频则达14400 Hz左右,故而此时的频谱会发生混迭,其单根谱峰线将出现在14400-9600=4800 Hz左右分析可得该信号为16QAM。

载波估计方法:(四次方谱线最大值)/4=1.789779853820801e+03;
恢复星座图如图所示,验证data4为16QAM信号。
C语言 -通信信号调制识别与同步_第9张图片

你可能感兴趣的:(理论知识,编程实践)