📄 modla.m
字号:
function [y,y_com]=modla(code_num,sample_rate,carrier_frequency,symbol_rate,shape,mode,roolfactor)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 福相调制信号生成程序 %
% 生成MPSK(M=2,4,8),MQAM(M=16,32,64,128),OQPSK,pi/4QPSK %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%函数体[y,y_com]=modla(code_num,M,sample_rate,carrier_frequency,symbol_rate,delay,rool
%factor,shape,mode)
%参数说明
% y 输出调制信号序列
% y_com 星座图映射序列
% code_num 码元数目
% M 调制阶数
% sample_rate 采样速率
% carrier_frequency 载波频率
% symbol_rate 符号速率
% shape 成型脉冲形状
% shape=1 矩形脉冲
% shape=2 升余弦脉冲
% shape=3 平方根升余弦脉冲
% mode 调制体制,有9种形式
% mode=1 BPSK调制
% mode=2 QPSK调制
% mode=3 OQPSK调制
% mode=4 Pi/4QPSK调制
% mode=5 8PSK调制
% mode=6 16QAM调制
% mode=7 32QAM调制
% mode=8 64QAM调制
% mode=9 128QAM调制
% roolfactor 升余弦滤波器滚降系数
%函数体
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 参数初始化 %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if mode==1
M=2;
elseif mode==2|mode==3|mode==4
M=4;
elseif mode==5
M=8;
elseif mode==6
M=16;
elseif mode==7
M=32;
elseif mode==8
M=64;
elseif mode==9
M=128;
end
x=randint(1,code_num,M);%适用于BPSK、QPSK、8PSK和MQAM
T=1/symbol_rate;%码元间隔
nsample=sample_rate/symbol_rate;%重采样个数
t=0:1/sample_rate:(code_num/symbol_rate-1/sample_rate);%仿真时间序列
N=4096;%FFT点数
f=sample_rate*(0:N-1)/N;%频率序列
mod=exp(j*2*pi*carrier_frequency*t);%调制信号序列
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 调制 %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
switch mode
%%%%%%%%%%%%%%%%%%%%%%BPSK调制%%%%%%%%%%%%%%%%%%%%%%%%%%
case 1,
y_com=pskmod(x,2); %低通复包络映射
switch shape
case 1,
yshape=fil(y_com,nsample,roolfactor,1,1);
case 2,
yshape=fil(y_com,nsample,roolfactor,2,1);
case 3,
yshape=fil(y_com,nsample,roolfactor,3,1);
end
y=real(yshape.*mod);
%%%%%%%%%%%%%%%%%%%%%%%%QPSK调制%%%%%%%%%%%%%%%%%%%%%%%%
case 2,
y_com=pskmod(x,4); %低通复包络映射
switch shape
case 1,
yshape=fil(y_com,nsample,roolfactor,1,2);
case 2,
yshape=fil(y_com,nsample,roolfactor,2,2);
case 3,
yshape=fil(y_com,nsample,roolfactor,3,2);
end
y=real(yshape.*mod);
%%%%%%%%%%%%%%%%%%%%%%%%OQPSK调制%%%%%%%%%%%%%%%%%%%%%%%%
case 3,
x=randint(1,code_num+1,M);
y_com=oqpskmod(x); %低通复包络映射
y_com=y_com(2:end-2);
switch shape
case 1,
yshape=fil(y_com,nsample,roolfactor,1,3);
case 2,
yshape=fil(y_com,nsample,roolfactor,2,3);
case 3,
yshape=fil(y_com,nsample,roolfactor,3,3);
end
y=real(yshape.*mod);
%%%%%%%%%%%%%%%%%%%%%%%pi/4QPSK调制%%%%%%%%%%%%%%%%%%%%%%%%%
case 4,
y_com=DQPSK(code_num); %低通复包络映射
scatterplot(y_com);
switch shape
case 1,
yshape=fil(y_com,nsample,roolfactor,1,4);
case 2,
yshape=fil(y_com,nsample,roolfactor,2,4);
case 3,
yshape=fil(y_com,nsample,roolfactor,3,4);
end
y=real(yshape.*mod);
%%%%%%%%%%%%%%%%%%%%%%%%8PSK调制%%%%%%%%%%%%%%%%%%%%%%%%%%
case 5,
y_com=pskmod(x,8); %低通复包络映射
switch shape
case 1,
yshape=fil(y_com,nsample,roolfactor,1,5);
case 2,
yshape=fil(y_com,nsample,roolfactor,2,5);
case 3,
yshape=fil(y_com,nsample,roolfactor,3,5);
end
y=real(yshape.*mod);
%%%%%%%%%%%%%%%%%%%%%%%%16QAM调制%%%%%%%%%%%%%%%%%%%%%%%%%%
case 6,
y_com=qammod(x,16); %低通复包络映射
switch shape
case 1,
yshape=fil(y_com,nsample,roolfactor,1,6);
case 2,
yshape=fil(y_com,nsample,roolfactor,2,6);
case 3,
yshape=fil(y_com,nsample,roolfactor,3,6);
end
y=real(yshape.*mod);
%%%%%%%%%%%%%%%%%%%%%%%%%32QAM调制%%%%%%%%%%%%%%%%%%%%%%%%%
case 7,
y_com=qammod(x,32); %低通复包络映射
scatterplot(y_com);
switch shape
case 1,
yshape=fil(y_com,nsample,roolfactor,1,7);
case 2,
yshape=fil(y_com,nsample,roolfactor,2,7);
case 3,
yshape=fil(y_com,nsample,roolfactor,3,7);
end
y=real(yshape.*mod);
%%%%%%%%%%%%%%%%%%%%%%%%%64QAM调制%%%%%%%%%%%%%%%%%%%%%%%%%%
case 8,
y_com=qammod(x,64); %低通复包络映射
switch shape
case 1,
yshape=fil(y_com,nsample,roolfactor,1,8);
case 2,
yshape=fil(y_com,nsample,roolfactor,2,8);
case 3,
yshape=fil(y_com,nsample,roolfactor,3,8);
end
y=real(yshape.*mod);
%%%%%%%%%%%%%%%%%%%%%%%%%128QAM调制%%%%%%%%%%%%%%%%%%%%%%%%%%%%
case 9,
y_com=qammod(x,128); %低通复包络映射
switch shape
case 1,
yshape=fil(y_com,nsample,roolfactor,1,9);
case 2,
yshape=fil(y_com,nsample,roolfactor,2,9);
case 3,
yshape=fil(y_com,nsample,roolfactor,3,9);
end
y=real(yshape.*mod);
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -