?? ds_modulation_demodulation.m
字號:
<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 + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -