노이즈 쉐이핑없는 기본 디더링
노이즈 쉐이핑이없는 기본 디더링 양자화는 다음과 같이 작동합니다.
그림 1. 기본 디더링 양자화 시스템 다이어그램 잡음은 최대 절대 값이 1 인 제로 평균 삼각 디더입니다. 반올림은 가장 가까운 정수입니다. 잔차 오차는 출력과 입력의 차이이며 분석을 위해서만 계산됩니다.
삼각 디더는 결과 잔차 오차의 분산을 3 배 ( 에서 )만큼 증가 시키지만 순 양자화 오차의 평균과 분산을 값에서 분리합니다 입력 신호의. 즉, 순 오류 신호는 입력과 관련이 없지만 더 높은 모멘트는 분리되지 않으므로 완전히 독립적 인 임의의 오류는 아니지만 아무도 순 오류 신호에 대한 더 높은 모멘트의 의존성을들을 수 있다고 판단한 사람은 아무도 없습니다. 오디오 응용 프로그램에서 입력 신호.11214
독립 가산 잔류 오차를 사용하면 시스템의 간단한 모델을 갖게됩니다.
그림 2. 기본 디더링 양자화의 근사치 잔류 오차는 백색 잡음입니다.
근사 모델에서 출력은 단순히 입력과 독립적 인 백색 잡음 잔류 오차입니다.
노이즈 쉐이핑으로 디더링
Mathematica를 잘 읽을 수 없으므로 시스템 대신 Lipshitz 등 의 시스템을 분석합니다 . " 최소 가청 잡음 형성 "J. Audio Eng. Soc., Vol.39, No.11, 1991 년 11 월 :
그림 3. Lipshitz et al. 1991 시스템 다이어그램 (그림 1에서 수정). 필터 (텍스트로 표시됨)에는 오류 피드백 필터로 사용할 수 있도록 1 개의 샘플 지연이 포함되어 있습니다. 노이즈는 삼각 디더입니다.
잔류 오차가 신호 A의 현재 및 과거 값과 독립적 인 경우 시스템이 더 간단합니다.
그림 4. Lipshitz 등의 대략적인 모델. 1991 년 시스템. 필터는도 3에서와 동일하며 하나의 샘플 지연을 포함한다. 더 이상 피드백 필터로 사용되지 않습니다. 잔류 오차는 백색 잡음입니다.
이 답변에서는 좀 더 쉽게 분석 된 근사 모델로 작업 할 것입니다 (그림 4). 원래 Lipshitz et al. 1991 시스템 인 Filter 에는 IIR 및 FIR (Finite Impulse Response) 필터를 모두 포함하는 일반 무한 임펄스 응답 (IIR) 필터 형식이 있습니다. 다음에서는 필터 가 FIR 필터 라고 가정합니다 . 시스템에 대한 계수에 대한 실험을 기반으로 믿습니다. 필터 의 전달 기능 은 다음과 같습니다.
HFilter(z)=−b1z−1−b2z−2−b3z−3−…
계수 는 1- 표본 지연을 나타냅니다. 근사 모델에는 잔차 오차에서 출력되는 직접 합산 경로도 있습니다. 이것은 Filter 의 부정 출력과 합쳐져 전체 노이즈 쉐이핑 필터 전달 함수를 형성합니다.z−1
H(z)=1−HFilter(z)=1+b1z−1+b2z−2+b3z−3+….
당신의에서 이동하려면 필터 당신이 순서대로 나열 계수, , 전체 잡음 정형 필터의 전달 함수에 대한 다항식 계수 , 계수의 부호 시스템 다이어그램에서 Filter 출력 의 부정을 설명하기 위해로 변경되고 계수 이 끝에 추가되고 ( 아래 Octave 스크립트에서) 마지막으로 목록이 (by ) 로 바뀝니다 .…,−b3,−b2,−b11,b1,b2,b3,…b0=1horzcat
flip
pkg load signal
b = [-0.16, 0.51, -0.74, 0.52, -0.04, -0.25, 0.22, -0.11, -0.02, 0.31, -0.56, 0.45, -0.13, 0.04, -0.14, 0.12, -0.06, 0.19, -0.22, -0.15, 0.4, 0.01, -0.41, -0.1, 0.84, -0.42, -0.81, 0.91, 0.75, -2.37, 2.29];
c = flip(horzcat(-b, 1));
freqz(c)
zplane(c)
이 스크립트는 크기 주파수 응답과 전체 노이즈 형성 필터의 제로 위치를 표시합니다.
그림 5. 전체 노이즈 형성 필터의 진폭 주파수 응답.
그림 6. 필터 의 극점 ( )과 영점 ( )의 Z 평면 플롯 . 모든 0은 단위 원 안에 있으므로 전체 노이즈 형성 필터는 최소 위상입니다.×∘
필터 계수를 찾는 문제는 리딩 계수가 1 인 최소 위상 필터를 설계하는 문제로 재구성 할 수 있다고 생각합니다. 이러한 필터의 주파수 응답에 고유 한 한계가있는 경우 이러한 한계는 동등한 한계로 넘어갑니다. 이러한 필터를 사용하는 노이즈 쉐이핑
전 극 설계에서 최소 위상 FIR로 변환
상이하지만 다른 방식으로 등가 필터를 설계하는 절차는 Stojanović et al. , "초 구형 다항식에 기반한 올폴 재귀 디지털 필터 설계", Radioengineering, vol 23, no 3, 2014 년 9 월. IIR 전 극 저역 통과 필터의 전달 함수에 대한 분모 계수를 계산합니다. 이들은 항상 1의 선행 분모 계수를 가지며 안정적인 IIR 필터의 요구 사항 인 단위 원 안에 모든 극이 있습니다. 이러한 계수가 최소 위상 FIR 노이즈 형성 필터의 계수로 사용되는 경우, 저역 IIR 필터 (반송 함수 분모 계수가 분자 계수가 됨)와 비교하여 역 고역 주파수 응답을 제공합니다. 표기법에서 해당 기사의 계수 세트 {-0.0076120, 0.0960380, -0.5454670, 1.8298040, -3.9884220, 5.8308660, -5.6495140, 3.3816780}
는 사양에 정확히 맞지 않지만 노이즈 형성 응용 프로그램에 대해 테스트 할 수 있습니다.
그림 7. Stojanović 등의 계수를 사용한 FIR 필터의 크기 주파수 응답. 2014.
그림 8. Stojanović 등의 계수를 사용한 FIR 필터의 극점 플롯. 2014.
전 극 전송 기능은 다음과 같습니다.
H(z)=11+a1z−1+a2z−2+a3z−3+…
그래서, 안정한 모든 극 IIR 저역 통과 필터를 설계하고 사용 로 계수 1의 선두 계수 최소 위상 고역 통과 FIR 필터를 얻을 계수.ab
전 극 필터를 설계하고이를 최소 위상 FIR 필터로 변환하기 위해 아날로그 프로토 타입 필터에서 시작하여 극선과 영점을 쌍 선형 변환을 사용하여 디지털 도메인에 매핑하는 IIR 필터 설계 방법을 사용할 수 없습니다 . 여기에는 cheby1
, cheby2
및 ellip
옥타브와 Python의 SciPy가 포함됩니다. 이러한 방법은 z 평면 원점에서 0을 제거하므로 필터는 필수 전극 유형이 아닙니다.
이론적 질문에 대한 답변
샘플링 주파수의 1/4 이상의 주파수에서 얼마나 많은 노이즈가 발생하는지 신경 쓰지 않는다면 Lipshitz et al. 1991은 귀하의 질문을 직접 해결합니다.
대역의 일부에 걸쳐 0이되는 가중 함수의 경우, 그림 1의 회로에서 얻을 수있는 가중 잡음 전력 감소에 대한 이론적 한계는 없다. 예를 들어, 귀는 20 kHz와 나이 퀴 스트 주파수 사이의 감도가 0이며이 사실을 반영하기 위해 가중치 기능을 선택합니다.
그들의 그림 1은 극점과 영점이 모두있는 일반적인 IIR 필터 구조의 노이즈 셰이퍼를 보여줍니다. 현재 FIR 구조와는 다르지만 FIR 필터 임펄스 응답은 주어진 안정적인 IIR 필터의 임펄스 응답에 임의로 근접합니다.
필터 설계를위한 옥타브 스크립트
다음은 Stojanovici et al.과 같은 다른 방법으로 계수 계산을위한 Octave 스크립트입니다. 내 매개 변수를 올바르게 선택하여 2014 메소드를 으로 매개 변수화했습니다.ν=0dip
pkg load signal
N = 14; #number of taps including leading tap with coefficient 1
att = 97.5; #dB attenuation of Dolph-Chebyshev window, must be positive
dip = 2; #spectrum lift-up multiplier, must be above 1
c = chebwin(N, att);
c = conv(c, c);
c /= sum(c);
c(N) += dip*10^(-att/10);
r = roots(c);
j = (abs(r(:)) <= 1);
r = r(j);
c = real(poly(r));
c .*= (-1).^(0:(N-1)); #if this complains, then root finding has probably failed
freqz(c)
zplane(c)
printf('%f, ', flip(-c(2:end))), printf('\n'); #tobalt's format
계수로 Dolph-Chebyshev 창으로 시작하여 전달 함수 0을 두 배로 늘리고 주파수 응답을 "상승"하는 숫자를 중간 탭에 추가합니다 (중간 탭은 0으로 간주 됨). 그것은 모든 곳에서 양수이고, 0을 찾고, 단위 원 밖에있는 0을 제거하고, 0을 다시 계수로 변환하고 (선행 계수 poly
는 항상 1 임) 필터를 고역으로 만들기 위해 모든 2 차 계수의 부호를 뒤집습니다. . 스크립트의 결과는 (구식이지만 거의 동일한 버전) 스크립트가 유망 해 보입니다.
그림 9. 위 스크립트에서 필터의 진폭 주파수 응답 (이전 버전이나 거의 동일한 버전).
그림 10. 위 스크립트에서 필터의 폴-제로 플롯 (오래되었지만 거의 동일한 버전).
표기법에서 위 스크립트의 계수 (이전 버전은 거의 동일한 버전) : {0.357662, -2.588396, 9.931419, -26.205448, 52.450624, -83.531276, 108.508775, -116.272581, 102.875781, -74.473956, 43.140431, -19.131434, 5.923468}
. 숫자가 커서 숫자 문제가 발생할 수 있습니다.
노이즈 쉐이핑의 옥타브 구현
마지막으로 옥타브에서 노이즈 셰이핑을 구현했으며 사용자와 같은 문제가 발생하지 않습니다. 의견에 대한 논의를 바탕으로 구현의 한계는 고주파 스펙트럼을 저주파로 흘린 "윈도 잉 없음" 이라는 직사각형 창을 사용하여 노이즈 스펙트럼을 평가 한 것 입니다.
pkg load signal
N = length(c);
M = 16384; #signal length
input = zeros(M, 1);#sin(0.01*(1:M))*127;
er = zeros(M, 1);
output = zeros(M, 1);
for i = 1:M
A = input(i) + er(i);
output(i) = round(A + rand() - rand());
for j = 2:N
if (i + j - 1 <= M)
er(i + j - 1) += (output(i) - A)*c(j);
endif
endfor
endfor
pwelch(output, max(nuttallwin(1024), 0), 'semilogy');
그림 11. 일정한 제로 입력 신호를위한 노이즈 쉐이핑의 상기 옥타브 구현으로부터의 양자화 노이즈 스펙트럼 분석. 가로축 : 정규화 된 주파수. 검은 색 : 노이즈 형성 없음 ( c = [1];
), 빨간색 : 원래 필터, 파란색 : "필터 디자인을위한 옥타브 스크립트"섹션의 필터.
그림 12. 일정한 제로 입력 신호에 대한 노이즈 쉐이핑의 상기 옥타브 구현으로부터의 시간 도메인 출력. 가로 축 : 샘플 번호, 세로 축 : 샘플 값. 빨간색 : 원래 필터, 파란색 : "필터 디자인을위한 옥타브 스크립트"섹션의 필터.
보다 극단적 인 노이즈 쉐이핑 필터 (파란색)는 제로 입력에도 매우 큰 양자화 된 출력 샘플 값을 제공합니다.