⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 modla.m

📁 完整的幅相调制信号可k阶非线性功率谱分析
💻 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 + -