📄 modla.asv
字号:
function [y,yshape]=modla(code_num,sample_rate,carrier_frequency,symbol_rate,shape,mode)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 相位调制信号生成程序 %
% 生成MPSK(M=2,4,8) %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%函数体[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 调制体制,有3种形式
% mode=1 BPSK调制
% mode=2 QPSK调制
% mode=3 8PSK调制
%函数体
%参数初始化
if mode==1
M=2;
elseif mode==2
M=4;
elseif mode==3
M=8;
end
x=randint(1,code_num,M);
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);%调制信号序列
%MPSK调制
% if shape==2|shape==3
% roolfactor=input('请输入升余弦/平方根升余弦滚降系数');
% end
roolfactor=0.5;
switch mode
%BPSK调制
case 1,
y_com=pskmod(x,2);%低通复包络映射
%scatterplot(y_com);
switch shape
case 1,
yshape=fil(y_com,nsample,roolfactor,1);
case 2,
yshape=fil(y_com,nsample,roolfactor,2);
case 3,
yshape=fil(y_com,nsample,roolfactor,3);
end
y=real(yshape.*mod);
%QPSK调制
case 2,
y_com=pskmod(x,4);%低通复包络映射
%scatterplot(y_com);
switch shape
case 1,
yshape=fil(y_com,nsample,roolfactor,1);
case 2,
yshape=fil(y_com,nsample,roolfactor,2);
case 3,
yshape=fil(y_com,nsample,roolfactor,3);
end
y=yshape.*mod;
%8PSK调制
case 3,
y_com=pskmod(x,8);%低通复包络映射
%scatterplot(y_com);
switch shape
case 1,
yshape=fil(y_com,nsample,roolfactor,1);
case 2,
yshape=fil(y_com,nsample,roolfactor,2);
case 3,
yshape=fil(y_com,nsample,roolfactor,3);
end
y=real(yshape.*mod);
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -