ds_modulation_demodulation.m

来自「构建CDMA通信系统」· M 代码 · 共 39 行

M
39
字号
<matlab> m序列扩频调制解调实现
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                                                                                           %
%  函数通过输入信号序列和扩频因子,以及调制解调选择参数来        %
%  完成扩频调制解调。original_seq是原始输入序列,可能是未          %
%  调制序列,也可能是调制序列,spreading_factor是扩频序列         %
%  的扩频因子,select选择对输入的序列进行调制还是解调。            %
%                                                                                           %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [sequence] = DS_modulation_demodulation(original_seq,spreading_factor,select,off_set)
if nargin == 3
    off_set = 0;
end
if nargin < 2                                       
    error('输入参数不足!');
end
if length(original_seq) < 1
    error('原序列输入错误,无法进行扩频调制!');
end
sf = spreading_factor;
if sf == 15                                         % 如果扩频因子为15则自动生成cdma系统默认短码
    m_seq = ls_m_sequence_generator(0);
else                                                  % 否则可以生成扩频因子3-12的m序列
    m_seq = m_sequence_generator(2^sf);
end
m_len = length(m_seq);                              % 得到m序列的长度
or_len = length(original_seq);
if select == 1                                             % 进行扩频调制
    mo_seq = m_seq.'*original_seq;
    mo_seq = reshape(mo_seq,1,m_len*or_len);
    len = m_len*or_len;
    sequence = [mo_seq((len-off_set+1):len),...
        mo_seq(1:(len-off_set))];                    % 扩频输出为双极性码
else                                                          % 进行扩频序列的解调操作
    de_seq = reshape(original_seq,m_len,or_len/m_len);
    de_seq = m_seq*de_seq/(2^sf-1);
    sequence = de_seq;
end

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?