1 简介
调制样式识别和调制参数估计是电子对抗中的一个重要环节,也是信号分析的一个快速发展的领域.本文主要从频域内对几种常用的数字通信信号的频谱,功率谱和谱相关进行分析.
2 部分代码
function varargout = digital_modulation(varargin)
%DIGITAL_MODULATION
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @digital_modulation_OpeningFcn, ...
'gui_OutputFcn', @digital_modulation_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
% --- Executes just before digital_modulation is made visible.
function digital_modulation_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to digital_modulation (see VARARGIN)
hold off;
axes(handles.axes1);
h=[1 1 0 1 0 0 1 1 1 0];
hold off;
bit=[];
for n=1:2:length(h)-1;
if h(n)==0 & h(n+1)==1
se=[zeros(1,50) ones(1,50)];
elseif h(n)==0 & h(n+1)==0
se=[zeros(1,50) zeros(1,50)];
elseif h(n)==1 & h(n+1)==0
se=[ones(1,50) zeros(1,50)];
elseif h(n)==1 & h(n+1)==1
se=[ones(1,50) ones(1,50)];
end
bit=[bit se];
end
plot(bit,'LineWidth',1.5);grid on;
axis([0 500 -1.5 1.5]);
%*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
axes(handles.axes3)
hold off;
fc=30;
g=[1 1 0 1 0 0 1 1 1 0]; %modulante
n=1;
while n<=length(g)
if g(n)==0
tx=(n-1)*0.1:0.1/100:n*0.1;
p=(1)*sin(2*pi*fc*tx);
plot(tx,p,'LineWidth',1.5);grid on;
hold on;
else
tx=(n-1)*0.1:0.1/100:n*0.1;
p=(2)*sin(2*pi*fc*tx);
plot(tx,p,'LineWidth',1.5);grid on;
hold on;
end
n=n+1;
end
% Choose default command line output for digital_modulation
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
% UIWAIT makes digital_modulation wait for user response (see UIRESUME)
% uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line.
function varargout = digital_modulation_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Get default command line output from handles structure
varargout{1} = handles.output;
% --- Executes on button press in random.
function random_Callback(hObject, eventdata, handles)
% hObject handle to random (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
a=round(rand(1,10)); %genarar bits aleatorios
ran=[a(1),a(2),a(3),a(4),a(5),a(6),a(7),a(8),a(9),a(10)];
set(handles.bit1,'String',ran(1));
set(handles.bit2,'String',ran(2));
set(handles.bit3,'String',ran(3));
set(handles.bit4,'String',ran(4));
set(handles.bit5,'String',ran(5));
set(handles.bit6,'String',ran(6));
set(handles.bit7,'String',ran(7));
set(handles.bit8,'String',ran(8));
set(handles.bit9,'String',ran(9));
set(handles.bit10,'String',ran(10));
%*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
handles.bits=ran;
h=handles.bits;
axes(handles.axes1)
hold off;
bit=[];
for n=1:2:length(h)-1;
if h(n)==0 & h(n+1)==1
se=[zeros(1,50) ones(1,50)];
elseif h(n)==0 & h(n+1)==0
se=[zeros(1,50) zeros(1,50)];
elseif h(n)==1 & h(n+1)==0
se=[ones(1,50) zeros(1,50)];
elseif h(n)==1 & h(n+1)==1
se=[ones(1,50) ones(1,50)];
end
bit=[bit se];
end
plot(bit,'LineWidth',1.5);grid on;
axis([0 500 -1.5 1.5]);
%*-*-*-*-*-*-*-*-*-*-*-*-
hold off;
axes(handles.axes3);
cod=get(handles.select_mod,'Value');
switch cod
%*-*-*-*Modulation ASK*-*-*-*-*-*-*-*-*
case 1
hold off;
axes(handles.axes3)
fc=30;
g=handles.bits; %modulante
n=1;
while n<=length(g)
if g(n)==0
tx=(n-1)*0.1:0.1/100:n*0.1;
p=(1)*sin(2*pi*fc*tx);
plot(tx,p,'LineWidth',1.5);grid on;
hold on;
% axis([0 n*2/fc -3 3]);
else
tx=(n-1)*0.1:0.1/100:n*0.1;
p=(2)*sin(2*pi*fc*tx);
plot(tx,p,'LineWidth',1.5);grid on;
hold on;
end
n=n+1;
end
%*-*-*-*-*-*-*-Modulation OOK*-*-*-*-*-*-*-*-*-
case 2
hold off;
axes(handles.axes3);
t=0:0.001:1;
m=1;
fc=30;
g=handles.bits; %modulante
n=1;
while n<=length(g)
tx=(n-1)*1/length(g):0.001:n*1/length(g);
p=(g(n))*sin(2*pi*fc*tx);
plot(tx,p,'LineWidth',1.5);
hold on;
axis([0 (n)*1/length(g) -1.5 1.5]);
grid on;
n=n+1;
end
%*-*-*-*-*-*-*-Modulation BPSK*-*-*-*-*-*-*-*-*-*-*-
case 3
axes(handles.axes3)
hold off;
g=handles.bits;
fc=10;
n=1;
while n<=length(g)
if g(n)==0 %0 is -1
tx=(n-1)*0.1:0.1/100:n*0.1;
p=(-1)*sin(2*pi*fc*tx);
plot(tx,p,'LineWidth',1.5);grid on;
hold on;
else
tx=(n-1)*0.1:0.1/100:n*0.1;
p=(1)*sin(2*pi*fc*tx);
plot(tx,p,'LineWidth',1.5);grid on;
hold on;
end
n=n+1;
end
%*-*-*-*-*-Modulation QPSK-*-*-*-*-*
case 4
3 仿真结果
4 参考文献
[1]李耐根. 基于谱分析数字信号调制方式的自动识别[D]. 南昌大学, .
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。