RLS 알고리즘과 LMS를 기반으로 한 적응형 등화 시스템을 위한 MATLAB 프로그램을 찾고 있습니다``
일부 코드에 문제가 있으니 참고하셔서 직접 작성해 보시기 바랍니다.
%RLS 알고리즘 기반 적응형 선형 예측
clc;
모두 지우기;
N=300;
M=100;% 계산 수
w1=zeros(N,M);w2=zeros(N,M);I=eye(2);e1=zeros(N,M ) ;
k=1:M의 경우
%백색 잡음 생성
Pv=0.008;%백색 잡음 분산의 정의
a1 =-0.195;a2=0.95;o=0.02;r=0.95;
m=5000;%5000개의 난수 생성
v=randn(1,m);< / p>
v=v*sqrt(Pv);%는 평균이 0이고 분산이 Pv인 백색 잡음을 생성합니다.
%m=1:N;
v= v(1 :N);% 처음 1000개를 꺼냅니다.
%plot(m,v);title('평균이 0이고 분산이 0.0965인 백색 잡음');ylabel('v(n) ');xlabel ('n');
v=v';
%벡터 초기화
x=zeros(1,N); > x(1)=v(1);%x(0)=v(0)
x(2)=v(2)-a1*v(1) ;%x(1) =v(1)-a1*v(0)
w=zeros(2,N);
w(:,1)=[0 0]';%w (0)=[0 0]';
X=zeros(2,N);
X(:,2)=[v(1 ) 0]';% X(0)=[0 0]';X(1)=[v(0) 0]'
C=zeros(2,2*N); p>
C (:,1:2)=1/o.*I;%C(0)=1/o*I
e=zeros(1,N)';% 오류 벡터 정의
p>u=zeros(1,N);
g=zeros(2,N);
RLS 알고리즘에 따른 %재귀
n=1:N-2의 경우
x(n+2)=v(n+2)-a1*x(n+1)-a2*x(n) ;
X(:,n+2)=[x(n+1) x(n)]';
u(n)=X(:,n+1 )'*C( :,2*n-1:2*n)*X(:,n+1);
g(:,n)=(C(:,2*n- 1:2*n )*X(:,n+1))./(r+u(n));
w(:,n+1)=w(:,n)+ g(:,n )*(x(n+1)-X(:,n+1)'*w(:,n));
C(:,2*n+1: 2*(n+ 1))=1/r.*(C(:,2*n-1:2*n)-g(:,n)*X(:,n+1)'*C(: ,2*n- 1:2*n));
e(n)=x(n+1)-X(:,n+1)'*w(:,n);
w1(:,k)=w(1,:)'; w2(:,k)=w(2,:)';% 매번 계산된 가중치 벡터 값을 저장합니다.
e1(: ,k)=e(:,1);% 각 계산에서 얻은 오류를 저장합니다.
end
end
%가중치 M회 평균 벡터 합계 오류
wa1=zeros(N,1);wa2=zeros(N,1);en=zeros(N,1)
k=1:M에 대해
wa1(:,1)=wa1(:,1)+w1(:,k);
wa2(:,1) =wa2(:,1)+w2 (:,k);
en(:,1)=en(:,1)+e1(:,k);
끝
n =1:N;
subplot(221)
plot(n,w(1,n),n,w(2,n ));% 다음의 변화 곡선을 만듭니다. 가중치 벡터의 단일 계산
xlabel('n');ylabel('w(n)');title('w1(n) 및 w2(n) 단일 변화 곡선(선형 예측, RLS)')
subplot(222)
plot(n,wa1(n,1)./M,n,wa2(n, 1)./M);% 100번 계산된 가중치 벡터의 평균 변화 곡선을 만듭니다
xlabel('n');ylabel('w(n)');title('w1(n) 및 w2의 100개의 평균 변화 곡선 (n)')
subplot(223)
plot(n,e(n,1).^2);% 단일 계산 만들기 e^2의 변화 곡선
xlabel('n');ylabel('e^2');title('e^2의 변화 곡선에 대한 단일 계산');
subplot(224)
plot(n,(en(n,1)/M).^2);% e^2의 M 계산의 평균 변화 곡선을 만듭니다.
xlabel('n ');ylabel('e^2');title('100번 계산된 e^2의 평균 변화 곡선');