Parks-McClellan 알고리즘으로 Nyquist 보간 필터를 설계하려면 어떻게해야합니까?


17

Parks-McClellan 알고리즘을 사용하여 특정 주파수 영역 제약 조건을 준수하는 보간 필터를 쉽게 설계 할 수 있습니다 . 그러나 시간 영역 제약 조건을 적용하는 방법은 즉시 명확하지 않습니다. 특히 나이키 스트 필터를 생성하고 싶습니다. 따라서의 인수로 오버 샘플링하는 N경우 0 이 kN아닌 정수에 대해 필터에서 0 교차를 갖기를 원합니다 k(보간 기의 입력 샘플이 출력 시퀀스에 표시되도록합니다).

해리스 1이 하프 밴드 필터를 설계하는 기술, 즉 특별한 경우에 대해 이야기하는 것을 보았습니다 N=2. 이에 대한 일반적인 해결책이 있습니까? (윈도우 방식으로 필터를 쉽게 디자인 할 수 있지만 동일한 제어 기능을 제공하지는 않습니다.)

[1] 통신 시스템 용 다중 속도 신호 처리 , 208-209 페이지



불행히도 F. Mintzer,“반대 역, 3 대역 및 N 대역 FIR 필터 및 그 설계”IEEE Trans. Acoust., 음성 및 신호 처리, vol. ASSP-30, 아니오 5, 734–738, 1982 년 10 월. T. Saramaki 및 Y. Neuvo,“기호 간 간섭이없는 FIR Nyquist (Nth-band) 필터 클래스”IEEE Trans. Circuits & Syst., vol. CAS-34, 번호 10, pp. 1182–1190, 1987 년 10 월.
Olli Niemitalo

X. Zhang, " Mth-band FIR 선형 위상 필터 설계 ", 2014 년 제 19 회 디지털 신호 처리 국제 회의 , 홍콩, 2014, pp. 7-11. doi : 10.1109 / ICDSP.2014.6900776
Olli Niemitalo 19

답변:


9

하나의 설계 방법은 2의 거듭 제곱으로 제한되지만 하나의 반대 역 필터로 시작하여 서로 0을 삽입 (스펙트럼 복제본 생성) 한 다음 더 넓은 전이 대역을 갖는 두 번째 반대 역 필터와 통합하는 것입니다. 필요한 제곱이 2가 될 때까지 과정을 반복하십시오.

다음은 4 개의 샘플마다 Fc = fs / 8 및 제로 크로싱으로 저역 통과 필터를 만드는 예입니다.

b0=remez(34,[0 .45 .55 1],[1 1 0 0])';
b1=remez(6,[0 .25 .75 1],[1 1 0 0])';
b0up = zeros(1,2*length(b0)-1);
b0up(1:2:end) = b0;
B0up=freqz(b0up);
b2 = conv(b0up,b1);  % length = 34*2+1 + 6 = 75 coefficients

예제 필터 비교


나는 똑같은 것을 제안하려고했습니다.
Phonon

5
멋진 그래프 +1. 나는 항상 오래 지루하고 나쁜 설명보다 길기 때문에 항상 멋진 그래프를 +1 할 것입니다.
Trevor Boyd Smith

5

원하는 제로 크로싱을 얻는 한 가지 방법은 하이브리드 디자인을 수행하는 것입니다.

통과 대역과 저지 대역에 동일한 가중치를 부여한 Parks-McLellan / Remez 반대 역 필터로 시작하십시오. 이 필터반대 역 필터 이므로 대체 샘플에서 0을 갖습니다. 그런 다음 주파수 도메인에서 스터핑을하여 sin (x) / x로 시간 도메인을 보간 할 수 있습니다.

예 : 6 개의 샘플마다 교차점이없는 fs / 12 저역 통과 필터 생성

% prototype Remez filter 
taps=18; 
b = remez(taps,[0 .4 .6 1],[1 1 0 0])';  
% force halfband condition of zeros at every other sample
b(2:2:end)=0;  b(taps/2+1)=.5; 

% zero pad the time domain to give the Gibbs ripple some deadspace
B=fft(b,4*(taps+1) ); 
% split the frequency domain into two halves, split the Nyquist bin
Blo = [ B(1:length(B)/2) 0.5*B(length(B)/2+1) ]; 
Bhi = [ 0.5*B(length(B)/2+1) B(length(B)/2+2:length(B))  ]; 

% insert padding at pi to increase size 3x
Bpad = [ Blo zeros(1,3*length(B)-length(Blo)-length(Bhi) ) Bhi];  
bint = real( ifft(Bpad) ); % this has zeros every 6 samples

결과 필터는 정지 대역 / 통과 대역 리플 측면에서 프로토 타입에 가깝지만 그다지 좋지는 않습니다. sin (x) / x 보간은 약간 낮은 레벨의 링잉을 유발합니다. 보간 된 필터에서 필요한 감쇠 레벨을 얻기 위해 프로토 타입 필터를 약간 과도하게 설계해야 할 수도 있습니다.


1
+1 : 재미있는 아이디어; 나는 이것에 대해 조금 생각할 필요가있다. 그래도 두 가지 질문이 있습니다. 첫째, 단순히 스케일링만으로 등 리플 설계 제약을 반대 역 필터로 변환 할 수 있다고 말하는 것이 안전합니까? 둘째, N의 홀수 값은 어떻습니까?
Oliver Charlesworth

홀수 FIR을 2로 줄이면 홀수 값을 처리 할 수 ​​있습니다. 예를 들어 7 개의 샘플마다 0을 원하면 14마다 0으로 전나무를 디자인 한 다음 0을 유지하도록 데시 메이션하십시오. 스펙트럼의 상반부는 별명으로 표시되지만 통합 사이드 로브는 실제로 무시할 수 있습니다.
Mark Borgerding
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.