적응 안정 적 이 고 빠 른 RLS 알고리즘 --- (SFTRLS 알고리즘)
불안정 성 분석
이러한 불안정 문제 에 대해 일부 연구원 들 은 이 를 분석 한 결과 불안정 한 원인 은 바로 이 알고리즘 내부 에 긍정 적 인 피드백 체제 (전자 회로 중의 긍정 적 인 피드백 과 유사 할 수 있다) 가 존재 한 다 는 것 을 발견 했다.이러한 해석 을 바탕 으로 다음 과 같은 사상 이 생 겼 다. 즉, 수치 오차 의 구체 적 인 측정 치 를 얻 을 수 있다 면 피드백 을 통 해 마이너스 피드백 을 오차 전파 에서 주요 한 역할 을 할 수 있다 (이것 은 적당 한 피드백 네트워크 를 도입 하여 불안정 한 증폭 회 로 를 안정 시 키 는 것 과 같다).구체 적 인 방법 은 오차 가 큰 양 을 계산 한 다음 에 서로 다른 공식 을 통 해 이 양 을 계산 하 는 것 이다. 유한 정밀도 실현 에서 서로 다른 공식 으로 계산 한 결 과 는 차이 가 있 고 그들의 차 이 는 이 파 라 메 트릭 의 누적 오 차 를 잘 측정 할 수 있 기 때문이다.그리고 알고리즘 을 안정 시 키 기 위해 이 오 차 를 피드백 할 수 있다.그렇다면 현재 의 문 제 는 어떤 파 라 메 트릭 이 계산 중복 도 를 도입 해 야 오차 전 파 를 안정 시 킬 수 있 는 지 확인 하 는 것 이다.초기 에 제 시 된 해결 방법 중에서 하나의 파 라 메 트릭 에 대해 서 만 번 거 로 움 을 도입 하 는 것 을 선택 했다.나중에 사람들 은 적어도 두 개의 파 라 메 트릭 이 있어 야 FTRLS 알고리즘 의 안정성 을 확보 할 수 있다 는 것 을 발견 했다.또 다른 관련 문 제 는 알고리즘 에서 오 차 를 어디로 피드백 해 야 하 는가?자 연 스 러 운 선택 은 오 차 를 이와 관련 된 파 라 메 트릭 표현 식 에 피드백 하 는 것 이다.이 는 모든 도입 의 불필요 한 파 라 메 트릭 에 대해 최종 값 은 두 가지 형식의 조합 으로 계산 된다 는 뜻 이다.문헌 (D. T. M. Slock, T. Kailath, Numerically stable fast transversal filter for recursive least squares adaptive filter. IEEE Tran. Signal Process. 39, 92 - 113 (1991) 에서 FTRLS 알고리즘 을 안정 시 키 는 방법 을 제시 했다.그 통 과 는γ(k, N) 와 eb (k, N) 에서 불필요 한 모드 를 도입 하여 불안정 모드 를 수정 합 니 다.이 양 들 은 서로 다른 관계 식 을 이용 하여 계산 할 수 있 으 며, 구별 하기 위해 그 설명 에 추가 표 지 를 추가 했다.선험 후 오 차 는 서로 다른 형식 으로 설명 할 수 있 습 니 다. 예 를 들 어 그 중에서 FTRLS 알고리즘 은 첫 번 째 형식 을 사 용 했 고 두 번 째 형식 은 선험 후 오차 의 내 적 실현 에 대응 합 니 다.세 번 째 는 앞의 두 가지 형식의 선형 조합 으로 이 두 가지 형식 간 의 수치 차 이 를 피드백 하여 e 를 확정 하 는 것 이다.(b, i) (k, N, 3) 의 최종 값 은 안정 알고리즘 에서 서로 다른 위치 에 사 용 됩 니 다.모든 ki, i = 1, 2, 3. 서로 다른 값 을 선택 하여 관련 특징 치가 1 보다 적 음 을 확보한다.변환 인자γ(k, N) 알고리즘 의 불안정 성 을 나타 내 는 첫 번 째 매개 변수 일 수 있 습 니 다.이 매개 변 수 는 관계 식 으로 계산 하지 않 고 이러한 관 계 를 이용 하여 오차 전파 시스템 의 모든 모델 이 안정 적 이 라 고 요구 할 수 있다.첫 번 째 관계 식 은 그 중,ϕ_0 (k, N + 1) 은ϕ(k, N + 1) 의 첫 번 째 원소.인자 의 두 번 째 표현 식 을 세 번 째 표현 식 으로 계산 합 니 다.γ(k, N + 1, 1) 하 식 을 통 해 전체 알고리즘 에 작용 한다.변환 인자 와 불필요 한 선험 후 방향 오차 가 있 는 여러 표현 식 을 이용 하여 우 리 는 안정 적 이 고 빠 른 가로 RLS 알고리즘 (SFTRLS) 을 얻 을 수 있 습 니 다. 아래 에 완전한 알고리즘 설명 을 제 시 했 습 니 다. 제 가 지난 블 로그 에서 FTRLS 알고리즘 을 제 시 했 을 때 SFTRLS 알고리즘 곱 하기 등급 은 9N 이 고 FTRLS 는 7N 으로 계 산 량 이 증가 한 것 을 알 수 있 습 니 다.이것 은 가입 한 불필요 한 계산 으로 인 한 것 이다.
Matlab 시 뮬 레이 션
일단 m 코드 를 드릴 게 요.
%FTF
clc;
clear all;
close all;
%************************ **************************************
Fs = 10000; %
t = 0:1/Fs:3.5;
t = t';
Size_t = size(t,1);
F1 = 2;
F2 = 10;
F3 = 20;
F4 = 1000;
Signal = sin(2*pi*F1*t) + 0.5*sin(2*pi*F2*t) + 0.25*sin(2*pi*F3*t); %
noise_amp = 1; %
noise1 = noise_amp*randn(Size_t,1); %
noise2 = noise_amp*randn(Size_t,1);
noise3 = 5*sin(2*pi*F4*t);
noise = noise2;
Signal_noise = Signal + 0.2*noise; %
Signal_noise(2:end) = Signal_noise(2:end) + 0.15*noise(1:end-1);
Signal_noise(3:end) = Signal_noise(3:end) + 0.1*noise(1:end-2);
subplot(2,1,1);
plot(t,Signal);
title(' ');
subplot(2,1,2);
plot(t,Signal_noise);
title(' ');
%*************************************************************************
N = 3; % FIR
Signal_Len = Size_t; %
lambda = 1.0001; % 1-0.4/(N+1)
delta = 0.01;
y_out = zeros(Signal_Len,1);
Eta_out = zeros(Signal_Len,1);
w_out = zeros(Signal_Len,N);
for i = 1:Signal_Len
%
if i==1
w_f_last = zeros(N,1);
w_b_last = zeros(N,1);
w_last = zeros(N,1);
Phi_last = zeros(N,1);
gamma_last_3 = 1;
xi_f_last = delta;
xi_b_last = delta;
k1 = 1.5;
k2 = 2.5;
k3 = 1;
x_N_1 = zeros(N+1,1);
end
%
if i<= N
x_N_1(1:i) = noise(i:-1:1,1);
else
x_N_1 = noise(i:-1:(i-N),1);
end
d = Signal_noise(i);
%
e_f = x_N_1' * [1;-w_f_last]; %(1)(1)
epsilon_f = e_f * gamma_last_3; %(2)(2)
Phi_N_1 = [0;Phi_last] + e_f/(lambda * xi_f_last)*[1;-w_f_last]; %(3)(5)
Phi_N_1_0 = Phi_N_1(1);
Phi_N_1_N_1 = Phi_N_1(end);
gamma_N_1_1 = 1/(1/gamma_last_3 + Phi_N_1_0 * e_f); %(4)
xi_f = 1/(1/(lambda * xi_f_last) - gamma_N_1_1 * Phi_N_1_0 * Phi_N_1_0); %(5)
w_f = w_f_last + Phi_last * epsilon_f; %(6)(4)
e_b_1 = lambda * xi_b_last * Phi_N_1_N_1; %(7)(7)
e_b_2 = [-w_b_last',1] * x_N_1; %(8) e_b_3_1 = e_b_2 * k1 + e_b_1 * (1-k1); %(9) e_b_3_2 = e_b_2 * k2 + e_b_1 * (1-k2); e_b_3_3 = e_b_2 * k3 + e_b_1 * (1-k3); gamma_2 = 1/(1/gamma_N_1_1 - Phi_N_1_N_1 * e_b_3_3); %(10) epsilon_b_3_1 = e_b_3_1 * gamma_2; %(11) epsilon_b_3_2 = e_b_3_2 * gamma_2; xi_b = lambda * xi_b_last + epsilon_b_3_2 * e_b_3_2; %(12)(10) Phi = Phi_N_1 - Phi_N_1_N_1 * [-w_b_last;1]; %(13)(11) Phi = Phi(1:end-1); w_b = w_b_last + Phi * epsilon_b_3_1; %(14)(12) x = x_N_1(1:N); gamma_3 = 1/(1 + Phi' * x); %(15) % y = w_last'* x; e = d - y; %(16)(13) epsilon = e * gamma_3; %(17)(14) w = w_last + Phi * epsilon; %(18)(15) % xi_f_last = xi_f; w_f_last = w_f; gamma_last_3 = gamma_3; xi_b_last = xi_b; Phi_last = Phi; w_b_last = w_b; w_last = w; % y_out(i) = y; Eta_out(i) = e; w_out(i,:) = w'; end figure; subplot(2,1,1); plot(y_out); title(' '); subplot(2,1,2); plot(Eta_out); title(' '); figure; plot(t,w_out(:,1),'r',t,w_out(:,2),'b',t,w_out(:,3),'y'); title(' ');
실행 해 보면 다음 과 같은 결 과 를 얻 을 수 있 습 니 다. 실행 한 결 과 를 보면 FTRLS 와 차이 가 많 지 않 습 니 다. 여기 서 특별히 알려 드 려 야 할 것 은 초기 화 할 때 특히 조심해 야 한 다 는 것 입 니 다. 저 는 처음에 이 알고리즘 을 두 드 린 후에 실 행 했 습 니 다. 결 과 는 항상 발산 되 었 습 니 다. 저 는 어떤 공식 인지 알 기 시 작 했 습 니 다. 한참 동안 검 사 했 지만 문제 가 발견 되 지 않 았 습 니 다.나중에 제 가 밥 을 먹 을 때 갑자기 영광 이 반 짝 거 렸 습 니 다. 저 는 입력 한 데이터 벡터 x (k, N + 1) 가 잘못 되 었 다 는 것 을 알 게 되 었 습 니 다. 원래 FTRLS 에서 이렇게 잘못된 초기 화 는 문제 가 없 었 습 니 다. 그러나 SFTRLS 에서 이렇게 하면 안 됩 니 다. 그 이 유 는 불필요 한 계산 을 증가 하고 오차 로 정 피드백 을 억제 하기 때 문 입 니 다.결국 나 는 처음부터 인위적인 추가 오 차 를 도입 하여 빠르게 Matlab 부동 소수점 연산 을 넘 쳐 서 어떻게 조절 해도 조절 할 수 없 었 다.나중에 내 가 고치 면 돼, 바로 너희들 이 지금 보고 있 는 절차 야.
지난 블 로그 의 마지막 부분 에서 저 는 TMS320F 2812 로 음향학 메아리 제거 의 확 성 시스템 을 만 들 려 고 한다 고 말씀 드 렸 습 니 다. 이번 추석 을 틈 타 연 구 를 해 보 니 제 보드 의 DAC 업데이트 속도 가 너무 느 려 서 100 KHz 밖 에 안 되 는 것 을 발 견 했 습 니 다. ADC 는 1MHz 에 이 를 수 있 지만 40KHz (음성 신호 의 유효 주파수 대역 400 Hz ~ 4kHz) 를 주파수 조절 로 한다 면...각 조절 주기 (25us) 의 절반 정도 의 시간 은 데 이 터 를 수집 하고 출력 하 는 것 이 고 절반 의 시간 은 계산 하 는 것 이다. 2812 는 정점 의 DSP 는 부동 소수점 연산 단위 가 없고 주파 수 는 150 MHz 이다. 이런 상황 에서 필요 한 FIR 필터 단 계 는 적어도 몇 백 단계 이다. 즉, 가장 간단 한 LMS 알고리즘 을 사용 할 때 매번 몇 백 번 의 부동 소수점 연산 을 해 야 한 다 는 것 이다.이 시간 은 12.5us 를 넘 어서 2812 로 는 통 하지 않 는 다.그러나 이 음향학 메아리 가 확 성 시스템 을 없 애 려 면 해 야 합 니 다. 제 손 에는 지금 TMS 320C 6678 이 있 습 니 다. 이것 은 8 핵 부동 소수점 DSP 입 니 다. 이것 은 비 벼 서 비 벼 도 남 았 습 니 다. 하지만 저 는 판 에 고속 ADC 와 DAC 를 그 려 야 합 니 다. 마침 제 가 C 언어 로 쓴 LMS 알고리즘, FTRLS 알고리즘, SFTRLS 알고리즘 은 모두 그 위 에서 검 증 된 것 입 니 다. 하드웨어 에 게 으 름 을 피 우려 고 했 습 니 다.2812 로 일 을 좀 덜 하 세 요. 이 게 으 름 은 훔 칠 수 없 을 것 같 습 니 다. 천천히 하 세 요. 행운 을 빌 어 주세요.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【Codility Lesson3】FrogJmpA small frog wants to get to the other side of the road. The frog is currently located at position X and wants to get to...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.