📄 matlab.m
字号:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% 用于生成1023的GOLD伪码
% 参考: 1) <Digital Communications> John G. Proakis, p724, 13-2-4 Generation of PN sequence
% 2) MATLAB 2007a 的GOLD发生器中的多项式系数
% 系统以右方向为大数方向,移位也是向左移动
%
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function codes = GoldGenerator()
codeLen = 1023; % 生成的码长
% 初始化多项式系数, 舍去0次
polynomial1 = [0 0 1 0 0 0 0 0 0 1]; % [10 3 0]
polynomial2 = [0 1 1 0 0 0 0 1 0 1]; % [10 8 3 2 0]
% 初始化随机数生成器
rand('twister', sum(100*clock));
randn('state', sum(100*clock));
% 先随机产生m=10个值,填入移位寄存器
sd1 = randsrc(1, 10, [0 1]); % 初始化移位寄存器1
sd2 = randsrc(1, 10, [0 1]); % 初始化移位寄存器2
% 生成伪码1
pn1 = zeros(1, codeLen);
for i=1:codeLen
pn1(i) = sd1(1);
% 计算新的GOLD值
newGold = mod((sum(polynomial1 & sd1) + 1), 2);
% 移位
sd1(1:9) = sd1(2:10);
sd1(10) = newGold;
end
% 生成伪码2
pn2 = zeros(1, codeLen);
for i=1:codeLen
pn2(i) = sd2(1);
% 计算新的GOLD值
newGold = mod((sum(polynomial2 & sd2) + 1), 2);
% 移位
sd2(1:9) = sd2(2:10);
sd2(10) = newGold;
end
% 合成GOLD码
%codes = zeros(1, codeLen);
codes = xor(pn1,pn2);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -