Equalizing Using a Training Sequence
例程代码
% Set up parameters and signals.
M = 4% Alphabet size for modulation
msg = randint(1500,1,M)% Random message,产生一个1500 x 1 在[0,M-1]区域内的随机整数序列
modmsg = pskmod(msg,M)% Modulate using QPSK. 进行QPSK调制的映射
trainlen = 500% Length of training sequence 定义训练序列的帧长
chan = [.986.845.237.123+.31i]% Channel coefficients 定义信道参量
filtmsg = filter(chan,1,modmsg)% Introduce channel distortion. 模拟信道变化
% Equalize the received signal.
eq1 = lineareq(8, lms(0.01))% Create an equalizer object.
eq1.SigConst = pskmod([0:M-1],M)% Set signal constellation. 设置星座图
[symbolest,yd] = equalize(eq1,filtmsg,modmsg(1:trainlen))% Equalize.
% Plot signals.
h = scatterplot(filtmsg,1,trainlen,'bx')hold on以蓝星画出未经过均衡的信号
scatterplot(symbolest,1,trainlen,'g.',h)在原图的基础上以绿色画出经过均衡后的信号
scatterplot(eq1.SigConst,1,0,'k*',h)在原图的基础上以黄色标出理想星座图
legend('Filtered signal','Equalized signal',...
'Ideal signal constellation')
hold off
% Compute error rates with and without equalization. 计算误码率
demodmsg_noeq = pskdemod(filtmsg,M)% Demodulate unequalized signal. 解调未均衡的码字
demodmsg = pskdemod(yd,M)% Demodulate detected signal from equalizer.解调已均衡的码字
[nnoeq,rnoeq] = symerr(demodmsg_noeq(trainlen+1:end),...对比未均衡信号和样本信号的误码和误码率
msg(trainlen+1:end))
[neq,req] = symerr(demodmsg(trainlen+1:end),...
msg(trainlen+1:end))对比均衡信号和样本信号的误码和误码率
disp('Symbol error rates with and without equalizer:')
disp([req rnoeq]
均衡根据通信系统中的一项重要技术,分为两种方式:频域均衡和时域均衡。频域均衡是利用可调滤波器的频率特性来弥补实际信道的幅频特性和群延时特性,使包括均衡器在内的整个系统的总频率特性满足无码间干扰传输条件。时域均衡是直接从时间响应角度考虑,使包括均衡器在内的整个传输系统的冲激响应满足无码间干扰条件。频域均衡满足奈奎斯特整形定理的要求,仅在判决点满足无码间干扰的条件相对宽松一些。所以,在数字通信中一般采用时域均衡。时域均衡器可以分两大类:线性均衡器和非线性均衡器。如果接收机中判决的结果经过反馈用于均衡器的参数调整,则为非线性均衡器;反之,则为线性均衡器。在线性均衡器中,最常用的均衡器结构是线性横向均衡器,它由若干个抽头延迟线组成,延时时间间隔等于码元间隔 。非线性均衡器的种类较多,包括判决反馈均衡器(DFE)、最大似然(ML)符号检测器和最大似然序列估计等。均衡器的结构可分为横向和格型等。因为很多数字通信系统的信道(例如无线移动通信信道)特性是未知和时变的,要求接收端的均衡器必须具有自适应的能力。所以,均衡器可以采用自适应信号处理的相关算法,以实现高性能的信道均衡,这类均衡器称为自适应均衡器。
自适应均衡器的工作过程包含两个阶段,一是训练过程,二是跟踪过程。在训练过程中,发送端向接收机发射一组已知的固定长度训练序列,接收机根据训练序列设定滤波器的参数,使检测误码率最小。典型的训练序列是伪随机二进制信号或一个固定的波形信号序列,紧跟在训练序列后面的是用户消息码元序列。接收机的自适应均衡器采用递归算法估计信道特性,调整滤波器参数,补偿信道特性失真,训练序列的选择应满足接收机均衡器在最恶劣的信道条件下也能实现滤波器参数调整,所以,训练序列结束后,均衡器参数基本接近最佳值,以保证用户数据的接收,均衡器的训练过程成功了,称为均衡器的收敛。在接收用户消息数据时,均衡器还不断随信道特性的变化连续地改变均衡器参数。
均衡器的收敛时间受均衡算法、均衡器结构和信道特性的变化情况所决定。通常,均衡器需要通过重复性地周期训练保证能够一直有效地抑制码间干扰。所以,用户数据序列需要被分割成数据分组或时隙分段发送。
均衡器通常工作在接收机的基带或中频信号部分,基带信号的复包络含有信道带宽信号的全部信息,所以,均衡器通常在基带信号完成估计信道冲激响应和解调输出信号中实现自适应算法等
同时给你一个仿真例子:
自适应均衡器的仿真程序:
% Illustration of the conventional RLS algorithm
close all
W=2.9
Nexp=10
N=2000
Nmc=1% Number of ensemble realizations
M=11%抽头系数
lambda=0.99%遗忘因子
varv=0.001%噪声方差
h=zeros(3,1)%h的初始化
er=zeros(N,Nmc)%er的初始化
h(1)=0.5*(1+cos(2*pi*(1-2)/W))
h(2)=0.5*(1+cos(2*pi*(2-2)/W))
h(3)=0.5*(1+cos(2*pi*(3-2)/W))
% 学习曲线
hc=[0 h(1) h(2) h(3)]'
n0=7
t=(1:N)'
for i=1:Nmc
y=sign(rand(N,1)-0.5)%输入信号
v=sqrt(varv)*randn(N,1)%噪声信号
x=filter(hc,1,y)+v%信号混合
x=[zeros(M-1,1)x]%x矩阵
yd=zeros(N+M-1,1)%延迟信号初始化
e=yd
yd(n0+M-1:N+M-1)=y(1:N-n0+1)
% CRLS 算法
% Initialization
lambda=0.98
P=(10^-3)*eye(M,M)
c=zeros(M,1)
g=c
glambda=g
% 迭代范围
for n=M:M+N-1
xn=flipud(x(n-M+1:n))
glambda=P*xn
alphal=lambda+conj(glambda')*xn
g=glambda/lambdaa(n)=1-conj(g')*xn
P=(P-g*conj(glambda'))/lambda
P=(P+P')/2
e(n)=yd(n)-conj(c')*xn
c=c+g*conj(e(n))
end
end
eplot=e(M:M+N-1).^2
subplot(2,1,1), plot(t,abs(eplot))
ylabel('|e(n)|^2')
xlabel('n')
subplot(2,1,2), plot(t,a(M:M+N-1))
ylabel('\alpha(n)')
xlabel('n')
用matlab实现图像的直方图均衡化
代码:
clear
f=imread('c:/large.jpg')
f=rgb2gray(f)
imshow(f)
figure,imhist(f)
ylim('auto')
g=histeq(f,256)
figure,imshow(g)
figure,imhist(g)
ylim('auto')
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)