📄 m序列扩频调制解调实现.m
字号:
%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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -