Walsh 码(沃尔什序列)
Walsh 码来源于 H 矩阵,根据 H 矩阵中“+1”和“-1”的交变次数重新排列就
可以得到 Walsh 矩阵,该矩阵中各行列之间是相互正交(Mutual Orthogonal)的,
可以保证使用它扩频的信道也是互相正交的。对于 CDMA 前向链路,采用 64
阶 Walsh 序列扩频, 每个 W 序列用于一种前向物理信道(标准),实现码分多址功
能。信道数记为 W0-W63,码片速率:1.2288Mc/S。沃尔什序列可以消除或抑制
多址干扰(MAI)。理论上,如果在多址信道中信号是相互正交的,那么多址干扰
可以减少至零。然而实际上由于多径信号和来自其他小区的信号与所需信号是不
同步的,共信道干扰不会为零。异步到达的延迟和衰减的多径信号与同步到达的
原始信号不是完全正交的,这些信号就带来干扰。来自其他小区的信号也不是同
步或正交的,这也会导致干扰发生。(评:如果在实际应用中 walsh 真的完全正
交的话,就不用研究多用户检测了,还好不是那样)。
扩频过程框图
function X=walshf1(N)
N=ceil(log2(N));
H=hadamard(2^N); %function provided by Matlab to generate Hadamard martrix
Hp=zeros(2^N);
Ep=zeros(2^N);
Wg=zeros(2^N);
Eg=zeros(2^N);
E=eye(2^N);
%matrix with Paley order
for n=1:2^N
p=0;
for i=1:N
p=bitset(p,i,bitget(n-1,N-i+1));
end
Hp(p+1,:)=H(n,:);
Ep(p+1,:)=E(n,:);
end
Hp; % Matrix Hp is the matrix with Paley order
Ep; % the transform matrix for transforming H matrix to Hp matrix
% Matrix with Walsh order
for n=1:2^N
g=0;
% if (bitget(n-1,N)==0)
g=bitset(g,N,bitget(n-1,N));
%else
%g=bitset(g,N,1);
%end
for i=2:N
if (bitget(n-1,N-i+1)==0)
g=bitset(g,N-i+1,bitget(g,N-i+2));
else
g=bitset(g,N-i+1,1-bitget(g,N-i+2));
end
end
Wg(g+1,:)=Hp(n,:);
Eg(g+1,:)=Ep(n,:);
end
Wg; % Matrix Wg is the matrix with Walsh order
Eg; % the transform matrix for transforming Hp matrix to Wg matrix
%matrix with inversed walsh order
for n=1:2^N
m=0;
for i=1:N
m=bitset(m,i,bitget(n-1,N-i+1));
end
Hm(m+1,:)=Wg(n,:);
Em(m+1,:)=Eg(n,:);
end
Hm; % Matrix Hm is the matrix with inversed Walsh order
Em; % the transform matrix for transforming Wg matrix to Hm matrix
X=Wg;
终于解决了,上述函数可以产生 N 阶 walsh 序列,转自《walsh 变换核矩阵的简
单生成及其应用》
m 序列
m 序列是由 n 级线性移位寄存器产生的周期为 2
1n 的码序列,是最长线性
移位寄存器的简称。n 级 m 序列发生器如下图所示。
移位寄存器的反馈系数决定是否产生 m 序列,起始状态决定 m 序列的起点,不
同的反馈系数产生不同的码序列。
Gold 序列
Gold 序列使用一对周期和速率均相同的 m 序列优选对模 2 加后得到的。如图所
示。