logo资料库

递推最小二乘法matlab实现.doc

第1页 / 共2页
第2页 / 共2页
资料共2页,全文预览结束
RLS 算法仿真程序源代码: clc; clear all; %BPSK调制 M=2; w_len=2; % 前馈抽头个数 Fd=10e6; % 信息速率 rolloff = 1; % 滚降系数 up = 4; % samples per symbol delay = 4; % 升余弦滤波器的群延迟 Fs=Fd*up; data_len = 100; data = randint(1,data_len,M); m_data = pskmod(data,M); [NUM1,DEN1]=rcosine(Fd,Fs,'fir/sqrt',rolloff,delay); [t_data,tc]=rcosflt(m_data,Fd,Fs,'filter',NUM1); t_data = t_data.'; % 成形滤波 gain=[1 1]; %%%%%%%%%%15ms delay channel %%%%%%%%%%%%%% t_delay=ceil(1.5*up); r_signal(1,:)= gain(1)*t_data + gain(2)*[zeros(1,t_delay),t_data(t_delay+1:length(t_data))]; %%%%%%%%%%25ms delay channel %%%%%%%%%%%%%% t_delay=ceil(2.5*up); r_signal(2,:)= gain(1)*t_data + gain(2)*[zeros(1,t_delay),t_data(t_delay+1:length(t_data))]; snr = 5; % 信噪比 r_signal(3,:) = gain(1)*t_data; r_signal(3,:) = awgn(r_signal(3,:), snr, 'measured'); for i=1:3 [r_data,tr]=rcosflt(r_signal(i,:),Fd,Fs,'filter/Fs',NUM1); %匹配 升余弦滤波器 equlz_in=r_data(delay*2*up+1:up:length(r_data)-delay*2*up); %抽取 得到均衡输入数据 %抽头系数初始化 第一个抽头系数为1,其余为0 a(w_len)=0; a(1)=1; a = zeros ( w_len , 1 ); Lambda = 0.99 ; % Set the forgetting factor Delta = 10 ; % R initialized to Delta*I R = Delta * eye (w_len, w_len) ; % 相关矩阵 for n=w_len:data_len
u = equlz_in(n:-1:n-w_len+1); pi = u' * R ; % 互相关矩阵 K= pi'/(Lambda + pi * u ); p(n)=a' * u; y(n)=pskdemod(p(n),M); rd(n)=pskmod(y(n),M); err(i,n)=rd(n)-p(n) ; R=(R-K*pi)/Lambda ; a = a + K * conj(err(i,n)) ; end end figure; subplot(3,1,1); plot(abs(err(1,:))); xlabel('15ms delay'); subplot(3,1,2); plot(abs(err(2,:))); xlabel('25ms delay'); subplot(3,1,3); plot(abs(err(3,:))); xlabel('white noise');
分享到:
收藏